On Thu, 15 Feb 2024 19:14:52 +0800 <shiju.jose@xxxxxxxxxx> wrote: > From: Shiju Jose <shiju.jose@xxxxxxxxxx> > > Add support for ACPI RAS2 feature table(RAS2) defined in the ACPI 6.5 > Specification & upwards revision, section 5.2.21. > > The RAS2 table provides interfaces for platform RAS features. RAS2 offers > the same services as RASF, but is more scalable than the latter. > RAS2 supports independent RAS controls and capabilities for a given RAS > feature for multiple instances of the same component in a given system. > The platform can support either RAS2 or RASF but not both. > > Link: https://github.com/acpica/acpica/pull/899 It merged in October. Rafael, can we get this into the kernel version so we don't have a dependency in this patch set? Thanks, Jonathan > Signed-off-by: Shiju Jose <shiju.jose@xxxxxxxxxx> > --- > include/acpi/actbl2.h | 137 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 137 insertions(+) > > diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h > index 9775384d61c6..15c271657f9f 100644 > --- a/include/acpi/actbl2.h > +++ b/include/acpi/actbl2.h > @@ -47,6 +47,7 @@ > #define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */ > #define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */ > #define ACPI_SIG_RASF "RASF" /* RAS Feature table */ > +#define ACPI_SIG_RAS2 "RAS2" /* RAS2 Feature table */ > #define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */ > #define ACPI_SIG_RHCT "RHCT" /* RISC-V Hart Capabilities Table */ > #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ > @@ -2751,6 +2752,142 @@ enum acpi_rasf_status { > #define ACPI_RASF_ERROR (1<<2) > #define ACPI_RASF_STATUS (0x1F<<3) > > +/******************************************************************************* > + * > + * RAS2 - RAS2 Feature Table (ACPI 6.5) > + * Version 2 > + * > + * > + ******************************************************************************/ > + > +struct acpi_table_ras2 { > + struct acpi_table_header header; /* Common ACPI table header */ > + u16 reserved; > + u16 num_pcc_descs; > +}; > + > +/* > + * RAS2 Platform Communication Channel Descriptor > + */ > + > +struct acpi_ras2_pcc_desc { > + u8 channel_id; > + u16 reserved; > + u8 feature_type; > + u32 instance; > +}; > + > +/* > + * RAS2 Platform Communication Channel Shared Memory Region > + */ > + > +struct acpi_ras2_shared_memory { > + u32 signature; > + u16 command; > + u16 status; > + u16 version; > + u8 features[16]; > + u8 set_capabilities[16]; > + u16 num_parameter_blocks; > + u32 set_capabilities_status; > +}; > + > +/* RAS2 Parameter Block Structure Header */ > + > +struct acpi_ras2_parameter_block { > + u16 type; > + u16 version; > + u16 length; > +}; > + > +/* > + * RAS2 Parameter Block Structure for PATROL_SCRUB > + */ > + > +struct acpi_ras2_patrol_scrub_parameter { > + struct acpi_ras2_parameter_block header; > + u16 patrol_scrub_command; > + u64 requested_address_range[2]; > + u64 actual_address_range[2]; > + u32 flags; > + u32 scrub_params_out; > + u32 scrub_params_in; > +}; > + > +/* Masks for Flags field above */ > + > +#define ACPI_RAS2_SCRUBBER_RUNNING 1 > + > +/* > + * RAS2 Parameter Block Structure for LA2PA_TRANSLATION > + */ > + > +struct acpi_ras2_la2pa_translation_parameter { > + struct acpi_ras2_parameter_block header; > + u16 addr_translation_command; > + u64 sub_instance_id; > + u64 logical_address; > + u64 physical_address; > + u32 status; > +}; > + > +/* Channel Commands */ > + > +enum acpi_ras2_commands { > + ACPI_RAS2_EXECUTE_RAS2_COMMAND = 1 > +}; > + > +/* Platform RAS2 Features */ > + > +enum acpi_ras2_features { > + ACPI_RAS2_PATROL_SCRUB_SUPPORTED = 0, > + ACPI_RAS2_LA2PA_TRANSLATION = 1 > +}; > + > +/* RAS2 Patrol Scrub Commands */ > + > +enum acpi_ras2_patrol_scrub_commands { > + ACPI_RAS2_GET_PATROL_PARAMETERS = 1, > + ACPI_RAS2_START_PATROL_SCRUBBER = 2, > + ACPI_RAS2_STOP_PATROL_SCRUBBER = 3 > +}; > + > +/* RAS2 LA2PA Translation Commands */ > + > +enum acpi_ras2_la2pa_translation_commands { > + ACPI_RAS2_GET_LA2PA_TRANSLATION = 1 > +}; > + > +/* RAS2 LA2PA Translation Status values */ > + > +enum acpi_ras2_la2pa_translation_status { > + ACPI_RAS2_LA2PA_TRANSLATION_SUCCESS = 0, > + ACPI_RAS2_LA2PA_TRANSLATION_FAIL = 1 > +}; > + > +/* Channel Command flags */ > + > +#define ACPI_RAS2_GENERATE_SCI (1<<15) > + > +/* Status values */ > + > +enum acpi_ras2_status { > + ACPI_RAS2_SUCCESS = 0, > + ACPI_RAS2_NOT_VALID = 1, > + ACPI_RAS2_NOT_SUPPORTED = 2, > + ACPI_RAS2_BUSY = 3, > + ACPI_RAS2_FAILED = 4, > + ACPI_RAS2_ABORTED = 5, > + ACPI_RAS2_INVALID_DATA = 6 > +}; > + > +/* Status flags */ > + > +#define ACPI_RAS2_COMMAND_COMPLETE (1) > +#define ACPI_RAS2_SCI_DOORBELL (1<<1) > +#define ACPI_RAS2_ERROR (1<<2) > +#define ACPI_RAS2_STATUS (0x1F<<3) > + > /******************************************************************************* > * > * RGRT - Regulatory Graphics Resource Table