Message ID | 20210316191652.3401335-2-jean-philippe@linaro.org |
---|---|
State | New |
Headers | show |
Series | Add support for ACPI VIOT | expand |
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
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 --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