2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-08 21:53:54 +08:00
linux-next/drivers/gpu/drm/i915
Imre Deak d4d70aa596 drm/i915: sanitize rps irq disabling
When disabling the RPS interrupts there is a tricky dependency between
the thread disabling the interrupts, the RPS interrupt handler and the
corresponding RPS work. The RPS work can reenable the interrupts, so
there is no straightforward order in the disabling thread to (1) make
sure that any RPS work is flushed and to (2) disable all RPS
interrupts. Currently this is solved by masking the interrupts using two
separate mask registers (first level display IMR and PM IMR) and doing
the disabling when all first level interrupts are disabled.

This works, but the requirement to run with all first level interrupts
disabled is unnecessary making the suspend / unload time ordering of RPS
disabling wrt. other unitialization steps difficult and error prone.
Removing this restriction allows us to disable RPS early during suspend
/ unload and forget about it for the rest of the sequence. By adding a
more explicit method for avoiding the above race, it also becomes easier
to prove its correctness. Finally currently we can hit the WARN in
snb_update_pm_irq(), when a final RPS work runs with the first level
interrupts already disabled. This won't lead to any problem (due to the
separate interrupt masks), but with the change in this and the next
patch we can get rid of the WARN, while leaving it in place for other
scenarios.

To address the above points, add a new RPS interrupts_enabled flag and
use this during RPS disabling to avoid requeuing the RPS work and
reenabling of the RPS interrupts. Since the interrupt disabling happens
now in intel_suspend_gt_powersave(), we will disable RPS interrupts
explicitly during suspend (and not just through the first level mask),
but there is no problem doing so, it's also more consistent and allows
us to unify more of the RPS disabling during suspend and unload time in
the next patch.

v2/v3:
- rebase on patch "drm/i915: move rps irq disable one level up" in the
  patchset

Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-11-19 15:03:23 +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/skl: Add a debugfs file to dump the DDB allocation 2014-11-07 18:42:09 +01:00
i915_dma.c drm/i915: Make the physical object coherent with GTT 2014-11-14 10:29:18 +01:00
i915_drv.c drm/i915: remove the unnecessary block around display.hpd_irq_setup 2014-11-14 10:29:27 +01:00
i915_drv.h drm/i915: sanitize rps irq disabling 2014-11-19 15:03:23 +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 dma-buf: use reservation objects 2014-07-08 13:03:20 -07:00
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 drm/i915: Fix comments about CHV snoop behaviour 2014-11-14 20:06:53 +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 drm/i915: Report the actual swizzling back to userspace 2014-11-07 18:42:01 +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: Make the physical object coherent with GTT 2014-11-14 10:29:18 +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 drm/i915: Don't store panning coordinates as 16.16 fixed point 2014-11-19 14:56:53 +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 drm/i915: Tune down sink crc timeout dmesg output 2014-11-19 11:46:35 +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 drm/i915: Kill duplicated cdclk readout code from i2c 2014-07-07 11:27:52 +02:00
intel_lrc.c drm/i915: Drop return value from lrc_setup_hardware_status_page 2014-11-18 09:09:32 +01:00
intel_lrc.h drm/i915/bdw: Render state init for Execlists 2014-09-03 11:04:52 +02: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 drm/i915: use helpers 2014-07-18 14:25:15 +10:00
intel_panel.c drm/i915: Remove most INVALID_PIPE checks from the backlight code 2014-11-14 10:29:21 +01:00
intel_pm.c drm/i915: sanitize rps irq disabling 2014-11-19 15:03:23 +01:00
intel_psr.c drm/i915: Add PSR docbook 2014-11-17 19:13:24 +01:00
intel_renderstate_gen6.c drm/i915: Simplify processing of the golden render context state 2014-06-16 19:53:09 +02:00
intel_renderstate_gen7.c drm/i915: Simplify processing of the golden render context state 2014-06-16 19:53:09 +02:00
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: Initialize workarounds in logical ring mode too 2014-11-14 10:29:25 +01:00
intel_ringbuffer.h drm/i915: Initialize workarounds in logical ring mode too 2014-11-14 10:29:25 +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 drm/i915: vlv/chv: fix DSI sideband register accessing 2014-05-19 17:50:14 +02:00
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 drm/i915: Ditch UMS config option 2014-07-24 10:59:53 +02:00
Makefile drm/i915: Introduce intel_psr.c 2014-11-17 19:12:28 +01:00