| /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| #ifndef _ASM_POWERPC_RTAS_TYPES_H |
| #define _ASM_POWERPC_RTAS_TYPES_H |
| |
| #include <linux/compiler_attributes.h> |
| |
| typedef __be32 rtas_arg_t; |
| |
| struct rtas_args { |
| __be32 token; |
| __be32 nargs; |
| __be32 nret; |
| rtas_arg_t args[16]; |
| rtas_arg_t *rets; /* Pointer to return values in args[]. */ |
| } __aligned(8); |
| |
| struct rtas_t { |
| unsigned long entry; /* physical address pointer */ |
| unsigned long base; /* physical address pointer */ |
| unsigned long size; |
| struct device_node *dev; /* virtual address pointer */ |
| }; |
| |
| struct rtas_error_log { |
| /* Byte 0 */ |
| u8 byte0; /* Architectural version */ |
| |
| /* Byte 1 */ |
| u8 byte1; |
| /* XXXXXXXX |
| * XXX 3: Severity level of error |
| * XX 2: Degree of recovery |
| * X 1: Extended log present? |
| * XX 2: Reserved |
| */ |
| |
| /* Byte 2 */ |
| u8 byte2; |
| /* XXXXXXXX |
| * XXXX 4: Initiator of event |
| * XXXX 4: Target of failed operation |
| */ |
| u8 byte3; /* General event or error*/ |
| __be32 extended_log_length; /* length in bytes */ |
| unsigned char buffer[1]; /* Start of extended log */ |
| /* Variable length. */ |
| }; |
| |
| /* RTAS general extended event log, Version 6. The extended log starts |
| * from "buffer" field of struct rtas_error_log defined above. |
| */ |
| struct rtas_ext_event_log_v6 { |
| /* Byte 0 */ |
| u8 byte0; |
| /* XXXXXXXX |
| * X 1: Log valid |
| * X 1: Unrecoverable error |
| * X 1: Recoverable (correctable or successfully retried) |
| * X 1: Bypassed unrecoverable error (degraded operation) |
| * X 1: Predictive error |
| * X 1: "New" log (always 1 for data returned from RTAS) |
| * X 1: Big Endian |
| * X 1: Reserved |
| */ |
| |
| /* Byte 1 */ |
| u8 byte1; /* reserved */ |
| |
| /* Byte 2 */ |
| u8 byte2; |
| /* XXXXXXXX |
| * X 1: Set to 1 (indicating log is in PowerPC format) |
| * XXX 3: Reserved |
| * XXXX 4: Log format used for bytes 12-2047 |
| */ |
| |
| /* Byte 3 */ |
| u8 byte3; /* reserved */ |
| /* Byte 4-11 */ |
| u8 reserved[8]; /* reserved */ |
| /* Byte 12-15 */ |
| __be32 company_id; /* Company ID of the company */ |
| /* that defines the format for */ |
| /* the vendor specific log type */ |
| /* Byte 16-end of log */ |
| u8 vendor_log[1]; /* Start of vendor specific log */ |
| /* Variable length. */ |
| }; |
| |
| /* Vendor specific Platform Event Log Format, Version 6, section header */ |
| struct pseries_errorlog { |
| __be16 id; /* 0x00 2-byte ASCII section ID */ |
| __be16 length; /* 0x02 Section length in bytes */ |
| u8 version; /* 0x04 Section version */ |
| u8 subtype; /* 0x05 Section subtype */ |
| __be16 creator_component; /* 0x06 Creator component ID */ |
| u8 data[]; /* 0x08 Start of section data */ |
| }; |
| |
| /* RTAS pseries hotplug errorlog section */ |
| struct pseries_hp_errorlog { |
| u8 resource; |
| u8 action; |
| u8 id_type; |
| u8 reserved; |
| union { |
| __be32 drc_index; |
| __be32 drc_count; |
| struct { __be32 count, index; } ic; |
| char drc_name[1]; |
| } _drc_u; |
| }; |
| |
| #endif /* _ASM_POWERPC_RTAS_TYPES_H */ |