linux/drivers/gpu/drm/i915
Chris Wilson 4bb1bedb28 drm/i915: Use the global runtime-pm wakelock for a busy GPU for execlists
When we submit a request to the GPU, we first take the rpm wakelock, and
only release it once the GPU has been idle for a small period of time
after all requests have been complete. This means that we are sure no
new interrupt can arrive whilst we do not hold the rpm wakelock and so
can drop the individual get/put around every single request inside
execlists.

Note: to close one potential issue we should mark the GPU as busy
earlier in __i915_add_request.

To elaborate: The issue is that we emit the irq signalling sequence
before we grab the rpm reference, which means we could miss the
resulting interrupt (since that's not set up when suspended). The only
bad side effect is a missed interrupt, gt mmio writes automatically
wake up the hw itself. But otoh we have an umbrella rpm reference for
the entirety of execbuf, as long as that's there we're covered.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[danvet: Explain a bit more about the add_request issue, which after
some irc chatting with Chris turns out to not be an issue really.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-04-10 08:56:14 +02:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c Enabled dithering in the intel VCH DVO for 18bpp pipelines. 2015-03-30 16:39:31 +02:00
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Tidy batch pool logic 2015-04-10 08:56:04 +02:00
i915_debugfs.c drm/i915: num_pd_pages/num_pd_entries isn't useful 2015-04-10 08:56:11 +02:00
i915_dma.c drm/i915: Split the batch pool by engine 2015-04-10 08:56:04 +02:00
i915_drv.c drm/i915/chv: Remove Wait for a previous gfx force-off 2015-03-31 15:32:23 +02:00
i915_drv.h drm/i915: Record ring->start address in error state 2015-04-10 08:56:07 +02:00
i915_gem_batch_pool.c drm/i915: Split batch pool into size buckets 2015-04-10 08:56:05 +02:00
i915_gem_batch_pool.h drm/i915: Split batch pool into size buckets 2015-04-10 08:56:05 +02:00
i915_gem_context.c drm/i915: Initialize all contexts 2015-03-20 11:48:19 +01:00
i915_gem_debug.c
i915_gem_dmabuf.c
i915_gem_evict.c drm/i915: kerneldoc for i915_gem_shrinker.c 2015-03-20 11:48:16 +01:00
i915_gem_execbuffer.c drm/i915: Split the batch pool by engine 2015-04-10 08:56:04 +02:00
i915_gem_gtt.c drm/i915: Use complete address space in true PPGTT 2015-04-10 08:56:13 +02:00
i915_gem_gtt.h drm/i915/gen8: begin bitmap tracking 2015-04-10 08:56:12 +02:00
i915_gem_render_state.c
i915_gem_render_state.h
i915_gem_shrinker.c drm/i915: kerneldoc for i915_gem_shrinker.c 2015-03-20 11:48:16 +01:00
i915_gem_stolen.c Linux 4.0-rc3 2015-03-09 19:58:30 +10:00
i915_gem_tiling.c drm/i915: Check obj->vma_list under the struct_mutex 2015-02-24 15:30:42 +02:00
i915_gem_userptr.c drm/i915: Prevent use-after-free in invalidate_range_start callback 2015-02-05 16:31:30 +02:00
i915_gem.c drm/i915: Use the global runtime-pm wakelock for a busy GPU for execlists 2015-04-10 08:56:14 +02:00
i915_gpu_error.c drm/i915: Record ring->start address in error state 2015-04-10 08:56:07 +02:00
i915_ioc32.c
i915_irq.c drm/i915: Fix computation of last_adjustment for RPS autotuning 2015-04-10 08:56:01 +02:00
i915_params.c drm/i915: Add module param to test the load detect code 2015-03-27 11:22:52 +01:00
i915_reg.h drm/i915: Agressive downclocking on Baytrail 2015-04-10 08:56:01 +02:00
i915_suspend.c drm/i915: Remove regfile code&data for UMS suspend/resume 2015-02-27 18:10:39 +01:00
i915_sysfs.c drm/i915/skl: Updated the act_freq_mhz_show sysfs function 2015-03-17 22:30:25 +01:00
i915_trace_points.c
i915_trace.h drm/i915: Remove _entry from PPGTT page structures 2015-04-10 08:56:07 +02:00
i915_vgpu.c drm/i915: Adds graphic address space ballooning logic 2015-02-13 23:28:23 +01:00
i915_vgpu.h drm/i915: Add ULL postfix to VGT_MAGIC constant 2015-03-17 22:30:18 +01:00
intel_acpi.c
intel_atomic_plane.c drm/i915: Rotation property is now handled in DRM core 2015-03-10 09:59:33 +01:00
intel_atomic.c drm/i915: Set crtc backpointer when duplicating crtc state 2015-03-17 22:29:53 +01:00
intel_audio.c drm/i915: Convert the ddi cdclk code to get_display_clock_speed 2015-03-31 17:28:58 +02:00
intel_bios.c drm/i915: Fix the VBT child device parsing for BSW 2015-04-10 08:56:14 +02:00
intel_bios.h drm/i915: Fix the VBT child device parsing for BSW 2015-04-10 08:56:14 +02:00
intel_crt.c drm/i915: rename GMBUS_PORT_* macros as GMBUS_PIN_* 2015-04-01 14:11:32 +02:00
intel_ddi.c drm/i915: Convert the ddi cdclk code to get_display_clock_speed 2015-03-31 17:28:58 +02:00
intel_display.c drm/i915: Boost GPU frequency if we detect outstanding pageflips 2015-04-10 08:56:02 +02:00
intel_dp_mst.c drm/i915: Don't use staged config in intel_mst_pre_enable_dp() 2015-04-10 08:55:57 +02:00
intel_dp.c drm/i915: add i915 specific connector debugfs file for DPCD 2015-04-07 10:27:28 +02:00
intel_drv.h drm/i915: Deminish contribution of wait-boosting from clients 2015-04-10 08:56:02 +02:00
intel_dsi_panel_vbt.c drm/i915/dsi: remove intel_dsi_cmd.c and the unused functions therein 2015-01-29 16:57:14 +01:00
intel_dsi_pll.c
intel_dsi.c drm/i915: Implement connector state duplication 2015-03-26 16:28:21 +01:00
intel_dsi.h drm/i915/dsi: add drm mipi dsi host support 2015-01-29 16:51:39 +01:00
intel_dvo.c drm/i915: base gmbus pin validity check on the gmbus pin map array 2015-04-01 14:11:56 +02:00
intel_fbc.c drm/i915: kill i915.powersave 2015-03-26 13:04:23 +01:00
intel_fbdev.c drm/i915: Pass in plane state when (un)pinning frame buffers 2015-03-23 15:00:57 +01:00
intel_fifo_underrun.c drm/i915: Check for driver readyness before handling an underrun interrupt 2015-03-04 10:04:19 +02:00
intel_frontbuffer.c drm/i915: kill i915.powersave 2015-03-26 13:04:23 +01:00
intel_hdmi.c drm/i915: rename GMBUS_PORT_* macros as GMBUS_PIN_* 2015-04-01 14:11:32 +02:00
intel_i2c.c drm/i915: base gmbus pin validity check on the gmbus pin map array 2015-04-01 14:11:56 +02:00
intel_lrc.c drm/i915: Use the global runtime-pm wakelock for a busy GPU for execlists 2015-04-10 08:56:14 +02:00
intel_lrc.h drm/i915: Move common request allocation code into a common function 2015-04-01 07:54:30 +02:00
intel_lvds.c drm/i915: base gmbus pin validity check on the gmbus pin map array 2015-04-01 14:11:56 +02:00
intel_modes.c
intel_opregion.c drm/i915: Remove DRIVER_MODESET checks from modeset code 2015-02-27 18:10:53 +01:00
intel_overlay.c drm/i915: Allow disabling the destination colorkey for overlay 2015-04-10 08:55:54 +02:00
intel_panel.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-02-16 15:48:00 -08:00
intel_pm.c drm/i915: Deminish contribution of wait-boosting from clients 2015-04-10 08:56:02 +02:00
intel_psr.c drm/i915/skl: Enabling PSR2 SU with frame sync 2015-04-07 10:06:38 +02:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c drm/i915: Split the batch pool by engine 2015-04-10 08:56:04 +02:00
intel_ringbuffer.h drm/i915: Split the batch pool by engine 2015-04-10 08:56:04 +02:00
intel_runtime_pm.c drm/i915: Spelling s/auxilliary/auxiliary/ 2015-03-17 22:30:12 +01:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: base gmbus pin validity check on the gmbus pin map array 2015-04-01 14:11:56 +02:00
intel_sideband.c drm/i915: Correct the IOSF Dev_FN field for IOSF transfers 2015-02-09 14:26:19 +02:00
intel_sprite.c drm/i915: Rip out GET_SPRITE_COLORKEY ioctl 2015-03-27 09:08:04 +01:00
intel_tv.c drm/i915: Implement connector state duplication 2015-03-26 16:28:21 +01:00
intel_uncore.c drm/i915: Disable the mmio.debug WARN after it fires 2015-03-17 22:30:00 +01:00
Kconfig drm/i915/dsi: add drm mipi dsi host support 2015-01-29 16:51:39 +01:00
Makefile drm/i915: Extract i915_gem_shrinker.c 2015-03-20 11:48:15 +01:00