c869e67208
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_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_helper.c | ||
drm_crtc_helper.h | ||
drm_crtc.c | ||
drm_crtc.h | ||
drm_dma.c | ||
drm_dp_helper.c | ||
drm_dp_helper.h | ||
drm_dp_iic_helper.c | ||
drm_drv.c | ||
drm_edid_modes.h | ||
drm_edid.c | ||
drm_edid.h | ||
drm_fb_helper.c | ||
drm_fb_helper.h | ||
drm_fixed.h | ||
drm_fops.c | ||
drm_fourcc.h | ||
drm_gem_names.c | ||
drm_gem_names.h | ||
drm_gem.c | ||
drm_global.c | ||
drm_global.h | ||
drm_hashtab.c | ||
drm_hashtab.h | ||
drm_ioc32.c | ||
drm_ioctl.c | ||
drm_irq.c | ||
drm_linux_list_sort.c | ||
drm_linux_list.h | ||
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 | ||
drm.h | ||
drmP.h |