linux-stable/drivers/gpu/drm/i915
Chris Wilson 4e64e5539d drm: Improve drm_mm search (and fix topdown allocation) with rbtrees
The drm_mm range manager claimed to support top-down insertion, but it
was neither searching for the top-most hole that could fit the
allocation request nor fitting the request to the hole correctly.

In order to search the range efficiently, we create a secondary index
for the holes using either their size or their address. This index
allows us to find the smallest hole or the hole at the bottom or top of
the range efficiently, whilst keeping the hole stack to rapidly service
evictions.

v2: Search for holes both high and low. Rename flags to mode.
v3: Discover rb_entry_safe() and use it!
v4: Kerneldoc for enum drm_mm_insert_mode.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: David Airlie <airlied@linux.ie>
Cc: Russell King <rmk+kernel@armlinux.org.uk>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Sean Paul <seanpaul@chromium.org>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Sinclair Yeh <syeh@vmware.com>
Cc: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Sinclair Yeh <syeh@vmware.com> # vmwgfx
Reviewed-by: Lucas Stach <l.stach@pengutronix.de> #etnaviv
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170202210438.28702-1-chris@chris-wilson.co.uk
2017-02-03 11:10:32 +01:00
..
gvt Merge tag 'drm-intel-next-2017-01-23' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-01-27 12:08:32 +10:00
dvo.h
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915: Consolidate checks for memcpy-from-wc support 2017-01-06 16:02:07 +00:00
i915_debugfs.c drm/i915/huc: Add debugfs for HuC loading status check 2017-01-19 11:19:04 +02:00
i915_drv.c drm/i915/get_params: Add HuC status to getparams 2017-01-19 11:19:10 +02:00
i915_drv.h Merge tag 'drm-misc-next-2017-01-23' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-01-27 12:10:24 +10:00
i915_gem.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
i915_gem.h drm/i915: introduce GEM_WARN_ON 2016-12-16 21:16:36 +00:00
i915_gem_batch_pool.c drm/i915: Move GEM activity tracking into a common struct reservation_object 2016-10-28 20:53:50 +01:00
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Remove i915_vma_create from VMA API 2017-01-19 10:17:39 +00:00
i915_gem_context.h drm/i915: Simplify testing for am-I-the-kernel-context? 2017-01-06 16:02:12 +00:00
i915_gem_dmabuf.c drm/i915: Make GEM object alloc/free and stolen created take dev_priv 2016-12-01 18:00:15 +00:00
i915_gem_evict.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
i915_gem_execbuffer.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
i915_gem_fence_reg.c drm/i915: Replace 4096 with PAGE_SIZE or I915_GTT_PAGE_SIZE 2017-01-10 20:54:32 +00:00
i915_gem_fence_reg.h drm/i915: Replace 4096 with PAGE_SIZE or I915_GTT_PAGE_SIZE 2017-01-10 20:54:32 +00:00
i915_gem_gtt.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
i915_gem_gtt.h drm/i915: Eliminate superfluous i915_ggtt_view_normal 2017-01-14 16:18:36 +00:00
i915_gem_internal.c drm/i915: Assert internal objects are page aligned 2017-01-17 09:09:56 +00:00
i915_gem_object.h drm/i915: Split out i915_gem_object_set_tiling() 2017-01-10 15:29:14 +00:00
i915_gem_render_state.c drm/i915: Remove i915_vma_create from VMA API 2017-01-19 10:17:39 +00:00
i915_gem_render_state.h drm/i915: Reuse the active golden render state batch 2016-10-28 20:53:44 +01:00
i915_gem_request.c drm/i915: Construct a request even if the GPU is currently hung 2017-01-16 12:21:20 +00:00
i915_gem_request.h drm/i915: Fix oopses in the overlay code due to i915_gem_active stuff 2017-01-03 11:41:17 +02:00
i915_gem_shrinker.c Main pull request for drm for 4.10 kernel 2016-12-13 09:35:09 -08:00
i915_gem_stolen.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
i915_gem_tiling.c drm/i915: Replace 4096 with PAGE_SIZE or I915_GTT_PAGE_SIZE 2017-01-10 20:54:32 +00:00
i915_gem_timeline.c drm/i915: Assert all timeline requests are gone before fini 2017-01-05 15:34:40 +00:00
i915_gem_timeline.h drm/i915: Rename i915_gem_timeline.next_seqno to .seqno 2016-11-25 07:01:11 +00:00
i915_gem_userptr.c Linux 4.10-rc2 2017-01-04 11:35:18 +01:00
i915_gpu_error.c drm/i915: Use __printf markup to silence compiler 2017-01-16 12:20:17 +00:00
i915_guc_reg.h drm/i915/huc: Add HuC fw loading support 2017-01-19 11:18:55 +02:00
i915_guc_submission.c drm/i915: Remove i915_vma_create from VMA API 2017-01-19 10:17:39 +00:00
i915_ioc32.c
i915_irq.c drm/i915: Set adjustment to zero on Up/Down interrupts if freq is already max/min 2017-01-20 09:32:47 +00:00
i915_memcpy.c
i915_mm.c
i915_oa_hsw.c drm/i915: Add more Haswell OA metric sets 2016-11-22 14:40:00 +01:00
i915_oa_hsw.h drm/i915: advertise available metrics via sysfs 2016-11-22 14:38:51 +01:00
i915_params.c drm/i915: Use the precomputed value for whether to enable command parsing 2016-11-24 13:52:34 +00:00
i915_params.h drm/i915: Use the precomputed value for whether to enable command parsing 2016-11-24 13:52:34 +00:00
i915_pci.c drm/i915: actually drive the BDW reserved IDs 2017-01-04 14:40:46 -02:00
i915_perf.c drm/i915: Simplify releasing context reference 2016-12-18 16:18:53 +00:00
i915_pvinfo.h
i915_reg.h drm/i915/psr: report live PSR2 State 2017-01-13 10:47:30 -08:00
i915_suspend.c drm/i915: Make i915_save/restore_state and intel_i2c_reset take dev_priv 2016-12-01 18:01:23 +00:00
i915_sw_fence.c drm/i915: Flush the change in debugobject before reallocation 2017-01-16 12:21:19 +00:00
i915_sw_fence.h drm/i915: Hold a reference on the request for its fence chain 2016-12-05 11:00:32 +02:00
i915_sysfs.c drm/i915/glk: Convert a few more IS_BROXTON() to IS_GEN9_LP() 2017-01-10 11:03:57 +02:00
i915_trace.h drm/i915: Extract reserving space in the GTT to a helper 2017-01-11 12:28:13 +00:00
i915_trace_points.c
i915_utils.h drm/i915: Move a few more utility macros to i915_utils.h 2017-01-05 21:02:04 +00:00
i915_vgpu.c drm/i915: Fix a typo in vgt_balloon_space() 2017-01-17 15:08:58 +00:00
i915_vgpu.h
i915_vma.c drm/i915: Pevent copying uninitialised garbage into vma->ggtt_view 2017-01-26 11:10:33 +01:00
i915_vma.h drm/i915: Remove i915_gem_object_to_ggtt() 2017-01-19 10:18:21 +00:00
intel_acpi.c
intel_atomic.c drm/i915: Move intel_atomic_get_shared_dpll_state() to intel_dpll_mgr.c 2017-01-02 11:31:53 +02:00
intel_atomic_plane.c drm/i915: Track pinned vma in intel_plane_state 2017-01-19 10:14:09 +00:00
intel_audio.c drm/i915: Check num_pipes before initializing audio component 2016-12-22 12:29:17 +02:00
intel_bios.c drm/i915: Use range_overflows() 2017-01-06 16:02:11 +00:00
intel_bios.h drm/i915/dsi: Fix swapping of MIPI_SEQ_DEASSERT_RESET / MIPI_SEQ_ASSERT_RESET 2016-12-20 16:28:25 +02:00
intel_breadcrumbs.c drm/i915/breadcrumbs: s/container_of/rb_entry/ 2016-12-20 12:30:25 +00:00
intel_color.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_crt.c drm/i915: Pass dev_priv to intel_setup_outputs() 2016-11-25 16:43:24 +02:00
intel_csr.c drm/i915/DMC/GLK: Load DMC on GLK 2017-01-10 11:03:56 +02:00
intel_ddi.c drm/i915: Rename intel_shared_dpll_config to intel_shared_dpll_state 2016-12-30 09:26:10 +02:00
intel_device_info.c drm/i915/glk: Convert a few more IS_BROXTON() to IS_GEN9_LP() 2017-01-10 11:03:57 +02:00
intel_display.c Merge tag 'drm-misc-next-2017-01-30' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-02-01 08:31:09 +10:00
intel_dp.c Merge tag 'drm-misc-next-2017-01-30' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-02-01 08:31:09 +10:00
intel_dp_aux_backlight.c
intel_dp_link_training.c
intel_dp_mst.c drm/dp: Store drm_device in MST topology manager 2017-01-25 06:01:48 +01:00
intel_dpio_phy.c drm/i915: Only poll DW3_A when init DDI PHY for ports B and C. 2016-12-02 12:16:25 -08:00
intel_dpll_mgr.c drm/i915: Move intel_atomic_get_shared_dpll_state() to intel_dpll_mgr.c 2017-01-02 11:31:53 +02:00
intel_dpll_mgr.h drm/i915: Add dpll entrypoint for dumping hw state 2016-12-30 09:32:34 +02:00
intel_drv.h drm/i915: Track pinned vma in intel_plane_state 2017-01-19 10:14:09 +00:00
intel_dsi.c Linux 4.10-rc2 2017-01-04 11:35:18 +01:00
intel_dsi.h
intel_dsi_dcs_backlight.c
intel_dsi_panel_vbt.c drm/i915/dsi: Fix chv_exec_gpio disabling the GPIOs it is setting 2016-12-20 16:28:38 +02:00
intel_dsi_pll.c drm/i915: relax uncritical udelay_range() 2016-12-16 11:22:01 +02:00
intel_dvo.c drm/i915: Pass dev_priv to intel_setup_outputs() 2016-11-25 16:43:24 +02:00
intel_engine_cs.c drm/i915: Remove i915_vma_create from VMA API 2017-01-19 10:17:39 +00:00
intel_fbc.c drm/i915: Track pinned vma in intel_plane_state 2017-01-19 10:14:09 +00:00
intel_fbdev.c drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
intel_fifo_underrun.c drm/i915: Always use intel_get_crtc_for_pipe() 2016-11-01 16:40:38 +02:00
intel_frontbuffer.c
intel_frontbuffer.h drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +00:00
intel_guc_fwif.h drm/i915/huc: Support HuC authentication 2017-01-19 11:19:07 +02:00
intel_guc_loader.c drm/i915/huc: Support HuC authentication 2017-01-19 11:19:07 +02:00
intel_guc_log.c drm/i915/guc: Move GuC log related functions into dedicated file 2017-01-18 07:29:04 +00:00
intel_gvt.c
intel_gvt.h
intel_hangcheck.c drm/i915: Disable hangcheck when wedged 2016-11-22 17:42:17 +00:00
intel_hdmi.c drm/edid: Set AVI infoframe Q even when QS=0 2017-01-26 18:37:13 +02:00
intel_hotplug.c Reinstate "drm/probe-helpers: Drop locking from poll_enable"" 2017-01-27 12:04:08 +10:00
intel_huc.c drm/i915/huc: Assert that HuC vma is placed in GuC accessible range 2017-01-20 19:59:57 +00:00
intel_i2c.c drm/i915: add some more "i" in platform names for consistency 2016-12-07 15:19:31 +02:00
intel_lrc.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next 2017-01-27 11:00:42 +10:00
intel_lrc.h drm/i915: Replace 4096 with PAGE_SIZE or I915_GTT_PAGE_SIZE 2017-01-10 20:54:32 +00:00
intel_lspcon.c drm/i915/lspcon: Remove unused force change mode parameter 2016-11-23 13:32:01 +02:00
intel_lvds.c drm/i915: Intel panel detection cleanup 2016-12-13 17:25:26 +02:00
intel_mocs.c drm/i915/glk: Reuse broxton code for geminilake 2016-12-02 16:38:56 +02:00
intel_mocs.h drm/i915: Make various init functions take dev_priv 2016-12-01 18:01:15 +00:00
intel_modes.c
intel_opregion.c drm/i915/opregion: fill in the CADL from connector list, not DIDL 2016-11-17 12:45:59 +02:00
intel_overlay.c drm/i915: Eliminate superfluous i915_ggtt_view_normal 2017-01-14 16:18:36 +00:00
intel_panel.c drm/i915: clean up Hz to PWM for i965 2016-12-13 17:28:08 +02:00
intel_pipe_crc.c drm/i915: Avoid drm_atomic_state_put(NULL) on error paths 2017-01-18 13:47:22 +00:00
intel_pm.c Merge tag 'drm-misc-next-2016-12-30' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-01-09 09:55:57 +10:00
intel_psr.c drm/i915/psr: Fix compiler warnings for hsw_psr_disable() 2017-01-18 10:25:01 +00:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next 2017-01-27 11:00:42 +10:00
intel_ringbuffer.h drm/i915: request ring to be pinned above GUC_WOPCM_TOP 2016-12-24 10:06:59 +00:00
intel_runtime_pm.c drm/i915/dsi: Do not clear DPOUNIT_CLOCK_GATE_DISABLE from vlv_init_display_clock_gating 2016-12-20 16:27:46 +02:00
intel_sdvo.c drm/i915: distinguish G33 and Pineview from each other 2016-12-07 23:28:33 +02:00
intel_sdvo_regs.h
intel_sideband.c
intel_sprite.c drm/i915: Track pinned vma in intel_plane_state 2017-01-19 10:14:09 +00:00
intel_tv.c drm/i915: Pass dev_priv to intel_setup_outputs() 2016-11-25 16:43:24 +02:00
intel_uc.c drm/i915/guc: Move GuC log related functions into dedicated file 2017-01-18 07:29:04 +00:00
intel_uc.h drm/i915/huc: Support HuC authentication 2017-01-19 11:19:07 +02:00
intel_uncore.c Linux 4.10-rc2 2017-01-04 11:35:18 +01:00
intel_vbt_defs.h drm/915: Parsing the missed out DTD fields from the VBT 2016-12-23 15:13:39 +02:00
Kconfig drm/i915/gvt/kvmgt: add vfio/mdev support to KVMGT 2016-12-16 16:55:26 +08:00
Kconfig.debug drm/i915: Enable swfence debugobject support for i915.ko 2016-12-05 20:49:17 +00:00
Makefile drm/i915/huc: Add HuC fw loading support 2017-01-19 11:18:55 +02:00