STRUCT GUC_STATE_CAPTURE_HEADER_T(9)
πΈ struct guc_state_capture_header_t β State capture header π
okay bestie so this is a page out of the Kernel API Manual (section 9, the big-kid kernel-guts section, iykyk), and it's literally all about struct guc_state_capture_header_t β the state capture header β¨. no cap, that's the whole vibe. let's get into it π«Ά
π SYNOPSIS π
here's the shape of it, copy-pasted exactly so you don't gotta squint at anything π:
struct guc_state_capture_header_t {
u32 owner;
#define GUC_STATE_CAPTURE_HEADER_VFID GENMASK(7, 0);
u32 info;
#define GUC_STATE_CAPTURE_HEADER_CAPTURE_TYPE GENMASK(3, 0) ;
#define GUC_STATE_CAPTURE_HEADER_ENGINE_CLASS GENMASK(7, 4) ;
#define GUC_STATE_CAPTURE_HEADER_ENGINE_INSTANCE GENMASK(11, 8);
u32 lrca;
u32 guc_id;
u32 num_mmio_entries;
#define GUC_STATE_CAPTURE_HEADER_NUM_MMIO_ENTRIES GENMASK(9, 0);
};
likeβ¦ she's got masks on masks, the bitfield energy is immaculate π
β¨ Members β¨
ownerβ the VFID lives inBR[ 7: 0]π¦. if SRIOV is disabled it's MBZ (must be zero, bestie, don't be weird about it). if SRIOV is enabled, VFID is an integer in the range[0, 63]β and0means this state capture belongs to the PF, while an integerNin the range[1, 63]means the state capture is for VFNπinfoβ engine class / instance plus capture type info π§ that's the whole little info packet.lrcaβ logical ring context address. if it's a type-instance, this is the LRCA (address) that hung; otherwise it gets set to~0πguc_idβ context_index. if it's a type-instance, this is the context index of the hung context; otherwise it gets set to~0πnum_mmio_entriesβ the number of captured MMIO entries. that's it, that's the number π₯
π Description π
so here's the story πΈ: before the kernel resets engines that have hung or faulted, the GuC microkernel reports the engine error-state β literally the register values that were read β by logging them into the shared GuC log buffer, using this whole hierarchy of structures. it's giving "receipts before the reset," and honestly? iconic π
π SEE ALSO π
go look at the kernel file ./drivers/gpu/drm/xe/abi/guc_capture_abi.h, plus all these besties:
struct guc_mmio_reg(9)struct guc_mmio_reg_set(9)struct guc_debug_capture_list_header(9)struct guc_debug_capture_list(9)struct guc_state_capture_t(9)struct guc_state_capture_group_header_t(9)struct guc_state_capture_group_t(9)
ngl the whole squad is here β read them together or you're only getting half the lore π«Ά
and that's the page, bestie! π this came from ./drivers/gpu/drm/xe/abi, dated October 2026, and the header up top was struct guc_...ure_header_t(9) (Kernel API Manual, section 9) β the truncated-name thing is just how the title got squished, she's still the same struct π slay, go read your abi headers β¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms