diff mbox series

[1/3] ACPICA: iASL: Add definitions for the VIOT table

Message ID 20210316191652.3401335-2-jean-philippe@linaro.org
State New
Headers show
Series Add support for ACPI VIOT | expand

Commit Message

Jean-Philippe Brucker March 16, 2021, 7:16 p.m. UTC
Just here for reference, don't merge!

The actual commits will be pulled from the next ACPICA release.
I squashed the three relevant commits:

ACPICA commit fc4e33319c1ee08f20f5c44853dd8426643f6dfd
ACPICA commit 2197e354fb5dcafaddd2016ffeb0620e5bc3d5e2
ACPICA commit 856a96fdf4b51b2b8da17529df0255e6f51f1b5b

Link: https://github.com/acpica/acpica/commit/fc4e3331
Link: https://github.com/acpica/acpica/commit/2197e354
Link: https://github.com/acpica/acpica/commit/856a96fd
Signed-off-by: Bob Moore <robert.moore@intel.com>

Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>

---
 include/acpi/actbl3.h | 67 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

-- 
2.30.2

Comments

Eric Auger March 18, 2021, 5:52 p.m. UTC | #1
Hi Jean,

On 3/16/21 8:16 PM, Jean-Philippe Brucker wrote:
> Just here for reference, don't merge!

> 

> The actual commits will be pulled from the next ACPICA release.

> I squashed the three relevant commits:

> 

> ACPICA commit fc4e33319c1ee08f20f5c44853dd8426643f6dfd

> ACPICA commit 2197e354fb5dcafaddd2016ffeb0620e5bc3d5e2

> ACPICA commit 856a96fdf4b51b2b8da17529df0255e6f51f1b5b

> 

> Link: https://github.com/acpica/acpica/commit/fc4e3331

> Link: https://github.com/acpica/acpica/commit/2197e354

> Link: https://github.com/acpica/acpica/commit/856a96fd

> Signed-off-by: Bob Moore <robert.moore@intel.com>

> Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>

> ---

>  include/acpi/actbl3.h | 67 +++++++++++++++++++++++++++++++++++++++++++

>  1 file changed, 67 insertions(+)

> 

> diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h

> index df5f4b27f3aa..09d15898e9a8 100644

> --- a/include/acpi/actbl3.h

> +++ b/include/acpi/actbl3.h

> @@ -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 */

> @@ -483,6 +484,72 @@ struct acpi_table_uefi {

>  	u16 data_offset;	/* Offset of remaining data in table */

>  };

>  

> +/*******************************************************************************

> + *

> + * VIOT - Virtual I/O Translation Table

> + *        Version 1

For other tables I see
Conforms to ../.. Shouldn't we have such section too
> + *

> + ******************************************************************************/

> +

> +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,

> +	ACPI_VIOT_RESERVED = 0x05

> +};

> +

> +/* VIOT subtables */

> +

> +struct acpi_viot_pci_range {

> +	struct 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 {

> +	struct acpi_viot_header header;

> +	u32 endpoint;

> +	u64 base_address;

> +	u16 output_node;

> +	u8 reserved[6];

> +};

> +

> +struct acpi_viot_virtio_iommu_pci {

> +	struct acpi_viot_header header;

> +	u16 segment;

> +	u16 bdf;

> +	u8 reserved[8];

> +};

> +

> +struct acpi_viot_virtio_iommu_mmio {

> +	struct acpi_viot_header header;

> +	u8 reserved[4];

> +	u64 base_address;

> +};

> +

>  /*******************************************************************************

>   *

>   * WAET - Windows ACPI Emulated devices Table

> 


Besides
Reviewed-by: Eric Auger <eric.auger@redhat.com>


Thanks

Eric
Jean-Philippe Brucker April 15, 2021, 2:36 p.m. UTC | #2
On Thu, Mar 18, 2021 at 06:52:44PM +0100, Auger Eric wrote:
> Besides

> Reviewed-by: Eric Auger <eric.auger@redhat.com>


Thanks, though this patch comes from ACPICA and has now been merged with
the other ACPICA updates:
https://lore.kernel.org/linux-acpi/20210406213028.718796-1-erik.kaneda@intel.com/

Thanks,
Jean
diff mbox series

Patch

diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h
index df5f4b27f3aa..09d15898e9a8 100644
--- a/include/acpi/actbl3.h
+++ b/include/acpi/actbl3.h
@@ -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 */
@@ -483,6 +484,72 @@  struct acpi_table_uefi {
 	u16 data_offset;	/* Offset of remaining data in table */
 };
 
+/*******************************************************************************
+ *
+ * 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,
+	ACPI_VIOT_RESERVED = 0x05
+};
+
+/* VIOT subtables */
+
+struct acpi_viot_pci_range {
+	struct 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 {
+	struct acpi_viot_header header;
+	u32 endpoint;
+	u64 base_address;
+	u16 output_node;
+	u8 reserved[6];
+};
+
+struct acpi_viot_virtio_iommu_pci {
+	struct acpi_viot_header header;
+	u16 segment;
+	u16 bdf;
+	u8 reserved[8];
+};
+
+struct acpi_viot_virtio_iommu_mmio {
+	struct acpi_viot_header header;
+	u8 reserved[4];
+	u64 base_address;
+};
+
 /*******************************************************************************
  *
  * WAET - Windows ACPI Emulated devices Table