mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-05 03:44:03 +08:00
abdbf1a25d
Add support for decoding CXL Protocol Error Section as defined in UEFI 2.10 Section N.2.13. Do the section decoding in a new cper_cxl.c file. This new file will be used in the future for more CXL CPERs decode support. Add this to the existing UEFI_CPER config. Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
67 lines
1.3 KiB
C
67 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* UEFI Common Platform Error Record (CPER) support for CXL Section.
|
|
*
|
|
* Copyright (C) 2022 Advanced Micro Devices, Inc.
|
|
*
|
|
* Author: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
|
|
*/
|
|
|
|
#ifndef LINUX_CPER_CXL_H
|
|
#define LINUX_CPER_CXL_H
|
|
|
|
/* CXL Protocol Error Section */
|
|
#define CPER_SEC_CXL_PROT_ERR \
|
|
GUID_INIT(0x80B9EFB4, 0x52B5, 0x4DE3, 0xA7, 0x77, 0x68, 0x78, \
|
|
0x4B, 0x77, 0x10, 0x48)
|
|
|
|
#pragma pack(1)
|
|
|
|
/* Compute Express Link Protocol Error Section, UEFI v2.10 sec N.2.13 */
|
|
struct cper_sec_prot_err {
|
|
u64 valid_bits;
|
|
u8 agent_type;
|
|
u8 reserved[7];
|
|
|
|
/*
|
|
* Except for RCH Downstream Port, all the remaining CXL Agent
|
|
* types are uniquely identified by the PCIe compatible SBDF number.
|
|
*/
|
|
union {
|
|
u64 rcrb_base_addr;
|
|
struct {
|
|
u8 function;
|
|
u8 device;
|
|
u8 bus;
|
|
u16 segment;
|
|
u8 reserved_1[3];
|
|
};
|
|
} agent_addr;
|
|
|
|
struct {
|
|
u16 vendor_id;
|
|
u16 device_id;
|
|
u16 subsystem_vendor_id;
|
|
u16 subsystem_id;
|
|
u8 class_code[2];
|
|
u16 slot;
|
|
u8 reserved_1[4];
|
|
} device_id;
|
|
|
|
struct {
|
|
u32 lower_dw;
|
|
u32 upper_dw;
|
|
} dev_serial_num;
|
|
|
|
u8 capability[60];
|
|
u16 dvsec_len;
|
|
u16 err_len;
|
|
u8 reserved_2[4];
|
|
};
|
|
|
|
#pragma pack()
|
|
|
|
void cper_print_prot_err(const char *pfx, const struct cper_sec_prot_err *prot_err);
|
|
|
|
#endif //__CPER_CXL_
|