linux/drivers/gpu/drm/i915
Thomas Daniel 7ba717cf36 drm/i915/bdw: Pin the ringbuffer backing object to GGTT on-demand
Same as with the context, pinning to GGTT regardless is harmful (it
badly fragments the GGTT and can even exhaust it).

Unfortunately, this case is also more complex than the previous one
because we need to map and access the ringbuffer in several places
along the execbuffer path (and we cannot make do by leaving the
default ringbuffer pinned, as before). Also, the context object
itself contains a pointer to the ringbuffer address that we have to
keep updated if we are going to allow the ringbuffer to move around.

v2: Same as with the context pinning, we cannot really do it during
an interrupt. Also, pin the default ringbuffers objects regardless
(makes error capture a lot easier).

v3: Rebased. Take a pin reference of the ringbuffer for each item
in the execlist request queue because the hardware may still be using
the ringbuffer after the MI_USER_INTERRUPT to notify the seqno update
is executed.  The ringbuffer must remain pinned until the context save
is complete.  No longer pin and unpin ringbuffer in
populate_lr_context() - this transient address is meaningless and the
pinning can cause a sleep while atomic.

v4: Moved ringbuffer pin and unpin into the lr_context_pin functions.
Downgraded pinning check BUG_ONs to WARN_ONs.

v5: Reinstated WARN_ONs for unexpected execlist states.  Removed unused
variable.

