Hi Matt, On Thu, Oct 19, 2023 at 10:02:42AM -0700, Matt Roper wrote: > The steering control and semaphore registers are inside an "always on" > power domain with respect to RC6. However there are some issues if > higher-level platform sleep states are entering/exiting at the same time > these registers are accessed. Grabbing GT forcewake and holding it over > the entire lock/steer/unlock cycle ensures that those sleep states have > been fully exited before we access these registers. > > This is expected to become a formally documented/numbered workaround > soon. > > Note that this patch alone isn't expected to have an immediately > noticeable impact on MCR (mis)behavior; an upcoming pcode firmware > update will also be necessary to provide the other half of this > workaround. right... I did try this, but so fare we hold the forcewake when calling mcr_lock(). > v2: > - Move the forcewake inside the Xe_LPG-specific IP version check. This > should only be necessary on platforms that have a steering semaphore. > > Fixes: 4186e2185b4f ("drm/i915/gt: Add dedicated MCR lock") Is this the right Fixes tag? This is adding the spinlock around MCR, but the power domain needs to be taken independently from the lock... I think the right fix here is Fixes: 3100240bf846 ("drm/i915/mtl: Add hardware-level lock for steering") Cc: <stable@xxxxxxxxxxxxxxx> # v6.3+ When the access to the hardware was added. BTW, given that currently we hold the forcewake already, is this really a fix or is this more looking at the future? Is the Fixes tag necessary? > Cc: Radhakrishna Sripada <radhakrishna.sripada@xxxxxxxxx> > Cc: Jonathan Cavitt <jonathan.cavitt@xxxxxxxxx> > Signed-off-by: Matt Roper <matthew.d.roper@xxxxxxxxx> In any case, Reviewed-by: Andi Shyti <andi.shyti@xxxxxxxxxxxxxxx> Andi