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
..
2015-01-23 15:14:30 +00:00
2015-01-30 01:13:07 +00:00
2015-02-24 01:00:46 +00:00
2015-03-08 19:55:46 +00:00
2015-12-05 10:10:18 +00:00
2015-01-23 15:14:30 +00:00
2015-06-30 17:00:45 +00:00
2015-06-30 17:00:45 +00:00
2014-08-05 23:35:19 +00:00
2015-08-30 08:48:31 +00:00
2015-12-15 04:51:50 +00:00
2015-10-22 01:36:16 +00:00
2015-11-05 22:44:36 +00:00
2014-09-28 07:40:26 +00:00
2015-11-12 09:45:35 +00:00
2015-04-29 20:08:03 +00:00
2014-10-10 14:17:42 +00:00
2015-10-25 22:20:13 +00:00
2014-10-11 19:36:59 +00:00
2015-03-23 19:47:52 +00:00
2015-04-22 14:38:58 +00:00
2015-12-11 15:24:29 +00:00
2015-12-11 15:24:29 +00:00
2015-12-18 05:29:22 +00:00
2015-08-28 02:29:31 +00:00
2015-07-28 04:54:05 +00:00
2014-11-18 21:58:57 +00:00
2015-09-07 21:59:11 +00:00
2015-06-30 17:00:45 +00:00
2015-06-30 17:00:45 +00:00
2014-09-19 03:55:19 +00:00
2015-12-11 07:20:33 +00:00
2015-03-23 19:47:52 +00:00
2015-12-11 15:24:29 +00:00
2015-10-08 17:32:17 +00:00
2015-06-30 17:00:45 +00:00
2014-11-21 21:34:19 +00:00
2015-06-30 17:00:45 +00:00
2014-11-20 20:09:18 +00:00