Issue: VIZ-4277
Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
Signed-off-by: Thomas Daniel <thomas.daniel@intel.com>
Reviewed-by: Akash Goel <akash.goels@gmail.com>
Reviewed-by: Deepak S<deepak.s@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-11-19 19:56:44 +01:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c drm/i915: Check pixel clock in ns2501 mode_valid hook 2014-09-03 11:05:21 +02:00
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Add the predicate source registers to the register whitelist 2014-11-14 10:29:24 +01:00
i915_debugfs.c drm/i915/bdw: Pin the context backing objects to GGTT on-demand 2014-11-19 19:32:58 +01:00
i915_dma.c Merge tag 'drm-intel-fixes-2014-11-19' into drm-intel-next-queued 2014-11-19 18:17:38 +01:00
i915_drv.c drm/i915: disable rps irqs earlier during suspend/unload 2014-11-19 15:03:29 +01:00
i915_drv.h drm/i915/bdw: Pin the context backing objects to GGTT on-demand 2014-11-19 19:32:58 +01:00
i915_gem_context.c drm/i915: Initialize workarounds in logical ring mode too 2014-11-14 10:29:25 +01:00
i915_gem_debug.c
i915_gem_dmabuf.c
i915_gem_evict.c drm/i915: fix another use-after-free in i915_gem_evict_everything 2014-09-19 14:41:16 +02:00
i915_gem_execbuffer.c drm/i915: Request PIN_GLOBAL when pinning a vma for GTT relocations 2014-11-07 18:42:00 +01:00
i915_gem_gtt.c Merge tag 'drm-intel-fixes-2014-11-19' into drm-intel-next-queued 2014-11-19 18:17:38 +01:00
i915_gem_gtt.h drm/i915: Move flags describing VMA mappings into the VMA 2014-11-04 14:04:51 +01:00
i915_gem_render_state.c drm/i915 Add golden context support for Gen9 2014-11-04 14:04:55 +01:00
i915_gem_render_state.h drm/i915/bdw: Render state init for Execlists 2014-09-03 11:04:52 +02:00
i915_gem_stolen.c drm/i915: Move flags describing VMA mappings into the VMA 2014-11-04 14:04:51 +01:00
i915_gem_tiling.c Merge tag 'drm-intel-fixes-2014-11-19' into drm-intel-next-queued 2014-11-19 18:17:38 +01:00
i915_gem_userptr.c drm/i915: Do not leak pages when freeing userptr objects 2014-09-29 15:31:01 +02:00
i915_gem.c drm/i915/bdw: Pin the context backing objects to GGTT on-demand 2014-11-19 19:32:58 +01:00
i915_gpu_error.c drm/i915: Don't print header in error state for non-existing CS 2014-11-18 16:23:13 +01:00
i915_ioc32.c drm/i915: remove redundant #ifdef CONFIG_COMPAT 2014-10-24 16:34:07 +02:00
i915_irq.c drm/i915: sanitize rps irq disabling 2014-11-19 15:03:23 +01:00
i915_params.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-10-14 09:39:08 +02:00
i915_reg.h drm/i915: Drop the HSW special case from __gen6_gt_wait_for_thread_c0() 2014-11-17 19:11:09 +01:00
i915_suspend.c drm/i915: unify remaining register save/restore code a bit 2014-11-14 10:29:28 +01:00
i915_sysfs.c drm/i915: Do not export RC6p and RC6pp if they don't exist 2014-10-24 16:34:00 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Add tracepoints to track a vm during its lifetime 2014-11-14 10:29:13 +01:00
i915_ums.c drm/i915: don't save/restore backlight hist ctl registers 2014-11-14 10:29:28 +01:00
intel_acpi.c
intel_audio.c drm/i915/audio: fix monitor presence indication after disable 2014-11-18 11:17:37 +01:00
intel_bios.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-10-14 09:39:08 +02:00
intel_bios.h drm/i915/bios: add missing __packed to structs used for reading vbt 2014-09-19 14:43:14 +02:00
intel_crt.c drm/i915: Don't claim that we're resetting PCH ADPA register 2014-10-24 16:34:10 +02:00
intel_ddi.c drm/i915/ddi: set has_infoframe flag on DDI too v2 2014-11-19 14:54:08 +01:00
intel_display.c Merge tag 'drm-intel-fixes-2014-11-19' into drm-intel-next-queued 2014-11-19 18:17:38 +01:00
intel_dp_mst.c drm/i915: Fold in intel_mst_port_dp_detect 2014-10-24 16:34:12 +02:00
intel_dp.c Merge tag 'drm-intel-fixes-2014-11-19' into drm-intel-next-queued 2014-11-19 18:17:38 +01:00
intel_drv.h drm/i915: sanitize rps irq enabling 2014-11-19 15:03:17 +01:00
intel_dsi_cmd.c drm/i915: Align intel_dsi*.c files a bit 2014-08-08 17:43:45 +02:00
intel_dsi_cmd.h drm/i915: wait for all DSI FIFOs to be empty 2014-08-07 11:07:15 +02:00
intel_dsi_panel_vbt.c drm/i915: Add support for Video Burst Mode for MIPI DSI 2014-08-08 17:43:45 +02:00
intel_dsi_pll.c drm/i915: Align intel_dsi*.c files a bit 2014-08-08 17:43:45 +02:00
intel_dsi.c drm/i915: Bikeshed rpm functions name a bit. 2014-10-01 10:52:59 +02:00
intel_dsi.h drm/i915: Add support for Video Burst Mode for MIPI DSI 2014-08-08 17:43:45 +02:00
intel_dvo.c drm/i915: Don't call DVO mode_set hook on DPMS changes 2014-09-03 11:05:14 +02:00
intel_fbdev.c drm/i915: Make intel_pin_and_fence_fb_obj take plane and framebuffer 2014-11-07 18:41:51 +01:00
intel_fifo_underrun.c drm/i915: kerneldoc for intel_fifo_underrun.c 2014-10-24 16:33:55 +02:00
intel_frontbuffer.c drm/i915: Introduce intel_psr.c 2014-11-17 19:12:28 +01:00
intel_hdmi.c drm/i915/hdmi: fetch infoframe status in get_config v2 2014-11-14 10:29:22 +01:00
intel_i2c.c
intel_lrc.c drm/i915/bdw: Pin the ringbuffer backing object to GGTT on-demand 2014-11-19 19:56:44 +01:00
intel_lrc.h drm/i915/bdw: Pin the context backing objects to GGTT on-demand 2014-11-19 19:32:58 +01:00
intel_lvds.c drm/i915: Pass the current pipe from eDP init to backlight setup 2014-11-14 10:29:20 +01:00
intel_modes.c
intel_opregion.c ACPI / i915: Update the condition to ignore firmware backlight change request 2014-09-30 01:11:18 +02:00
intel_overlay.c
intel_panel.c Merge tag 'drm-intel-fixes-2014-11-19' into drm-intel-next-queued 2014-11-19 18:17:38 +01:00
intel_pm.c Merge tag 'drm-intel-fixes-2014-11-19' into drm-intel-next-queued 2014-11-19 18:17:38 +01:00
intel_psr.c drm/i915: Add PSR docbook 2014-11-17 19:13:24 +01:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c drm/i915 Update Gen8 golden context batch buffer 2014-11-04 14:04:54 +01:00
intel_renderstate_gen9.c drm/i915 Add golden context support for Gen9 2014-11-04 14:04:55 +01:00
intel_renderstate.h drm/i915 Add golden context support for Gen9 2014-11-04 14:04:55 +01:00
intel_ringbuffer.c drm/i915/bdw: Pin the ringbuffer backing object to GGTT on-demand 2014-11-19 19:56:44 +01:00
intel_ringbuffer.h drm/i915/bdw: Pin the ringbuffer backing object to GGTT on-demand 2014-11-19 19:56:44 +01:00
intel_runtime_pm.c drm/i915: Reinit display irqs and hpd from chv pipe-a power well 2014-11-17 09:16:53 +01:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Don't destroy DRM properties in the driver 2014-10-31 18:38:17 +01:00
intel_sideband.c
intel_sprite.c drm/i915: use the correct obj when preparing the sprite plane 2014-11-14 10:29:13 +01:00
intel_tv.c drm/i915: Clarify irq_lock locking, intel_tv_detect 2014-09-19 14:43:19 +02:00
intel_uncore.c drm/i915: Drop WaRsForcewakeWaitTC0:vlv 2014-11-17 19:11:18 +01:00
Kconfig
Makefile drm/i915: Introduce intel_psr.c 2014-11-17 19:12:28 +01:00