mirror of
https://github.com/opnsense/src.git
synced 2026-02-16 00:58:21 -05:00
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
|
||
|---|---|---|
| .. | ||
| ttm_agp_backend.c | ||
| ttm_bo.c | ||
| ttm_bo_api.h | ||
| ttm_bo_driver.h | ||
| ttm_bo_manager.c | ||
| ttm_bo_util.c | ||
| ttm_bo_vm.c | ||
| ttm_execbuf_util.c | ||
| ttm_execbuf_util.h | ||
| ttm_lock.c | ||
| ttm_lock.h | ||
| ttm_memory.c | ||
| ttm_memory.h | ||
| ttm_module.h | ||
| ttm_object.c | ||
| ttm_object.h | ||
| ttm_page_alloc.c | ||
| ttm_page_alloc.h | ||
| ttm_page_alloc_dma.c | ||
| ttm_placement.h | ||
| ttm_tt.c | ||