[Intel-gfx] [PATCH v2] drm/i915/bdw: Fix the write setting up the WIZ hashing mode
Damien Lespiau
damien.lespiau at intel.com
Mon Dec 8 08:54:46 PST 2014
On Mon, Dec 08, 2014 at 04:50:13PM +0000, Dave Gordon wrote:
> On 08/12/14 16:27, Daniel Vetter wrote:
> > On Mon, Dec 08, 2014 at 04:22:27PM +0000, Damien Lespiau wrote:
> >> I was playing with clang and oh surprise! a warning trigerred by
> >> -Wshift-overflow (gcc doesn't have this one):
>
> [snip]
>
> >> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> >> index 79b4ca5..9deb152 100644
> >> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> >> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> >> @@ -739,6 +739,9 @@ static int wa_add(struct drm_i915_private *dev_priv,
> >> #define WA_CLR_BIT_MASKED(addr, mask) \
> >> WA_REG(addr, _MASKED_BIT_DISABLE(mask), (mask) & 0xffff)
> >>
> >> +#define WA_SET_FIELD_MASKED(addr, mask, value) \
> >> + WA_REG(addr, _MASKED_FIELD(mask, value), mask)
> >> +
> >> #define WA_SET_BIT(addr, mask) WA_REG(addr, I915_READ(addr) | (mask), mask)
> >> #define WA_CLR_BIT(addr, mask) WA_REG(addr, I915_READ(addr) & ~(mask), mask)
>
> Not your changes, but:
>
> * WA_{SET,CLR}_BIT() above look dubious and don't seem to be used anyway
>
> * dev_priv->workarounds.reg[idx].mask = mask;
>
> The mask field is set but not used in intel_ring_workarounds_emit() or
> intel_logical_ring_workarounds_emit(), only in debugfs printout.
> And it's redundant since the 'value' incorporates the bit(field) mask
> and the new target value into one parameter, hence 3rd parameter of
> WA_REG() is surplus and calculating it in WA_{SET,CLR_BIT_MASKED() is
> also redundant.
>
> Unless I've missed something?
The mask is used to test that we correctly set/clear W/A values in i-g-t
tests. Imagine the W/A being "clear bit 2", we have a generic (value,
mask) to check that we do indeed do that.
--
Damien
More information about the Intel-gfx
mailing list