[Intel-gfx] [PATCH v11 01/13] drm/i915/guc: Update GuC ADS size for error capture lists
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Fri Apr 8 12:39:43 UTC 2022
On 17/03/2022 18:56, Alan Previn wrote:
> Update GuC ADS size allocation to include space for
> the lists of error state capture register descriptors.
>
> Then, populate GuC ADS with the lists of registers we want
> GuC to report back to host on engine reset events. This list
> should include global, engine-class and engine-instance
> registers for every engine-class type on the current hardware.
>
> Ensure we allocate a persistent store for the register lists
> that are populated into ADS so that we don't need to allocate
> memory during GT resets when GuC is reloaded and ADS population
> happens again.
>
> NOTE: Start with a sample static table of register lists to
> layout the framework before adding real registers in subsequent
> patch. This static register tables are a different format from
> the ADS populated list.
>
> Signed-off-by: Alan Previn <alan.previn.teres.alexis at intel.com>
> Reviewed-by: Matthew Brost <matthew.brost at intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 1 +
> drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h | 91 +++++
> drivers/gpu/drm/i915/gt/uc/intel_guc.c | 13 +-
> drivers/gpu/drm/i915/gt/uc/intel_guc.h | 9 +-
> drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 127 +++++-
> .../gpu/drm/i915/gt/uc/intel_guc_capture.c | 374 ++++++++++++++++++
> .../gpu/drm/i915/gt/uc/intel_guc_capture.h | 22 ++
> drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h | 8 +
> 8 files changed, 628 insertions(+), 17 deletions(-)
> create mode 100644 drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h
> create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
> create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h
>
[snip]
> +
> +static int
> +guc_capture_list_init(struct intel_guc *guc, u32 owner, u32 type, u32 classid,
> + struct guc_mmio_reg *ptr, u16 num_entries)
> +{
> + u32 i = 0;
> + struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
> + const struct __guc_mmio_reg_descr_group *reglists = guc->capture->reglists;
> + const struct __guc_mmio_reg_descr_group *match;
> +
> + if (!reglists)
> + return -ENODEV;
> +
> + match = guc_capture_get_one_list(reglists, owner, type, classid);
> + if (match) {
> + for (i = 0; i < num_entries && i < match->num_regs; ++i) {
> + ptr[i].offset = match->list[i].reg.reg;
> + ptr[i].value = 0xDEADF00D;
> + ptr[i].flags = match->list[i].flags;
> + ptr[i].mask = match->list[i].mask;
> + }
> + return 0;
> + }
> +
> + guc_capture_warn_with_list_info(i915, "Missing register list init", owner, type,
> + classid);
I got a lot of these when booting on DG1 today (drm-tip):
[ 4.396554] i915 0000:03:00.0: [drm:intel_wopcm_init [i915]] Calculated GuC WOPCM [592K, 1420K)
[ 4.396681] i915 0000:03:00.0: [drm:i915_init_ggtt [i915]] clearing unused GTT space: [0, fee00000]
[ 4.412408] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[ 4.505766] MCR Steering: Default steering: sliceid=0x0, subsliceid=0x0
[ 4.505771] [drm:wa_init_finish [i915]] Initialized 6 GT workarounds on global
[ 4.506300] [drm:wa_init_finish [i915]] Initialized 6 engine workarounds on rcs'0
[ 4.506413] [drm:wa_init_finish [i915]] Initialized 3 whitelist workarounds on rcs'0
[ 4.506490] [drm:wa_init_finish [i915]] Initialized 6 context workarounds on rcs'0
[ 4.506712] [drm:wa_init_finish [i915]] Initialized 1 engine workarounds on bcs'0
[ 4.506787] [drm:wa_init_finish [i915]] Initialized 1 whitelist workarounds on bcs'0
[ 4.506845] [drm:wa_init_finish [i915]] Initialized 1 context workarounds on bcs'0
[ 4.506972] [drm:wa_init_finish [i915]] Initialized 1 engine workarounds on vcs'0
[ 4.507026] [drm:wa_init_finish [i915]] Initialized 1 whitelist workarounds on vcs'0
[ 4.507160] [drm:wa_init_finish [i915]] Initialized 1 engine workarounds on vcs'2
[ 4.507217] [drm:wa_init_finish [i915]] Initialized 1 whitelist workarounds on vcs'2
[ 4.507330] [drm:wa_init_finish [i915]] Initialized 1 engine workarounds on vecs'0
[ 4.507385] [drm:wa_init_finish [i915]] Initialized 1 whitelist workarounds on vecs'0
[ 4.508752] [drm:intel_guc_log_create [i915]] guc_log_level=5 (enabled, verbose:yes, verbosity:3)
[ 4.508999] i915 0000:03:00.0: [drm:intel_guc_ads_create [i915]] Used 4 KB for temporary ADS regset
[ 4.509082] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for PF Class-Registers on Video-Engine
[ 4.509152] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for PF Class-Registers on Blitter-Engine
[ 4.509219] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Render-Engine
[ 4.509283] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Render-Engine
[ 4.509347] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Video-Engine
[ 4.509408] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Video-Engine
[ 4.509472] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on VideoEnhance-Engine
[ 4.509531] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on VideoEnhance-Engine
[ 4.509600] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Blitter-Engine
[ 4.509665] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Blitter-Engine
[ 4.509730] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Global-Registers.
[ 4.514938] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for PF Class-Registers on Video-Engine
[ 4.515079] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for PF Class-Registers on Blitter-Engine
[ 4.515279] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Render-Engine
[ 4.515374] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Render-Engine
[ 4.515471] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Video-Engine
[ 4.515559] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Video-Engine
[ 4.515657] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on VideoEnhance-Engine
[ 4.515742] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on VideoEnhance-Engine
[ 4.515815] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Blitter-Engine
[ 4.515883] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Blitter-Engine
[ 4.516049] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Global-Registers.
[ 4.519482] [drm:intel_guc_init [i915]] param[ 0] = 0x16304f
[ 4.519617] [drm:intel_guc_init [i915]] param[ 1] = 0x40000
[ 4.519707] [drm:intel_guc_init [i915]] param[ 2] = 0x4
[ 4.519841] [drm:intel_guc_init [i915]] param[ 3] = 0x3
[ 4.519969] [drm:intel_guc_init [i915]] param[ 4] = 0xac8
[ 4.520093] [drm:intel_guc_init [i915]] param[ 5] = 0x49050001
[ 4.520221] [drm:intel_guc_init [i915]] param[ 6] = 0x0
[ 4.520350] [drm:intel_guc_init [i915]] param[ 7] = 0x0
[ 4.520468] [drm:intel_guc_init [i915]] param[ 8] = 0x0
[ 4.520581] [drm:intel_guc_init [i915]] param[ 9] = 0x0
[ 4.520665] [drm:intel_guc_init [i915]] param[10] = 0x0
[ 4.520733] [drm:intel_guc_init [i915]] param[11] = 0x0
[ 4.520816] [drm:intel_guc_init [i915]] param[12] = 0x0
[ 4.520883] [drm:intel_guc_init [i915]] param[13] = 0x0
[ 4.521296] i915 0000:03:00.0: [drm] GuC firmware i915/dg1_guc_69.0.3.bin version 69.0
[ 4.521298] i915 0000:03:00.0: [drm] HuC firmware i915/dg1_huc_7.9.3.bin version 7.9
[ 4.521818] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for PF Class-Registers on Video-Engine
[ 4.521921] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for PF Class-Registers on Blitter-Engine
[ 4.522086] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Render-Engine
[ 4.522151] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Render-Engine
[ 4.522221] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Video-Engine
[ 4.522289] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Video-Engine
[ 4.522359] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on VideoEnhance-Engine
[ 4.522419] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on VideoEnhance-Engine
[ 4.522486] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Class-Registers on Blitter-Engine
[ 4.522544] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Instance-Registers on Blitter-Engine
[ 4.522692] i915 0000:03:00.0: [drm:guc_capture_warn_with_list_info [i915]] GuC-capture: Missing register list size for VF Global-Registers.
[ 4.527029] i915 0000:03:00.0: [drm:guc_enable_communication [i915]] GuC communication enabled
[ 4.527887] i915 0000:03:00.0: [drm] HuC authenticated
[ 4.528364] i915 0000:03:00.0: [drm] GuC submission enabled
[ 4.528366] i915 0000:03:00.0: [drm] GuC SLPC enabled
[ 4.529157] i915 0000:03:00.0: [drm] GuC RC: enabled
What is it about?
Regards,
Tvrtko
More information about the Intel-gfx
mailing list