freebsd-nq/sys/dev/drm2/ttm
Alan Cox c869e67208 Introduce a new mechanism for relocating virtual pages to a new physical
address and use this mechanism when:

1. kmem_alloc_{attr,contig}() can't find suitable free pages in the physical
   memory allocator's free page lists.  This replaces the long-standing
   approach of scanning the inactive and inactive queues, converting clean
   pages into PG_CACHED pages and laundering dirty pages.  In contrast, the
   new mechanism does not use PG_CACHED pages nor does it trigger a large
   number of I/O operations.

2. on 32-bit MIPS processors, uma_small_alloc() and the pmap can't find
   free pages in the physical memory allocator's free page lists that are
   covered by the direct map.  Tested by: adrian

3. ttm_bo_global_init() and ttm_vm_page_alloc_dma32() can't find suitable
   free pages in the physical memory allocator's free page lists.

In the coming months, I expect that this new mechanism will be applied in
other places.  For example, balloon drivers should use relocation to
minimize fragmentation of the guest physical address space.

Make vm_phys_alloc_contig() a little smarter (and more efficient in some
cases).  Specifically, use vm_phys_segs[] earlier to avoid scanning free
page lists that can't possibly contain suitable pages.

Reviewed by:	kib, markj
Glanced at:	jhb
Discussed with:	jeff
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D4444
2015-12-19 18:42:50 +00:00
..
ttm_agp_backend.c
ttm_bo_api.h
ttm_bo_driver.h
ttm_bo_manager.c
ttm_bo_util.c drm: Update the device-independent code to match Linux 3.8.13 2015-03-17 18:50:33 +00:00
ttm_bo_vm.c drm: Update the device-independent code to match Linux 3.8.13 2015-03-17 18:50:33 +00:00
ttm_bo.c Introduce a new mechanism for relocating virtual pages to a new physical 2015-12-19 18:42:50 +00:00
ttm_execbuf_util.c
ttm_execbuf_util.h
ttm_lock.c drm: Update the device-independent code to match Linux 3.8.13 2015-03-17 18:50:33 +00:00
ttm_lock.h
ttm_memory.c
ttm_memory.h
ttm_module.h
ttm_object.c
ttm_object.h
ttm_page_alloc_dma.c
ttm_page_alloc.c Introduce a new mechanism for relocating virtual pages to a new physical 2015-12-19 18:42:50 +00:00
ttm_page_alloc.h
ttm_placement.h
ttm_tt.c A change to KPI of vm_pager_get_pages() and underlying VOP_GETPAGES(). 2015-12-16 21:30:45 +00:00