• Matt Roper's avatar
    drm/i915: Add support for explicit L3BANK steering · 31939274
    Matt Roper authored
    Because Render Power Gating restricts us to just a single subslice as a
    valid steering target for reads of multicast registers in a SUBSLICE
    range, the default steering we setup at init may not lead to a suitable
    target for L3BANK multicast register.  In cases where it does not, use
    explicit runtime steering whenever an L3BANK multicast register is read.
    
    While we're at it, let's simplify the function a little bit and drop its
    support for gen10/CNL since no such platforms ever materialized for real
    use.  Multicast register steering is already an area that causes enough
    confusion; no need to complicate it with what's effectively dead code.
    
    v2:
     - Use gt->uncore instead of gt->i915->uncore.  (Tvrtko)
     - Use {} as table terminator.  (Rodrigo)
    
    v3:
     - L3bank fuse register is a disable mask rather than an enable mask.
       We need to invert it before use.  (CI)
    
    v4:
     - L3bank ID goes in the subslice field, not the slice field.  (CI)
    
    Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210617211425.1943662-4-matthew.d.roper@intel.com
    31939274
intel_workarounds.c 60.6 KB