mirror of
https://github.com/opnsense/src.git
synced 2026-02-22 09:21:31 -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
|
||
|---|---|---|
| .. | ||
| i915 | ||
| radeon | ||
| ttm | ||
| ati_pcigart.c | ||
| drm.h | ||
| drm_agpsupport.c | ||
| drm_atomic.h | ||
| drm_auth.c | ||
| drm_buffer.c | ||
| drm_buffer.h | ||
| drm_bufs.c | ||
| drm_context.c | ||
| drm_core.h | ||
| drm_crtc.c | ||
| drm_crtc.h | ||
| drm_crtc_helper.c | ||
| drm_crtc_helper.h | ||
| drm_dma.c | ||
| drm_dp_helper.c | ||
| drm_dp_helper.h | ||
| drm_dp_iic_helper.c | ||
| drm_drv.c | ||
| drm_edid.c | ||
| drm_edid.h | ||
| drm_edid_modes.h | ||
| drm_fb_helper.c | ||
| drm_fb_helper.h | ||
| drm_fixed.h | ||
| drm_fops.c | ||
| drm_fourcc.h | ||
| drm_gem.c | ||
| drm_gem_names.c | ||
| drm_gem_names.h | ||
| drm_global.c | ||
| drm_global.h | ||
| drm_hashtab.c | ||
| drm_hashtab.h | ||
| drm_ioc32.c | ||
| drm_ioctl.c | ||
| drm_irq.c | ||
| drm_linux_list.h | ||
| drm_linux_list_sort.c | ||
| drm_lock.c | ||
| drm_memory.c | ||
| drm_mm.c | ||
| drm_mm.h | ||
| drm_mode.h | ||
| drm_modes.c | ||
| drm_os_freebsd.c | ||
| drm_os_freebsd.h | ||
| drm_pci.c | ||
| drm_pciids.h | ||
| drm_sarea.h | ||
| drm_scatter.c | ||
| drm_stub.c | ||
| drm_sysctl.c | ||
| drm_vm.c | ||
| drmP.h | ||