1. 26 1月, 2022 2 次提交
  2. 25 1月, 2022 1 次提交
  3. 22 1月, 2022 2 次提交
  4. 19 1月, 2022 1 次提交
  5. 18 1月, 2022 3 次提交
  6. 12 1月, 2022 3 次提交
    • J
      drm/i915/guc: Improve GuC loading status check/error reports · afd088ac
      John Harrison 提交于
      If the GuC fails to load, it is useful to know what firmware file /
      version was attempted. So move the version info report to before the
      load attempt rather than only after a successful load.
      
      If the GuC does fail to load, then make the error messages visible
      rather than being 'debug' prints that do not appears in dmesg output
      by default.
      
      When waiting for the GuC to load, it used to be necessary to check for
      two different states - READY and (LAPIC_DONE | MIA_CORE). Apparently
      the second signified init complete on RC6 exit. However, in more
      recent GuC versions the RC6 exit sequence now finishes with status
      READY as well. So the test can be simplified.
      
      Also, add an enum giving all the current status codes that GuC loading
      can report as a reference without having to pull and search through
      the GuC source files.
      Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
      Reviewed-by: NMatthew Brost <matthew.brost@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220107000622.292081-4-John.C.Harrison@Intel.com
      afd088ac
    • J
      drm/i915/guc: Update to GuC version 69.0.3 · 77b6f79d
      John Harrison 提交于
      Update to the latest GuC release.
      
      The latest GuC firmware introduces a number of interface changes:
      
      GuC may return NO_RESPONSE_RETRY message for requests sent over CTB.
      Add support for this reply and try resending the request again as a
      new CTB message.
      
      A KLV (key-length-value) mechanism is now used for passing
      configuration data such as CTB management.
      
      With the new KLV scheme, the old CTB management actions are no longer
      used and are removed.
      
      Register capture on hang is now supported by GuC. Full i915 support
      for this will be added by a later patch. A minimum support of
      providing capture memory and register lists is required though, so add
      that in.
      
      The device id of the current platform needs to be provided at init time.
      
      The 'poll CS' w/a (Wa_22012773006) was blanket enabled by previous
      versions of GuC. It must now be explicitly requested by the KMD. So,
      add in the code to turn it on when relevant.
      
      The GuC log entry format has changed. This requires adding a new field
      to the log header structure to mark the wrap point at the end of the
      buffer (as the buffer size is no longer a multiple of the log entry
      size).
      
      New CTB notification messages are now sent for some things that were
      previously only sent via MMIO notifications.
      
      Of these, the crash dump notification was not really being handled by
      i915. It called the log flush code but that only flushed the regular
      debug log and then only if relay logging was enabled. So just report
      an error message instead.
      
      The 'exception' notification was just being ignored completely. So add
      an error message for that as well.
      
      Note that in either the crash dump or the exception case, the GuC is
      basically dead. The KMD will detect this via the heartbeat and trigger
      both an error log (which will include the crash dump as part of the
      GuC log) and a GT reset. So no other processing is really required.
      Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
      Signed-off-by: NMichal Wajdeczko <michal.wajdeczko@intel.com>
      Reviewed-by: NMatthew Brost <matthew.brost@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220107000622.292081-3-John.C.Harrison@Intel.com
      77b6f79d
    • J
      drm/i915/guc: Temporarily bump the GuC load timeout · 53c8283b
      John Harrison 提交于
      There is a known (but exceedingly unlikely) race condition where the
      asynchronous frequency management code could reduce the GT clock while
      a GuC reload is in progress (during a full GT reset). A fix is in
      progress but there are complex locking issues to be resolved. In the
      meantime bump the timeout to 200ms. Even at slowest clock, this
      should be sufficient. And in the working case, a larger timeout makes
      no difference.
      Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
      Reviewed-by: NMatthew Brost <matthew.brost@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220107000622.292081-2-John.C.Harrison@Intel.com
      53c8283b
  7. 11 1月, 2022 3 次提交
    • T
      drm/i915: Use struct vma_resource instead of struct vma_snapshot · 60dc43d1
      Thomas Hellström 提交于
      There is always a struct vma_resource guaranteed to be alive when we
      access a corresponding struct vma_snapshot.
      
      So ditch the latter and instead of allocating vma_snapshots, reference
      the already existning vma_resource.
      
      This requires a couple of extra members in struct vma_resource but that's
      a small price to pay for the simplification.
      
      v2:
      - Fix a missing include and declaration (kernel test robot <lkp@intel.com>)
      Signed-off-by: NThomas Hellström <thomas.hellstrom@linux.intel.com>
      Reviewed-by: NMatthew Auld <matthew.auld@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220110172219.107131-7-thomas.hellstrom@linux.intel.com
      60dc43d1
    • T
      drm/i915: Use vma resources for async unbinding · 2f6b90da
      Thomas Hellström 提交于
      Implement async (non-blocking) unbinding by not syncing the vma before
      calling unbind on the vma_resource.
      Add the resulting unbind fence to the object's dma_resv from where it is
      picked up by the ttm migration code.
      Ideally these unbind fences should be coalesced with the migration blit
      fence to avoid stalling the migration blit waiting for unbind, as they
      can certainly go on in parallel, but since we don't yet have a
      reasonable data structure to use to coalesce fences and attach the
      resulting fence to a timeline, we defer that for now.
      
      Note that with async unbinding, even while the unbind waits for the
      preceding bind to complete before unbinding, the vma itself might have been
      destroyed in the process, clearing the vma pages. Therefore we can
      only allow async unbinding if we have a refcounted sg-list and keep a
      refcount on that for the vma resource pages to stay intact until
      binding occurs. If this condition is not met, a request for an async
      unbind is diverted to a sync unbind.
      
      v2:
      - Use a separate kmem_cache for vma resources for now to isolate their
        memory allocation and aid debugging.
      - Move the check for vm closed to the actual unbinding thread. Regardless
        of whether the vm is closed, we need the unbind fence to properly wait
        for capture.
      - Clear vma_res::vm on unbind and update its documentation.
      v4:
      - Take cache coloring into account when searching for vma resources
        pending unbind. (Matthew Auld)
      v5:
      - Fix timeout and error check in i915_vma_resource_bind_dep_await().
      - Avoid taking a reference on the object for async binding if
        async unbind capable.
      - Fix braces around a single-line if statement.
      v6:
      - Fix up the cache coloring adjustment. (Kernel test robot <lkp@intel.com>)
      - Don't allow async unbinding if the vma_res pages are not the same as
        the object pages. (Matthew Auld)
      v7:
      - s/unsigned long/u64/ in a number of places (Matthew Auld)
      Signed-off-by: NThomas Hellström <thomas.hellstrom@linux.intel.com>
      Reviewed-by: NMatthew Auld <matthew.auld@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220110172219.107131-5-thomas.hellstrom@linux.intel.com
      2f6b90da
    • T
      drm/i915: Use the vma resource as argument for gtt binding / unbinding · 39a2bd34
      Thomas Hellström 提交于
      When introducing asynchronous unbinding, the vma itself may no longer
      be alive when the actual binding or unbinding takes place.
      
      Update the gtt i915_vma_ops accordingly to take a struct i915_vma_resource
      instead of a struct i915_vma for the bind_vma() and unbind_vma() ops.
      Similarly change the insert_entries() op for struct i915_address_space.
      
      Replace a couple of i915_vma_snapshot members with their newly introduced
      i915_vma_resource counterparts, since they have the same lifetime.
      
      Also make sure to avoid changing the struct i915_vma_flags (in particular
      the bind flags) async. That should now only be done sync under the
      vm mutex.
      
      v2:
      - Update the vma_res::bound_flags when binding to the aliased ggtt
      v6:
      - Remove I915_VMA_ALLOC_BIT (Matthew Auld)
      - Change some members of struct i915_vma_resource from unsigned long to u64
        (Matthew Auld)
      v7:
      - Fix vma resource size parameters to be u64 rather than unsigned long
        (Matthew Auld)
      Signed-off-by: NThomas Hellström <thomas.hellstrom@linux.intel.com>
      Reviewed-by: NMatthew Auld <matthew.auld@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220110172219.107131-3-thomas.hellstrom@linux.intel.com
      39a2bd34
  8. 06 1月, 2022 2 次提交
  9. 24 12月, 2021 3 次提交
  10. 22 12月, 2021 2 次提交
  11. 21 12月, 2021 4 次提交
  12. 20 12月, 2021 1 次提交
  13. 18 12月, 2021 3 次提交
  14. 16 12月, 2021 7 次提交
  15. 14 12月, 2021 3 次提交