1 #include <stdbool.h> 2 #include <stdint.h> 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 /** 8 * \file intel_debug_identifier.h 9 * 10 * Debug identifier to put into the driver debug buffers. Helps figure out 11 * information about the driver that generated a hang. 12 */ 13 14 /* Below is a list of structure located in the identifier buffer. The driver 15 * can fill those in for debug purposes. 16 */ 17 18 enum intel_debug_block_type { 19 /* End of the debug blocks */ 20 INTEL_DEBUG_BLOCK_TYPE_END = 1, 21 22 /* Driver identifier (struct intel_debug_block_driver) */ 23 INTEL_DEBUG_BLOCK_TYPE_DRIVER, 24 25 /* Frame identifier (struct intel_debug_block_frame) */ 26 INTEL_DEBUG_BLOCK_TYPE_FRAME, 27 28 /* Internal, never to be written out */ 29 INTEL_DEBUG_BLOCK_TYPE_MAX, 30 }; 31 32 struct intel_debug_block_base { 33 uint32_t type; /* enum intel_debug_block_type */ 34 uint32_t length; /* inclusive of this structure size */ 35 }; 36 37 struct intel_debug_block_driver { 38 struct intel_debug_block_base base; 39 uint8_t description[]; 40 }; 41 42 struct intel_debug_block_frame { 43 struct intel_debug_block_base base; 44 uint64_t frame_id; 45 }; 46 47 extern void *intel_debug_identifier(void); 48 extern uint32_t intel_debug_identifier_size(void); 49 50 extern uint32_t intel_debug_write_identifiers(void *output, 51 uint32_t output_size, 52 const char *driver_name); 53 54 extern void *intel_debug_get_identifier_block(void *buffer, 55 uint32_t buffer_size, 56 enum intel_debug_block_type type); 57 58 bool intel_debug_batch_in_range(uint64_t frame_id); 59 60 #ifdef __cplusplus 61 } 62 #endif 63