• Alan Previn's avatar
    drm/i915/guc: Extract GuC error capture lists on G2H notification. · f5718a72
    Alan Previn authored
    - Upon the G2H Notify-Err-Capture event, parse through the
      GuC Log Buffer (error-capture-subregion) and generate one or
      more capture-nodes. A single node represents a single "engine-
      instance-capture-dump" and contains at least 3 register lists:
      global, engine-class and engine-instance. An internal link
      list is maintained to store one or more nodes.
    - Because the link-list node generation happen before the call
      to i915_gpu_codedump, duplicate global and engine-class register
      lists for each engine-instance register dump if we find
      dependent-engine resets in a engine-capture-group.
    - When i915_gpu_coredump calls into capture_engine, (in a
      subsequent patch) we detach the matching node (guc-id,
      LRCA, etc) from the link list above and attach it to
      i915_gpu_coredump's intel_engine_coredump structure when have
      matching LRCA/guc-id/engine-instance.
    
    Additional notes to be aware of:
    - GuC generates the error capture dump into the GuC log buffer but
      this buffer is one big log buffer with 3 independent subregions
      within it. Each subregion is populated with different content
      and used in different ways and timings but all regions operate
      behave as independent ring buffers. Each guc-log subregion
      (general-logs, crash-dump and error- capture) has it's own
      guc_log_buffer_state that contain independent read and write
      pointers.
    Signed-off-by: default avatarAlan Previn <alan.previn.teres.alexis@intel.com>
    Reviewed-by: default avatarUmesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
    Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220321164527.2500062-11-alan.previn.teres.alexis@intel.com
    f5718a72
intel_guc_log.c 20.3 KB