Hello Reviewed-by: Vinod Govindapillai <vinod.govindapillai@xxxxxxxxx> BR Vinod On Wed, 2023-01-25 at 20:52 +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > The gen2/gen3 irq code is supposed to be identical apart > from the 32bit vs. 16bit access width. The recent change > to intel_de_rmw() ruined that symmetry. Restore it to avoid > needless mental gymnastics when comparing the two codepaths. > > And while at it remove the extra eir!=0 check that somehow > ended up in the gen2 codepath only. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_irq.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 240d5e198904..b45d426a5bd5 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -3510,9 +3510,7 @@ static void i8xx_error_irq_ack(struct drm_i915_private *i915, > u16 emr; > > *eir = intel_uncore_read16(uncore, EIR); > - > - if (*eir) > - intel_uncore_write16(uncore, EIR, *eir); > + intel_uncore_write16(uncore, EIR, *eir); > > *eir_stuck = intel_uncore_read16(uncore, EIR); > if (*eir_stuck == 0) > @@ -3548,7 +3546,8 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv, > { > u32 emr; > > - *eir = intel_uncore_rmw(&dev_priv->uncore, EIR, 0, 0); > + *eir = intel_uncore_read(&dev_priv->uncore, EIR); > + intel_uncore_write(&dev_priv->uncore, EIR, *eir); > > *eir_stuck = intel_uncore_read(&dev_priv->uncore, EIR); > if (*eir_stuck == 0) > @@ -3564,7 +3563,8 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv, > * (or by a GPU reset) so we mask any bit that > * remains set. > */ > - emr = intel_uncore_rmw(&dev_priv->uncore, EMR, ~0, 0xffffffff); > + emr = intel_uncore_read(&dev_priv->uncore, EMR); > + intel_uncore_write(&dev_priv->uncore, EMR, 0xffffffff); > intel_uncore_write(&dev_priv->uncore, EMR, emr | *eir_stuck); > } >