STRUCT AER_ERR_INFO(9)
π struct aer_err_info β AER Error Information π
okay bestie, welcome to the struct aer_err_info(9) page, straight out of the Kernel API Manual β¨ this is one of those pages you read once, go "wait huh", read again, and then suddenly you're the group chat's PCIe expert. no cap. let's go π«Ά
πΈ NAME πΈ
struct aer_err_info β AER Error Information. that's it, that's the whole vibe check π
it's the little info-bag the kernel fills up when an Advanced Error Reporting situation goes down.
β¨ SYNOPSIS β¨
here's the whole struct, character for character, copy it exactly because we do not freestyle struct definitions in this house π€
struct aer_err_info {
struct pci_dev *dev[AER_MAX_MULTI_ERR_DEVICES];
int ratelimit_print[AER_MAX_MULTI_ERR_DEVICES];
int error_dev_num;
const char *level;
unsigned int id:16;
unsigned int severity:2;
unsigned int root_ratelimit_print:1;
unsigned int __pad1:4;
unsigned int multi_error_valid:1;
unsigned int first_error:5;
unsigned int __pad2:1;
unsigned int is_cxl:1;
unsigned int tlp_header_valid:1;
unsigned int status;
unsigned int mask;
u32 anfe_status;
struct pcie_tlp_log tlp;
};
yes there are bitfields. yes there is padding. no we are not scared π¦
π Members π
time for the roll call, one by one, no skipping, we love an exhaustive list π
devβ the devices reporting the error. it's an array, so if your whole squad is messy, everyone shows up πratelimit_printβ flag that says whether to log or not log the devices' error.0=NotLog/1=Log. the anti-spam control fr fr πerror_dev_numβ how many devices are reporting an error. the actual headcount πlevelβ theprintklevel to use when logging. this is the volume knob on the drama πidβ value from registerPCI_ERR_ROOT_ERR_SRC. literally straight from the register, no middleman π₯severityβ the AER severity:0-UNCOR Non-fatal,1-UNCOR fatal,2-COR. three whole moods πroot_ratelimit_printβ flag to log or not log the root's error.0=NotLog/1=Log. same energy asratelimit_printbut for the root π__pad1β padding for alignment. it does nothing and it's iconic for it πmulti_error_validβ set if multiple errors are reported. yes babe, more than one π΅first_errorβ the first reported error. the OG error π₯__pad2β padding for alignment. again. still doing nothing. still slaying β¨is_cxlβ bus type error:0-PCI Bus error,1-CXL Bus error. pick your universe πtlp_header_validβ indicates if thetlpfield contains error information. if it's not valid, don't go reading it, okay? π«statusβ COR/UNCOR error status πmaskβ COR/UNCOR mask πanfe_statusβ Advisory Non-Fatal Errors, i.e. Uncorrectable Errors signaled as Correctable Errors (PCIe r7.0 sec 6.2.4.3). only used ifseverityisAER_CORRECTABLEandstatushas Advisory Non-Fatal Error Status set. read that condition twice bestie, it's not optional π§
note the citation: PCIe r7.0 sec 6.2.4.3. that's the receipts π§Ύ
tlpβ transaction packet information. the actual packet gossip π¦
π SEE ALSO π
go read these next, the lore is deep, iykyk π
- Kernel file
./drivers/pci/pci.h PCI_FIND_NEXT_CAP(9)PCI_FIND_NEXT_EXT_CAP(9)pci_bar_index_is_valid(9)pci_id_from_device(9)pci_match_one_id(9)pci_resource_num(9)pci_dev_set_io_state(9)
aaaand that's the page!! π this one came from the source tree at ./drivers/pci, version stamped October 2026, and it's filed under struct aer_err_info(9) in the Kernel API Manual. drink some water, go read pci.h, and remember: padding fields are people too ππ«Άπ
π¦ 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