On Mon, 22 Nov 2021, Alan Previn <alan.previn.teres.alexis@xxxxxxxxx> wrote: > Add GuC's error capture output structures and definitions as how > they would appear in GuC log buffer's error capture subregion after > an error state capture G2H event notification. If it's for decoding data, should they all have __packed? > > Signed-off-by: Alan Previn <alan.previn.teres.alexis@xxxxxxxxx> > --- > .../gpu/drm/i915/gt/uc/intel_guc_capture.h | 35 +++++++++++++++++++ > 1 file changed, 35 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h > index df420f0f49b3..b2454b6cd778 100644 > --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h > +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h > @@ -29,6 +29,41 @@ struct __guc_mmio_reg_descr_group { > struct __guc_mmio_reg_descr * ext; > }; > > +struct intel_guc_capture_out_data_header { > + u32 reserved1; > + u32 info; > + #define GUC_CAPTURE_DATAHDR_SRC_TYPE GENMASK(3, 0) /* as per enum guc_capture_type */ > + #define GUC_CAPTURE_DATAHDR_SRC_CLASS GENMASK(7, 4) /* as per GUC_MAX_ENGINE_CLASSES */ > + #define GUC_CAPTURE_DATAHDR_SRC_INSTANCE GENMASK(11, 8) > + u32 lrca; /* if type-instance, LRCA (address) that hung, else set to ~0 */ > + u32 guc_ctx_id; /* if type-instance, context index of hung context, else set to ~0 */ > + u32 num_mmios; > + #define GUC_CAPTURE_DATAHDR_NUM_MMIOS GENMASK(9, 0) > +}; > + > +struct intel_guc_capture_out_data { > + struct intel_guc_capture_out_data_header capture_header; > + struct guc_mmio_reg capture_list[0]; > +}; > + > +enum guc_capture_group_types { > + GUC_STATE_CAPTURE_GROUP_TYPE_FULL, > + GUC_STATE_CAPTURE_GROUP_TYPE_PARTIAL, > + GUC_STATE_CAPTURE_GROUP_TYPE_MAX, > +}; > + > +struct intel_guc_capture_out_group_header { > + u32 reserved1; > + u32 info; > + #define GUC_CAPTURE_GRPHDR_SRC_NUMCAPTURES GENMASK(7, 0) > + #define GUC_CAPTURE_GRPHDR_SRC_CAPTURE_TYPE GENMASK(15, 8) > +}; > + > +struct intel_guc_capture_out_group { > + struct intel_guc_capture_out_group_header group_header; > + struct intel_guc_capture_out_data group_lists[0]; > +}; > + > struct intel_guc_state_capture { > struct __guc_mmio_reg_descr_group *reglists; > u16 num_instance_regs[GUC_CAPTURE_LIST_INDEX_MAX][GUC_MAX_ENGINE_CLASSES]; -- Jani Nikula, Intel Open Source Graphics Center