ACPICA: iASL: Add definitions for the VIOT table
authorJean-Philippe Brucker <jean-philippe@linaro.org>
Tue, 6 Apr 2021 21:30:19 +0000 (14:30 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 7 Apr 2021 17:09:00 +0000 (19:09 +0200)
ACPICA commit fc4e33319c1ee08f20f5c44853dd8426643f6dfd

Add definitions for the VIOT table and its subtables.

Link: https://github.com/acpica/acpica/commit/fc4e3331
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Erik Kaneda <erik.kaneda@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
include/acpi/actbl3.h

index bf61a70..e9bd7ce 100644 (file)
@@ -33,6 +33,7 @@
 #define ACPI_SIG_TCPA           "TCPA" /* Trusted Computing Platform Alliance table */
 #define ACPI_SIG_TPM2           "TPM2" /* Trusted Platform Module 2.0 H/W interface table */
 #define ACPI_SIG_UEFI           "UEFI" /* Uefi Boot Optimization Table */
+#define ACPI_SIG_VIOT           "VIOT" /* Virtual I/O Translation Table */
 #define ACPI_SIG_WAET           "WAET" /* Windows ACPI Emulated devices Table */
 #define ACPI_SIG_WDAT           "WDAT" /* Watchdog Action Table */
 #define ACPI_SIG_WDDT           "WDDT" /* Watchdog Timer Description Table */
@@ -486,6 +487,71 @@ struct acpi_table_uefi {
 
 /*******************************************************************************
  *
+ * VIOT - Virtual I/O Translation Table
+ *        Version 1
+ *
+ ******************************************************************************/
+
+struct acpi_table_viot {
+       struct acpi_table_header header;        /* Common ACPI table header */
+       u16 node_count;
+       u16 node_offset;
+       u8 reserved[8];
+};
+
+/* VIOT subtable header */
+
+struct acpi_viot_header {
+       u8 type;
+       u8 reserved;
+       u16 length;
+};
+
+/* Values for Type field above */
+
+enum acpi_viot_node_type {
+       ACPI_VIOT_NODE_PCI_RANGE = 0x01,
+       ACPI_VIOT_NODE_MMIO = 0x02,
+       ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI = 0x03,
+       ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO = 0x04,
+};
+
+/* VIOT subtables */
+
+struct acpi_viot_pci_range {
+       ACPI_VIOT_HEADER header;
+       u32 endpoint_start;
+       u16 segment_start;
+       u16 segment_end;
+       u16 bdf_start;
+       u16 bdf_end;
+       u16 output_node;
+       u8 reserved[6];
+};
+
+struct acpi_viot_mmio {
+       ACPI_VIOT_HEADER header;
+       u32 endpoint;
+       u64 base_address;
+       u16 output_node;
+       u8 reserved[6];
+};
+
+struct acpi_viot_virtio_iommu_pci {
+       ACPI_VIOT_HEADER header;
+       u16 segment;
+       u16 bdf;
+       u8 reserved[8];
+};
+
+struct acpi_viot_virtio_iommu_mmio {
+       ACPI_VIOT_HEADER header;
+       u8 reserved[4];
+       u64 base_address;
+};
+
+/*******************************************************************************
+ *
  * WAET - Windows ACPI Emulated devices Table
  *        Version 1
  *