acpi: build_dmar_q35: use acpi_table_begin()/acpi_table_end() instead of build_header()
it replaces error-prone pointer arithmetic for build_header() API, with 2 calls to start and finish table creation, which hides offsets magic from API user. While at it switch to build_append_int_noprefix() to build table entries tables. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Message-Id: <20210924122802.1455362-19-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
e5b6d55a6e
commit
91a6b97569
2 changed files with 47 additions and 106 deletions
|
|
@ -358,74 +358,6 @@ struct AcpiGenericTimerTable {
|
|||
} QEMU_PACKED;
|
||||
typedef struct AcpiGenericTimerTable AcpiGenericTimerTable;
|
||||
|
||||
/* DMAR - DMA Remapping table r2.2 */
|
||||
struct AcpiTableDmar {
|
||||
ACPI_TABLE_HEADER_DEF
|
||||
uint8_t host_address_width; /* Maximum DMA physical addressability */
|
||||
uint8_t flags;
|
||||
uint8_t reserved[10];
|
||||
} QEMU_PACKED;
|
||||
typedef struct AcpiTableDmar AcpiTableDmar;
|
||||
|
||||
/* Masks for Flags field above */
|
||||
#define ACPI_DMAR_INTR_REMAP 1
|
||||
#define ACPI_DMAR_X2APIC_OPT_OUT (1 << 1)
|
||||
|
||||
/* Values for sub-structure type for DMAR */
|
||||
enum {
|
||||
ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, /* DRHD */
|
||||
ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, /* RMRR */
|
||||
ACPI_DMAR_TYPE_ATSR = 2, /* ATSR */
|
||||
ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, /* RHSR */
|
||||
ACPI_DMAR_TYPE_ANDD = 4, /* ANDD */
|
||||
ACPI_DMAR_TYPE_RESERVED = 5 /* Reserved for furture use */
|
||||
};
|
||||
|
||||
/*
|
||||
* Sub-structures for DMAR
|
||||
*/
|
||||
|
||||
/* Device scope structure for DRHD. */
|
||||
struct AcpiDmarDeviceScope {
|
||||
uint8_t entry_type;
|
||||
uint8_t length;
|
||||
uint16_t reserved;
|
||||
uint8_t enumeration_id;
|
||||
uint8_t bus;
|
||||
struct {
|
||||
uint8_t device;
|
||||
uint8_t function;
|
||||
} path[];
|
||||
} QEMU_PACKED;
|
||||
typedef struct AcpiDmarDeviceScope AcpiDmarDeviceScope;
|
||||
|
||||
/* Type 0: Hardware Unit Definition */
|
||||
struct AcpiDmarHardwareUnit {
|
||||
uint16_t type;
|
||||
uint16_t length;
|
||||
uint8_t flags;
|
||||
uint8_t reserved;
|
||||
uint16_t pci_segment; /* The PCI Segment associated with this unit */
|
||||
uint64_t address; /* Base address of remapping hardware register-set */
|
||||
AcpiDmarDeviceScope scope[];
|
||||
} QEMU_PACKED;
|
||||
typedef struct AcpiDmarHardwareUnit AcpiDmarHardwareUnit;
|
||||
|
||||
/* Type 2: Root Port ATS Capability Reporting Structure */
|
||||
struct AcpiDmarRootPortATS {
|
||||
uint16_t type;
|
||||
uint16_t length;
|
||||
uint8_t flags;
|
||||
uint8_t reserved;
|
||||
uint16_t pci_segment;
|
||||
AcpiDmarDeviceScope scope[];
|
||||
} QEMU_PACKED;
|
||||
typedef struct AcpiDmarRootPortATS AcpiDmarRootPortATS;
|
||||
|
||||
/* Masks for Flags field above */
|
||||
#define ACPI_DMAR_INCLUDE_PCI_ALL 1
|
||||
#define ACPI_DMAR_ATSR_ALL_PORTS 1
|
||||
|
||||
/*
|
||||
* Input Output Remapping Table (IORT)
|
||||
* Conforms to "IO Remapping Table System Software on ARM Platforms",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue