[RFC PATCH 1/2] acpi: update madt revisions to ACPI 6.5.next
Haibo Xu
haibo1.xu at intel.com
Mon Aug 28 09:37:03 UTC 2023
Add risc-v madt subtable types which were accepted
in ACPI 6.5.next[1].
[1] https://github.com/riscv-non-isa/riscv-acpi/wiki/ACPI-ASWG-ECR-Process
---
src/acpi/madt/madt.c | 14 +++++++++-
src/lib/include/fwts_acpi.h | 55 +++++++++++++++++++++++++++++++++++++
2 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/src/acpi/madt/madt.c b/src/acpi/madt/madt.c
index 05f93ed8..2b857a08 100644
--- a/src/acpi/madt/madt.c
+++ b/src/acpi/madt/madt.c
@@ -122,7 +122,7 @@
#define SUBTABLE_UNDEFINED 0x00
#define SUBTABLE_VARIABLE 0xff
-#define NUM_SUBTABLE_TYPES 24
+#define NUM_SUBTABLE_TYPES 28
#define MAX_IO_APIC_ID 256 /* IO APIC ID field is 1 byte */
#define SBBR_ACPI_MAJOR_VERSION 6
@@ -250,6 +250,18 @@ static struct acpi_madt_subtable_lengths spec_info[] = {
SUBTABLE_VARIABLE, SUBTABLE_VARIABLE,
SUBTABLE_VARIABLE }
},
+ { /* for ACPI 6.5.next */
+ .major_version = 6,
+ .minor_version = 5,
+ .madt_version = 6,
+ .num_types = 28,
+ .lengths = { 8, 12, 10, 8, 6, 12, 16, SUBTABLE_VARIABLE,
+ 16, 16, 12, 82, 24, 24, 16, 20, 16,
+ SUBTABLE_VARIABLE, SUBTABLE_VARIABLE,
+ SUBTABLE_VARIABLE, SUBTABLE_VARIABLE,
+ SUBTABLE_VARIABLE, SUBTABLE_VARIABLE,
+ SUBTABLE_VARIABLE, 36, 16, 36, 36 }
+ },
{ /* terminator */
.major_version = 0,
.minor_version = 0,
diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h
index eb958b0e..510addb4 100644
--- a/src/lib/include/fwts_acpi.h
+++ b/src/lib/include/fwts_acpi.h
@@ -531,6 +531,10 @@ typedef enum {
FWTS_MADT_MSI_PIC,
FWTS_MADT_BIO_PIC,
FWTS_MADT_LPC_PIC,
+ FWTS_MADT_RINTC,
+ FWTS_MADT_IMSIC,
+ FWTS_MADT_APLIC,
+ FWTS_MADT_PLIC,
FWTS_MADT_RESERVED, /* does not have defined structure */
FWTS_MADT_OEM /* does not have defined structure */
} fwts_acpi_madt_type;
@@ -691,6 +695,57 @@ typedef struct {
uint64_t mail_box_address;
} __attribute__ ((packed)) fwts_acpi_madt_mp_wakeup;
+/* Type 24, FWTS_MADT_RINTC */
+typedef struct {
+ uint8_t version;
+ uint8_t reserved;
+ uint32_t flags;
+ uint64_t hart_id;
+ uint32_t uid;
+ uint32_t ext_intc_id;
+ uint64_t imsic_addr;
+ uint32_t imsic_size;
+} __attribute__ ((packed)) fwts_acpi_madt_rintc;
+
+/* Type 25, FWTS_MADT_IMSIC */
+typedef struct {
+ uint8_t version;
+ uint8_t reserved;
+ uint32_t flags;
+ uint16_t num_ids;
+ uint16_t num_guest_ids;
+ uint8_t guest_index_bits;
+ uint8_t hart_index_bits;
+ uint8_t group_index_bits;
+ uint8_t group_index_shift;
+} __attribute__ ((packed)) fwts_acpi_madt_imsic;
+
+/* Type 26, FWTS_MADT_APLIC */
+typedef struct {
+ uint8_t version;
+ uint8_t id;
+ uint32_t flags;
+ uint8_t hw_id[8];
+ uint16_t num_idcs;
+ uint16_t num_sources;
+ uint32_t gsi_base;
+ uint64_t addr;
+ uint32_t size;
+} __attribute__ ((packed)) fwts_acpi_madt_aplic;
+
+/* Type 27, FWTS_MADT_PLIC */
+typedef struct {
+ uint8_t version;
+ uint8_t id;
+ uint8_t hw_id[8];
+ uint16_t num_irqs;
+ uint16_t max_prio;
+ uint32_t flags;
+ uint32_t size;
+ uint64_t base_addr;
+ uint32_t gsi_base;
+} __attribute__ ((packed)) fwts_acpi_madt_plic;
+
/*
* ACPI TCPA (Trusted Computing Platform Alliance Capabilities Table)
* http://www.kuro5hin.org/story/2002/10/27/16622/530,
--
2.34.1
More information about the fwts-devel
mailing list