From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Linux ACPI <linux-acpi@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Bob Moore <robert.moore@intel.com>,
Saket Dumbre <saket.dumbre@intel.com>
Subject: [PATCH v1 07/19] ACPICA: actbl2: Add definitions for RIMT
Date: Fri, 25 Apr 2025 21:24:41 +0200 [thread overview]
Message-ID: <10665648.nUPlyArG6x@rjwysocki.net> (raw)
In-Reply-To: <12671029.O9o76ZdvQC@rjwysocki.net>
From: Sunil V L <sunilvl@ventanamicro.com>
ACPICA commit 73c32bc89cad64ab19c1231a202361e917e6823c
RISC-V IO Mapping Table (RIMT) is a new static table defined for RISC-V
to communicate IOMMU information to the OS. The specification for RIMT
is available at [1]. Add structure definitions for RIMT.
[1] - https://github.com/riscv-non-isa/riscv-acpi-rimt
Link: https://github.com/acpica/acpica/commit/73c32bc8
Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
include/acpi/actbl2.h | 83 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+)
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index 4fd5e8b2e199..0ae9d9915d58 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -51,6 +51,7 @@
#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_RIMT "RIMT" /* RISC-V IO Mapping Table */
#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
#define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */
#define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */
@@ -3042,6 +3043,88 @@ struct acpi_rhct_hart_info {
u32 uid; /* ACPI processor UID */
};
+/*******************************************************************************
+ *
+ * RIMT - RISC-V IO Remapping Table
+ *
+ * https://github.com/riscv-non-isa/riscv-acpi-rimt
+ *
+ ******************************************************************************/
+
+struct acpi_table_rimt {
+ struct acpi_table_header header; /* Common ACPI table header */
+ u32 num_nodes; /* Number of RIMT Nodes */
+ u32 node_offset; /* Offset to RIMT Node Array */
+ u32 reserved;
+};
+
+struct acpi_rimt_node {
+ u8 type;
+ u8 revision;
+ u16 length;
+ u16 reserved;
+ u16 id;
+ char node_data[];
+};
+
+enum acpi_rimt_node_type {
+ ACPI_RIMT_NODE_TYPE_IOMMU = 0x0,
+ ACPI_RIMT_NODE_TYPE_PCIE_ROOT_COMPLEX = 0x1,
+ ACPI_RIMT_NODE_TYPE_PLAT_DEVICE = 0x2,
+};
+
+struct acpi_rimt_iommu {
+ u8 hardware_id[8]; /* Hardware ID */
+ u64 base_address; /* Base Address */
+ u32 flags; /* Flags */
+ u32 proximity_domain; /* Proximity Domain */
+ u16 pcie_segment_number; /* PCIe Segment number */
+ u16 pcie_bdf; /* PCIe B/D/F */
+ u16 num_interrupt_wires; /* Number of interrupt wires */
+ u16 interrupt_wire_offset; /* Interrupt wire array offset */
+ u64 interrupt_wire[]; /* Interrupt wire array */
+};
+
+/* IOMMU Node Flags */
+#define ACPI_RIMT_IOMMU_FLAGS_PCIE (1)
+#define ACPI_RIMT_IOMMU_FLAGS_PXM_VALID (1 << 1)
+
+/* Interrupt Wire Structure */
+struct acpi_rimt_iommu_wire_gsi {
+ u32 irq_num; /* Interrupt Number */
+ u32 flags; /* Flags */
+};
+
+/* Interrupt Wire Flags */
+#define ACPI_RIMT_GSI_LEVEL_TRIGGERRED (1)
+#define ACPI_RIMT_GSI_ACTIVE_HIGH (1 << 1)
+
+struct acpi_rimt_id_mapping {
+ u32 source_id_base; /* Source ID Base */
+ u32 num_ids; /* Number of IDs */
+ u32 dest_id_base; /* Destination Device ID Base */
+ u32 dest_offset; /* Destination IOMMU Offset */
+ u32 flags; /* Flags */
+};
+
+struct acpi_rimt_pcie_rc {
+ u32 flags; /* Flags */
+ u16 reserved; /* Reserved */
+ u16 pcie_segment_number; /* PCIe Segment number */
+ u16 id_mapping_offset; /* ID mapping array offset */
+ u16 num_id_mappings; /* Number of ID mappings */
+};
+
+/* PCIe Root Complex Node Flags */
+#define ACPI_RIMT_PCIE_ATS_SUPPORTED (1)
+#define ACPI_RIMT_PCIE_PRI_SUPPORTED (1 << 1)
+
+struct acpi_rimt_platform_device {
+ u16 id_mapping_offset; /* ID Mapping array offset */
+ u16 num_id_mappings; /* Number of ID mappings */
+ char device_name[]; /* Device Object Name */
+};
+
/*******************************************************************************
*
* SBST - Smart Battery Specification Table
--
2.43.0
next prev parent reply other threads:[~2025-04-25 19:34 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-25 19:19 [PATCH v1 00/19] ACPICA: ACPICA 20250404 Rafael J. Wysocki
2025-04-25 19:20 ` [PATCH v1 01/19] ACPICA: Drop stale comment about the header file content Rafael J. Wysocki
2025-04-25 19:21 ` [PATCH v1 02/19] ACPICA: Apply pack(1) to union aml_resource Rafael J. Wysocki
2025-04-30 18:48 ` Tamir Duberstein
2025-04-30 18:48 ` [PATCH 0/0] Cover letter only Tamir Duberstein
2025-04-30 18:52 ` Tamir Duberstein
2025-04-25 19:21 ` [PATCH v1 03/19] ACPICA: utilities: Fix overflow check in vsnprintf() Rafael J. Wysocki
2025-05-09 21:41 ` gldrk
2025-04-25 19:22 ` [PATCH v1 04/19] ACPICA: Interpret SIDP structures in DMAR Rafael J. Wysocki
2025-04-25 19:23 ` [PATCH v1 05/19] ACPICA: infrastructure: Add new header and ACPI_DMT_BUF26 types Rafael J. Wysocki
2025-04-25 19:24 ` [PATCH v1 06/19] ACPICA: actbl2.h: MRRM: Add typedef and other definitions Rafael J. Wysocki
2025-04-25 19:24 ` Rafael J. Wysocki [this message]
2025-04-25 19:25 ` [PATCH v1 08/19] ACPICA: MRRM: Some cleanups Rafael J. Wysocki
2025-04-25 19:26 ` [PATCH v1 09/19] ACPICA: Utilities: Fix spelling mistake "Incremement" -> "Increment" Rafael J. Wysocki
2025-04-25 19:26 ` [PATCH v1 10/19] ACPICA: infrastructure: Add new DMT_BUF types and shorten a long name Rafael J. Wysocki
2025-04-25 19:27 ` [PATCH v1 11/19] ACPICA: actbl2.h: ERDT: Add typedef and other definitions Rafael J. Wysocki
2025-04-25 19:27 ` [PATCH v1 12/19] ACPICA: Introduce ACPI_NONSTRING Rafael J. Wysocki
2025-04-30 18:35 ` Kees Cook
2025-04-30 18:49 ` Rafael J. Wysocki
2025-04-25 19:28 ` [PATCH v1 13/19] ACPICA: Apply ACPI_NONSTRING Rafael J. Wysocki
2025-04-25 19:29 ` [PATCH v1 14/19] ACPICA: actbl2.h: ACPI 6.5: RAS2: Rename structure and field names of the RAS2 table Rafael J. Wysocki
2025-04-25 19:29 ` [PATCH v1 15/19] ACPICA: Adjust the position of code lines Rafael J. Wysocki
2025-04-25 19:30 ` [PATCH v1 16/19] ACPICA: Avoid sequence overread in call to strncmp() Rafael J. Wysocki
2025-04-25 19:31 ` [PATCH v1 17/19] ACPICA: Apply ACPI_NONSTRING in more places Rafael J. Wysocki
2025-04-25 19:32 ` [PATCH v1 18/19] ACPICA: Replace strncpy() with memcpy() Rafael J. Wysocki
2025-05-07 5:42 ` kernel test robot
2025-04-25 19:33 ` [PATCH v1 19/19] ACPICA: Logfile: Changes for version 20250404 Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=10665648.nUPlyArG6x@rjwysocki.net \
--to=rjw@rjwysocki.net \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robert.moore@intel.com \
--cc=saket.dumbre@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®