[Intel-xe] [PATCH 7/7] drm/xe/display: Dont call intel_display_power_is_enabled from irq install/remove
Rodrigo Vivi
rodrigo.vivi at intel.com
Fri May 12 18:03:13 UTC 2023
From: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Just assume all power domains are enabled, since we use the INIT domain
when suspending/resuming.
Not taking a mutex inside a spinlock makes suspend/resume work again.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
drivers/gpu/drm/xe/display/ext/i915_irq.c | 50 +++++------------------
1 file changed, 11 insertions(+), 39 deletions(-)
diff --git a/drivers/gpu/drm/xe/display/ext/i915_irq.c b/drivers/gpu/drm/xe/display/ext/i915_irq.c
index e9dfe3658ca1..afde97b6faa6 100644
--- a/drivers/gpu/drm/xe/display/ext/i915_irq.c
+++ b/drivers/gpu/drm/xe/display/ext/i915_irq.c
@@ -1007,34 +1007,20 @@ void gen11_display_irq_reset(struct drm_i915_private *dev_priv)
enum pipe pipe;
u32 trans_mask = BIT(TRANSCODER_A) | BIT(TRANSCODER_B) |
BIT(TRANSCODER_C) | BIT(TRANSCODER_D);
+ enum transcoder trans;
if (!HAS_DISPLAY(dev_priv))
return;
intel_uncore_write(&dev_priv->uncore, GEN11_DISPLAY_INT_CTL, 0);
- if (DISPLAY_VER(dev_priv) >= 12) {
- enum transcoder trans;
-
- for_each_cpu_transcoder_masked(dev_priv, trans, trans_mask) {
- enum intel_display_power_domain domain;
-
- domain = POWER_DOMAIN_TRANSCODER(trans);
- if (!intel_display_power_is_enabled(dev_priv, domain))
- continue;
-
- intel_uncore_write(&dev_priv->uncore, TRANS_PSR_IMR(trans), 0xffffffff);
- intel_uncore_write(&dev_priv->uncore, TRANS_PSR_IIR(trans), 0xffffffff);
- }
- } else {
- intel_uncore_write(&dev_priv->uncore, EDP_PSR_IMR, 0xffffffff);
- intel_uncore_write(&dev_priv->uncore, EDP_PSR_IIR, 0xffffffff);
+ for_each_cpu_transcoder_masked(dev_priv, trans, trans_mask) {
+ intel_uncore_write(&dev_priv->uncore, TRANS_PSR_IMR(trans), 0xffffffff);
+ intel_uncore_write(&dev_priv->uncore, TRANS_PSR_IIR(trans), 0xffffffff);
}
for_each_pipe(dev_priv, pipe)
- if (intel_display_power_is_enabled(dev_priv,
- POWER_DOMAIN_PIPE(pipe)))
- GEN8_IRQ_RESET_NDX(dev_priv, DE_PIPE, pipe);
+ GEN8_IRQ_RESET_NDX(dev_priv, DE_PIPE, pipe);
GEN3_IRQ_RESET(dev_priv, GEN8_DE_PORT_);
GEN3_IRQ_RESET(dev_priv, GEN8_DE_MISC_);
@@ -1294,6 +1280,7 @@ static void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv)
u32 de_misc_masked = GEN8_DE_EDP_PSR;
u32 trans_mask = BIT(TRANSCODER_A) | BIT(TRANSCODER_B) |
BIT(TRANSCODER_C) | BIT(TRANSCODER_D);
+ enum transcoder trans;
enum pipe pipe;
if (!HAS_DISPLAY(dev_priv))
@@ -1323,30 +1310,15 @@ static void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv)
else if (IS_BROADWELL(dev_priv))
de_port_enables |= BDW_DE_PORT_HOTPLUG_MASK;
- if (DISPLAY_VER(dev_priv) >= 12) {
- enum transcoder trans;
-
- for_each_cpu_transcoder_masked(dev_priv, trans, trans_mask) {
- enum intel_display_power_domain domain;
-
- domain = POWER_DOMAIN_TRANSCODER(trans);
- if (!intel_display_power_is_enabled(dev_priv, domain))
- continue;
-
- gen3_assert_iir_is_zero(dev_priv, TRANS_PSR_IIR(trans));
- }
- } else {
- gen3_assert_iir_is_zero(dev_priv, EDP_PSR_IIR);
- }
+ for_each_cpu_transcoder_masked(dev_priv, trans, trans_mask)
+ gen3_assert_iir_is_zero(dev_priv, TRANS_PSR_IIR(trans));
for_each_pipe(dev_priv, pipe) {
dev_priv->de_irq_mask[pipe] = ~de_pipe_masked;
- if (intel_display_power_is_enabled(dev_priv,
- POWER_DOMAIN_PIPE(pipe)))
- GEN8_IRQ_INIT_NDX(dev_priv, DE_PIPE, pipe,
- dev_priv->de_irq_mask[pipe],
- de_pipe_enables);
+ GEN8_IRQ_INIT_NDX(dev_priv, DE_PIPE, pipe,
+ dev_priv->de_irq_mask[pipe],
+ de_pipe_enables);
}
GEN3_IRQ_INIT(dev_priv, GEN8_DE_PORT_, ~de_port_masked, de_port_enables);
--
2.39.2
More information about the Intel-xe
mailing list