]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/commit
MFC 250219:
authorjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 31 May 2013 14:36:09 +0000 (14:36 +0000)
committerjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 31 May 2013 14:36:09 +0000 (14:36 +0000)
commitdc57e92c9425e7b96e3a24403779c2719484cefe
tree9f6a6ab1d30e7b8789fd915c8e37a2ceefd3e9c8
parent6c28efcb99aa01ce52e7fed0913bcc14c4b125aa
MFC 250219:
Fix two bugs in the current NUMA-aware allocation code:
- vm_phys_alloc_freelist_pages() can be called by vm_page_alloc_freelist()
  to allocate a page from a specific freelist.  In the NUMA case it did not
  properly map the public VM_FREELIST_* constants to the correct backing
  freelists, nor did it try all NUMA domains for allocations from
  VM_FREELIST_DEFAULT.
- vm_phys_alloc_pages() did not pin the thread and each call to
  vm_phys_alloc_freelist_pages() fetched the current domain to choose
  which freelist to use.  If a thread migrated domains during the loop
  in vm_phys_alloc_pages() it could skip one of the freelists.  If the
  other freelists were out of memory then it is possible that
  vm_phys_alloc_pages() would fail to allocate a page even though pages
  were available resulting in a panic in vm_page_alloc().

git-svn-id: svn://svn.freebsd.org/base/stable/9@251179 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/vm/vm_phys.c