freebsd-skq/sys/dev/drm2
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
..
i915 t seems certain Intel GPUs use GPIO bitbanging over a child device 2015-12-17 20:33:20 +00:00
radeon radeon_suspend_kms: don't mess with pci state that's managed by the bus 2015-09-11 15:51:20 +00:00
ttm Introduce a new mechanism for relocating virtual pages to a new physical 2015-12-19 18:42:50 +00:00
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 drm2: a few minor fixes after r280183 2015-10-04 07:45:36 +00:00
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 drm2: a few minor fixes after r280183 2015-10-04 07:45:36 +00:00
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 Hide an unused in FreeBSD function behind #ifdef linux to get rid of 2015-09-22 15:32:27 +00:00
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 drm2: a few minor fixes after r280183 2015-10-04 07:45:36 +00:00
drm_pciids.h
drm_sarea.h
drm_scatter.c
drm_stub.c drm2: a few minor fixes after r280183 2015-10-04 07:45:36 +00:00
drm_sysctl.c
drm_vm.c
drm.h
drmP.h drm2: a few minor fixes after r280183 2015-10-04 07:45:36 +00:00