drivers/firmware/efi/cper_cxl.c
Source file repositories/reference/linux-study-clean/drivers/firmware/efi/cper_cxl.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/firmware/efi/cper_cxl.c- Extension
.c- Size
- 4304 bytes
- Lines
- 157
- Domain
- Driver Families
- Bucket
- drivers/firmware
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/cper.hcxl/event.h
Detected Declarations
function cxl_cper_print_prot_err
Annotated Snippet
switch (prot_err->agent_type) {
/*
* According to UEFI 2.10 Section N.2.13, the term CXL Device
* is used to refer to Restricted CXL Device, CXL Device, CXL
* Logical Device or a CXL Fabric Manager Managed Logical
* Device.
*/
case RCD:
case DEVICE:
case LD:
case FMLD:
case RP:
case DSP:
case USP:
pr_info("%s agent_address: %04x:%02x:%02x.%x\n",
pfx, prot_err->agent_addr.segment,
prot_err->agent_addr.bus,
prot_err->agent_addr.device,
prot_err->agent_addr.function);
break;
case RCH_DP:
pr_info("%s rcrb_base_address: 0x%016llx\n", pfx,
prot_err->agent_addr.rcrb_base_addr);
break;
default:
break;
}
}
if (prot_err->valid_bits & PROT_ERR_VALID_DEVICE_ID) {
const __u8 *class_code;
switch (prot_err->agent_type) {
case RCD:
case DEVICE:
case LD:
case FMLD:
case RP:
case DSP:
case USP:
pr_info("%s slot: %d\n", pfx,
prot_err->device_id.slot >> CPER_PCIE_SLOT_SHIFT);
pr_info("%s vendor_id: 0x%04x, device_id: 0x%04x\n",
pfx, prot_err->device_id.vendor_id,
prot_err->device_id.device_id);
pr_info("%s sub_vendor_id: 0x%04x, sub_device_id: 0x%04x\n",
pfx, prot_err->device_id.subsystem_vendor_id,
prot_err->device_id.subsystem_id);
class_code = prot_err->device_id.class_code;
pr_info("%s class_code: %02x%02x\n", pfx,
class_code[1], class_code[0]);
break;
default:
break;
}
}
if (prot_err->valid_bits & PROT_ERR_VALID_SERIAL_NUMBER) {
switch (prot_err->agent_type) {
case RCD:
case DEVICE:
case LD:
case FMLD:
pr_info("%s lower_dw: 0x%08x, upper_dw: 0x%08x\n", pfx,
prot_err->dev_serial_num.lower_dw,
prot_err->dev_serial_num.upper_dw);
break;
default:
break;
}
}
if (prot_err->valid_bits & PROT_ERR_VALID_CAPABILITY) {
switch (prot_err->agent_type) {
case RCD:
case DEVICE:
case LD:
case FMLD:
case RP:
case DSP:
case USP:
print_hex_dump(pfx, "", DUMP_PREFIX_OFFSET, 16, 4,
prot_err->capability,
sizeof(prot_err->capability), 0);
break;
default:
break;
}
}
Annotation
- Immediate include surface: `linux/cper.h`, `cxl/event.h`.
- Detected declarations: `function cxl_cper_print_prot_err`.
- Atlas domain: Driver Families / drivers/firmware.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.