1. 23 Jul, 2021 2 commits
  2. 22 Jul, 2021 34 commits
  3. 21 Jul, 2021 4 commits
    • Matt Roper's avatar
      drm/i915: Make GT workaround upper bounds exclusive · 6b73a7f3
      Matt Roper authored
      Workarounds are documented in the bspec with an exclusive upper bound
      (i.e., a "fixed" stepping that no longer needs the workaround).  This
      makes our driver's use of an inclusive upper bound for stepping ranges
      confusing; the differing notation between code and bspec makes it very
      easy for mistakes to creep in.
      
      Let's switch the upper bound of our IS_{GT,DISP}_STEP macros over to use
      an exclusive upper bound like the bspec does.  This also has the benefit
      of helping make sure workarounds are properly handled for new minor
      steppings that show up (e.g., an A1 between the A0 and B0 we already
      knew about) --- if the new intermediate stepping pulls in hardware fixes
      early, there will be an update to the workaround definition which lets
      us know we need to change our code.  If the new stepping does not pull a
      hardware fix earlier, then the new stepping will already be captured
      properly by the "[begin, fix)" range in the code.
      
      We'll probably need to be extra vigilant in code review of new
      workarounds for the near future to make sure developers notice the new
      semantics of workaround bounds.  But we just migrated a bunch of our
      platforms from the IS_REVID bounds over to IS_{GT,DISP}_STEP, so people
      are already adjusting to the new macros and now is a good time to make
      this change too.
      
      [mattrope: Split out GT changes to apply through gt-next tree]
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210717051426.4120328-8-matthew.d.roper@intel.com
      6b73a7f3
    • Matt Roper's avatar
      drm/i915: Program DFR enable/disable as a GT workaround · 1e1824de
      Matt Roper authored
      DFR programming (which we enable as an optimization on gen11, but must
      ensure is disabled on gen12) should be handled as a GT workaround rather
      than clock gating initialization.  This will ensure that the programming
      of these registers is verified with our typical workaround checks.
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210717051426.4120328-4-matthew.d.roper@intel.com
      1e1824de
    • Matt Roper's avatar
      drm/i915/icl: Drop a couple unnecessary workarounds · 131b1252
      Matt Roper authored
      While doing a quick sanity check of the ICL workarounds in the driver I
      noticed a few things that should be updated:
      
       * There's no mention in the bspec that WaPipelineFlushCoherentLines
         is needed on gen11 (both the current WA database and the old,
         deprecated page 20196 were checked); it appears this might have just
         been copied from the gen9 list?  Even if this were needed, it doesn't
         seem like this was the correct implementation anyway since the gen9
         workaround is supposed to be implemented in the indirect context bb
         (as we do in gen8_emit_flush_coherentl3_wa() on gen8/gen9).
      
       * WaForwardProgressSoftReset does not appear in the current workaround
         database.  The old deprecated workaround list has a note indicating
         the workaround was dropped in 2017, so we should be safe to drop it
         from the code too.
      
      While we're at it, add the formal workaround ID number to
      WaDisableBankHangMode (our hardware team made a transition from
      text-based workaround names to ID numbers partway through the
      development of ICL, which is why some workarounds only have names, some
      only have numbers, and some have both).
      
      Bspec: 33450
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210717051426.4120328-3-matthew.d.roper@intel.com
      131b1252
    • Matt Roper's avatar
      drm/i915: Fix application of WaInPlaceDecompressionHang · f4fa096a
      Matt Roper authored
      On SKL we've been applying this workaround on H0+ steppings, which is
      actually backwards; H0 is supposed to be the first stepping where the
      workaround is no longer needed.  Flip the bounds so that the workaround
      applies to all steppings _before_ H0.
      
      On BXT we've been applying this workaround to all steppings, but the
      bspec tells us it's only needed until C0.  Pre-C0 GT steppings only
      appeared in pre-production hardware, which we no longer support in the
      driver, so we can drop the workaround completely for this platform.
      
      On ICL we've been applying this workaround to all steppings, but there
      doesn't seem to be any indication that this workaround was ever needed
      for this platform (even now-deprecated page 20196 of the bspec doesn't
      mention it).  We can go ahead and drop it.
      
      I also don't see any mention of this workaround being needed for KBL,
      although this may be an oversight since the workaround is needed for all
      steppings of CFL.  I'll leave the workaround in place for KBL to be
      safe.
      
      Bspec: 14091, 33450
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210717051426.4120328-2-matthew.d.roper@intel.com
      f4fa096a