1. 04 12月, 2021 1 次提交
  2. 02 12月, 2021 2 次提交
  3. 16 11月, 2021 1 次提交
  4. 12 11月, 2021 3 次提交
  5. 03 11月, 2021 1 次提交
  6. 01 11月, 2021 1 次提交
  7. 20 9月, 2021 1 次提交
  8. 03 9月, 2021 2 次提交
  9. 27 8月, 2021 1 次提交
  10. 19 8月, 2021 1 次提交
    • M
      drm/i915/dg2: Maintain backward-compatible nested batch behavior · 9e9dfd08
      Matt Roper 提交于
      For tgl+, the per-context setting of MI_MODE[12] determines whether
      the bits of a nested MI_BATCH_BUFFER_START instruction should be
      interpreted in the traditional manner or whether they should
      instead use a new tgl+ meaning that breaks backward compatibility, but
      allows nesting into 3rd-level batchbuffers.  For previous platforms,
      the hardware default for this register bit is to maintain
      backward-compatible behavior unless a context intentionally opts into
      the new behavior; however Xe_HPG flips the hardware default behavior.
      
      From a SW perspective, we want to maintain the backward-compatible
      behavior for userspace, so we'll apply a fake workaround to set it back
      to the legacy behavior on platforms where the hardware default is to
      break compatibility.  At the moment there is no Linux userspace that
      utilizes third-level batchbuffers, so this will avoid userspace from
      needing to make any changes.  using the legacy meaning is the correct
      thing to do.  If/when we have userspace consumers that want to utilize
      third-level batch nesting, we can provide a context parameter to allow
      them to opt-in.
      
      Bspec: 45974, 45718
      Cc: John Harrison <John.C.Harrison@Intel.com>
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805163647.801064-9-matthew.d.roper@intel.comReviewed-by: NAnusha Srivatsa <anusha.srivatsa@intel.com>
      9e9dfd08
  11. 11 8月, 2021 1 次提交
  12. 05 8月, 2021 3 次提交
  13. 31 7月, 2021 1 次提交
  14. 28 7月, 2021 1 次提交
  15. 24 7月, 2021 2 次提交
  16. 22 7月, 2021 4 次提交
    • M
      drm/i915: Make GT workaround upper bounds exclusive · 6b73a7f3
      Matt Roper 提交于
      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: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210717051426.4120328-8-matthew.d.roper@intel.com
      6b73a7f3
    • M
      drm/i915: Program DFR enable/disable as a GT workaround · 1e1824de
      Matt Roper 提交于
      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: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210717051426.4120328-4-matthew.d.roper@intel.com
      1e1824de
    • M
      drm/i915/icl: Drop a couple unnecessary workarounds · 131b1252
      Matt Roper 提交于
      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: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210717051426.4120328-3-matthew.d.roper@intel.com
      131b1252
    • M
      drm/i915: Fix application of WaInPlaceDecompressionHang · f4fa096a
      Matt Roper 提交于
      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: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210717051426.4120328-2-matthew.d.roper@intel.com
      f4fa096a
  17. 15 7月, 2021 6 次提交
  18. 14 7月, 2021 3 次提交
  19. 18 6月, 2021 2 次提交
    • M
      drm/i915: Add support for explicit L3BANK steering · 31939274
      Matt Roper 提交于
      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: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210617211425.1943662-4-matthew.d.roper@intel.com
      31939274
    • M
      drm/i915: Add GT support for multiple types of multicast steering · 0957e931
      Matt Roper 提交于
      Although most of our multicast registers are replicated per-subslice, we
      also have a small number of multicast registers that are replicated
      per-l3 bank instead.  For both types of multicast registers we need to
      make sure we steer reads of these registers to a valid instance.
      Ideally we'd like to find a specific instance ID that would steer reads
      of either type of multicast register to a valid instance (i.e., not
      fused off and not powered down), but sometimes the combination of
      part-specific fusing and the additional restrictions imposed by Render
      Power Gating make it impossible to find any overlap between the set of
      valid subslices and valid l3 banks.  This problem will become even more
      noticeable on our upcoming platforms since they will be adding
      additional types of multicast registers with new types of replication
      and rules for finding valid instances for reads.
      
      To handle this we'll continue to pick a suitable subslice instance at
      driver startup and program this as the default (sliceid,subsliceid)
      setting in the steering control register (0xFDC).  In cases where we
      need to read another type of multicast GT register, but the default
      subslice steering would not correspond to a valid instance, we'll
      explicitly re-steer the single read to a valid value, perform the read,
      and then reset the steering to it's "subslice" default.
      
      This patch adds the general functionality to prepare for this explicit
      steering of other multicast register types.  We'll plug L3 bank steering
      into this in the next patch, and then add additional types of multicast
      registers when the support for our next upcoming platform arrives.
      
      v2:
       - Use entry->end==0 as table terminator.  (Rodrigo)
       - Grab forcewake in wa_list_verify() now that we're using accessors
         that assume forcewake is already held.
      
      v3:
       - Fix loop condition when iterating over steering range tables.
         (Rodrigo)
      
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210617211425.1943662-3-matthew.d.roper@intel.com
      0957e931
  20. 16 6月, 2021 1 次提交
  21. 06 6月, 2021 1 次提交
  22. 07 5月, 2021 1 次提交