• Matt Roper's avatar
    drm/i915/mtl: Add hardware-level lock for steering · 3100240b
    Matt Roper authored
    Starting with MTL, the driver needs to not only protect the steering
    control register from simultaneous software accesses, but also protect
    against races with hardware/firmware agents.  The hardware provides a
    dedicated locking mechanism to support this via the MTL_STEER_SEMAPHORE
    register.  Reading the register acts as a 'trylock' operation; the read
    will return 0x1 if the lock is acquired or 0x0 if something else is
    already holding the lock; once acquired, writing 0x1 to the register
    will release the lock.
    
    We'll continue to grab the software lock as well, just so lockdep can
    track our locking; assuming the hardware lock is behaving properly,
    there should never be any contention on the software lock in this case.
    
    v2:
     - Extend hardware semaphore timeout and add a taint for CI if it ever
       happens (this would imply misbehaving hardware/firmware).  (Mika)
     - Add "MTL_" prefix to new steering semaphore register.  (Mika)
    
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Reviewed-by: default avatarBalasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20221128233014.4000136-5-matthew.d.roper@intel.com
    3100240b
intel_gt_regs.h 64.1 KB