Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Feb 2008 18:03:57 +0000 (UTC)
From:      Alan Cox <alc@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/vm vm_object.c
Message-ID:  <200802241803.m1OI3vFk068769@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
alc         2008-02-24 18:03:57 UTC

  FreeBSD src repository

  Modified files:
    sys/vm               vm_object.c 
  Log:
  Correct a long-standing error in vm_object_deallocate().  Specifically,
  only anonymous default (OBJT_DEFAULT) and swap (OBJT_SWAP) objects should
  ever have OBJ_ONEMAPPING set.  However, vm_object_deallocate() was
  setting it on device (OBJT_DEVICE) objects.  As a result,
  vm_object_page_remove() could be called on a device object and if that
  occurred pmap_remove_all() would be called on the device object's pages.
  However, a device object's pages are fictitious, and fictitious pages do
  not have an initialized pv list (struct md_page).
  
  To date, fictitious pages have been allocated from zeroed memory,
  effectively hiding this problem.  Now, however, the conversion of rotting
  diagnostics to invariants in the amd64 and i386 pmaps has revealed the
  problem.  Specifically, assertion failures have occurred during the
  initialization phase of the X server on some hardware.
  
  MFC after: 1 week
  Discussed with: Kostik Belousov
  Reported by: Michiel Boland
  
  Revision  Changes    Path
  1.391     +4 -1      src/sys/vm/vm_object.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802241803.m1OI3vFk068769>