cvs commit: src/sys/amd64/amd64 pmap.c src/sys/i386/i386 pmap.c

Alan Cox alc at
Tue Jun 20 20:52:12 UTC 2006

alc         2006-06-20 20:52:11 UTC

  FreeBSD src repository

  Modified files:
    sys/amd64/amd64      pmap.c 
    sys/i386/i386        pmap.c 
  Change get_pv_entry() such that the call to vm_page_alloc() specifies
  VM_ALLOC_NORMAL instead of VM_ALLOC_SYSTEM when try is TRUE.  In other
  words, when get_pv_entry() is permitted to fail, it no longer tries as
  hard to allocate a page.
  Change pmap_enter_quick_locked() to fail rather than wait if it is
  unable to allocate a page table page.  This prevents a race between
  pmap_enter_object() and the page daemon.  Specifically, an inactive
  page that is a successor to the page that was given to
  pmap_enter_quick_locked() might become a cache page while
  pmap_enter_quick_locked() waits and later pmap_enter_object() maps
  the cache page violating the invariant that cache pages are never
  mapped.  Similarly, change
  pmap_enter_quick_locked() to call pmap_try_insert_pv_entry() rather
  than pmap_insert_entry().  Generally speaking,
  pmap_enter_quick_locked() is used to create speculative mappings.  So,
  it should not try hard to allocate memory if free memory is scarce.
  Add an assertion that the object containing m_start is locked in
  pmap_enter_object().  Remove a similar assertion from
  pmap_enter_quick_locked() because that function no longer accesses the
  containing object.
  Remove a stale comment.
  Reviewed by: ups@
  Revision  Changes    Path
  1.558     +15 -21    src/sys/amd64/amd64/pmap.c
  1.562     +15 -21    src/sys/i386/i386/pmap.c

More information about the cvs-src mailing list