linux/drivers/gpu/drm/i915
Imre Deak 9939fba226 drm/i915: mask RPS IRQs properly when disabling RPS
Atm, igt/gem_reset_stats can trigger the recently added WARN on
left-over PM_IIR bits in gen6_enable_rps_interrupts(). There are two
reasons for this:
1. we call intel_enable_gt_powersave() without a preceeding
   intel_disable_gt_powersave()
2. gen6_disable_rps_interrupts() doesn't mask interrupts in PM_IMR

1. means RPS interrupts will remain enabled and can be serviced during
the HW initialization after a GPU reset. 2. means even if we called
gen6_disable_rps_interrupts() any new RPS interrupt during RPS
initialization would still propagate to PM_IIR too early (though
wouldn't be serviced).

This patch solves the 2. issue by also masking interrupts in PM_IMR, the
following patch fixes 1. getting rid of the WARN. This also makes
intel_enable_gt_powersave() and intel_disable_gt_powersave() more
symmetric.

Since gen6_disable_rps_interrupts() is called during driver loading with
i915 interrupts disabled add a new version of gen6_disable_pm_irq() that
doesn't WARN for this.

Also while at it, get the irq_lock around the whole PM_IMR/IER/IIR
programming sequence and make sure that any queued PM_IIR bit is also
cleared.

The WARN was caught by PRTS after I sent my previous RPS sanitizing
patchset and I could easily reproduce it on HSW. To actually fix it we
also need the next patch.

Reported-by: He, Shuang <shuang.he@intel.com>
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-12-03 09:31:53 +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: Handle runtime pm in the CRC setup code 2014-12-03 09:29:40 +01:00
i915_dma.c Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
i915_drv.c drm/i915: Grab modeset locks for GPU rest on pre-ctg 2014-12-03 09:29:38 +01:00
i915_drv.h Merge tag 'drm-intel-next-2014-11-21-fixed' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-12-03 08:25:59 +10: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 Merge tag 'drm-intel-next-2014-11-21-fixed' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-12-03 08:25:59 +10:00
i915_gem_gtt.c Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
i915_gem_gtt.h drm/i915: Can i915_gem_init_ioctl 2014-11-20 13:03:31 +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 Linux 3.18-rc7 2014-12-02 10:58:33 +10: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: Fix context object leak for legacy contexts 2014-12-03 09:29:41 +01:00
i915_gpu_error.c drm/i915: Use ggtt error obj capture helper for gen8 semaphores 2014-11-20 16:59:49 +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: mask RPS IRQs properly when disabling RPS 2014-12-03 09:31:53 +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: Implement GPU reset for 915/945 2014-12-03 09:29:37 +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: Don't rely upon encoder->type for infoframe hw state readout 2014-11-20 22:37:04 +01:00
intel_display.c drm/i915: Disable crtcs gracefully before GPU reset on gen3/4 2014-12-03 09:29:39 +01:00
intel_dp_mst.c drm: Miscellaneous fixes for v3.19-rc1 2014-11-15 09:37:20 +10:00
intel_dp.c drm/i915/eDP: When enabling panel VDD cancel pending disable worker 2014-12-03 09:29:40 +01:00
intel_drv.h drm/i915: Grab modeset locks for GPU rest on pre-ctg 2014-12-03 09:29:38 +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/chv: Enable AVI, SPD and HDMI infoframes for CHV. 2014-12-03 09:29:34 +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 Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
intel_pm.c Linux 3.18-rc7 2014-12-02 10:58:33 +10: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: Remove DRI1 ring accessors and API 2014-11-19 21:17:11 +01:00
intel_ringbuffer.h drm/i915: Remove DRI1 ring accessors and API 2014-11-19 21:17:11 +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/skl: Update in Gen9 multi-engine forcewake range 2014-12-03 09:29:41 +01:00
Kconfig
Makefile drm/i915: Introduce intel_psr.c 2014-11-17 19:12:28 +01:00