/* SPDX-License-Identifier: MIT */ /* * Copyright © 2021-2022 Intel Corporation */ #ifndef _INTEL_GUC_CAPTURE_FWIF_H #define _INTEL_GUC_CAPTURE_FWIF_H #include <linux/types.h> #include "intel_guc_fwif.h" struct intel_guc; struct file; /* * struct __guc_capture_bufstate * * Book-keeping structure used to track read and write pointers * as we extract error capture data from the GuC-log-buffer's * error-capture region as a stream of dwords. */ struct __guc_capture_bufstate { … }; /* * struct __guc_capture_parsed_output - extracted error capture node * * A single unit of extracted error-capture output data grouped together * at an engine-instance level. We keep these nodes in a linked list. * See cachelist and outlist below. */ struct __guc_capture_parsed_output { … }; /* * struct guc_debug_capture_list_header / struct guc_debug_capture_list * * As part of ADS registration, these header structures (followed by * an array of 'struct guc_mmio_reg' entries) are used to register with * GuC microkernel the list of registers we want it to dump out prior * to a engine reset. */ struct guc_debug_capture_list_header { … } __packed; struct guc_debug_capture_list { … } __packed; /* * struct __guc_mmio_reg_descr / struct __guc_mmio_reg_descr_group * * intel_guc_capture module uses these structures to maintain static * tables (per unique platform) that consists of lists of registers * (offsets, names, flags,...) that are used at the ADS regisration * time as well as during runtime processing and reporting of error- * capture states generated by GuC just prior to engine reset events. */ struct __guc_mmio_reg_descr { … }; struct __guc_mmio_reg_descr_group { … }; /* * struct guc_state_capture_header_t / struct guc_state_capture_t / * guc_state_capture_group_header_t / guc_state_capture_group_t * * Prior to resetting engines that have hung or faulted, GuC microkernel * reports the engine error-state (register values that was read) by * logging them into the shared GuC log buffer using these hierarchy * of structures. */ struct guc_state_capture_header_t { … } __packed; struct guc_state_capture_t { … } __packed; enum guc_capture_group_types { … }; struct guc_state_capture_group_header_t { … } __packed; /* this is the top level structure where an error-capture dump starts */ struct guc_state_capture_group_t { … } __packed; /* * struct __guc_capture_ads_cache * * A structure to cache register lists that were populated and registered * with GuC at startup during ADS registration. This allows much quicker * GuC resets without re-parsing all the tables for the given gt. */ struct __guc_capture_ads_cache { … }; /** * struct intel_guc_state_capture * * Internal context of the intel_guc_capture module. */ struct intel_guc_state_capture { … }; #endif /* _INTEL_GUC_CAPTURE_FWIF_H */