* [PATCH v2 0/3] hw/arm/virt_acpi_build: Upgrate the IORT table up to revision E.b @ 2021-10-05 8:38 Eric Auger 2021-10-05 8:38 ` [PATCH v2 1/3] tests/acpi: Get prepared for IORT E.b revision upgrade Eric Auger ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Eric Auger @ 2021-10-05 8:38 UTC (permalink / raw) To: eric.auger.pro, eric.auger, imammedo, philmd, peter.maydell, shannon.zhaosl, qemu-arm, qemu-devel, drjones Cc: gshan This series upgrades the ACPI IORT table up to the E.b specification revision. One of the goal of this upgrade is to allow the addition of RMR nodes along with the SMMUv3. It applies on top of Igor's [PATCH v4 00/35] acpi: refactor error prone build_header() and packed structures usage in ACPI tables The latest IORT specification (ARM DEN 0049E.b) can be found at IO Remapping Table - Platform Design Document https://developer.arm.com/documentation/den0049/latest/ This series and its dependency can be found at https://github.com/eauger/qemu.git branch: igor_acpi_refactoring_v4_dbg2_v3_rmr_v2 History: v1 -> v2: - fix Revision value in ITS and SMMUv3 nodes (Phil) - Increment an identifier (Phil) Eric Auger (3): tests/acpi: Get prepared for IORT E.b revision upgrade hw/arm/virt-acpi-build: IORT upgrade up to revision E.b tests/acpi: Generate reference blob for IORT rev E.b hw/arm/virt-acpi-build.c | 48 ++++++++++++++++++------------ tests/data/acpi/virt/IORT | Bin 124 -> 128 bytes tests/data/acpi/virt/IORT.memhp | Bin 124 -> 128 bytes tests/data/acpi/virt/IORT.numamem | Bin 124 -> 128 bytes tests/data/acpi/virt/IORT.pxb | Bin 124 -> 128 bytes 5 files changed, 29 insertions(+), 19 deletions(-) -- 2.26.3 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/3] tests/acpi: Get prepared for IORT E.b revision upgrade 2021-10-05 8:38 [PATCH v2 0/3] hw/arm/virt_acpi_build: Upgrate the IORT table up to revision E.b Eric Auger @ 2021-10-05 8:38 ` Eric Auger 2021-10-05 8:38 ` [PATCH v2 2/3] hw/arm/virt-acpi-build: IORT upgrade up to revision E.b Eric Auger 2021-10-05 8:38 ` [PATCH v2 3/3] tests/acpi: Generate reference blob for IORT rev E.b Eric Auger 2 siblings, 0 replies; 7+ messages in thread From: Eric Auger @ 2021-10-05 8:38 UTC (permalink / raw) To: eric.auger.pro, eric.auger, imammedo, philmd, peter.maydell, shannon.zhaosl, qemu-arm, qemu-devel, drjones Cc: gshan Ignore IORT till reference blob for E.b spec revision gets added. Signed-off-by: Eric Auger <eric.auger@redhat.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h index dfb8523c8b..9a5a923d6b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,2 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/virt/IORT", -- 2.26.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] hw/arm/virt-acpi-build: IORT upgrade up to revision E.b 2021-10-05 8:38 [PATCH v2 0/3] hw/arm/virt_acpi_build: Upgrate the IORT table up to revision E.b Eric Auger 2021-10-05 8:38 ` [PATCH v2 1/3] tests/acpi: Get prepared for IORT E.b revision upgrade Eric Auger @ 2021-10-05 8:38 ` Eric Auger 2021-10-11 14:38 ` Igor Mammedov 2021-10-13 15:26 ` Jean-Philippe Brucker 2021-10-05 8:38 ` [PATCH v2 3/3] tests/acpi: Generate reference blob for IORT rev E.b Eric Auger 2 siblings, 2 replies; 7+ messages in thread From: Eric Auger @ 2021-10-05 8:38 UTC (permalink / raw) To: eric.auger.pro, eric.auger, imammedo, philmd, peter.maydell, shannon.zhaosl, qemu-arm, qemu-devel, drjones Cc: gshan Upgrade the IORT table from B to E.b specification revision (ARM DEN 0049E.b). Signed-off-by: Eric Auger <eric.auger@redhat.com> --- v1 -> v2: - Fix Revision value for ITS node and SMMUv3 node - increment an identifier --- hw/arm/virt-acpi-build.c | 48 ++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 257d0fee17..789bac3134 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -241,19 +241,20 @@ static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineState *vms) #endif #define ID_MAPPING_ENTRY_SIZE 20 -#define SMMU_V3_ENTRY_SIZE 60 -#define ROOT_COMPLEX_ENTRY_SIZE 32 +#define SMMU_V3_ENTRY_SIZE 68 +#define ROOT_COMPLEX_ENTRY_SIZE 36 #define IORT_NODE_OFFSET 48 static void build_iort_id_mapping(GArray *table_data, uint32_t input_base, uint32_t id_count, uint32_t out_ref) { - /* Identity RID mapping covering the whole input RID range */ + /* Table 4 ID mapping format */ build_append_int_noprefix(table_data, input_base, 4); /* Input base */ build_append_int_noprefix(table_data, id_count, 4); /* Number of IDs */ build_append_int_noprefix(table_data, input_base, 4); /* Output base */ build_append_int_noprefix(table_data, out_ref, 4); /* Output Reference */ - build_append_int_noprefix(table_data, 0, 4); /* Flags */ + /* Flags */ + build_append_int_noprefix(table_data, 0 /* Single mapping */, 4); } struct AcpiIortIdMapping { @@ -298,7 +299,7 @@ static int iort_idmap_compare(gconstpointer a, gconstpointer b) /* * Input Output Remapping Table (IORT) * Conforms to "IO Remapping Table System Software on ARM Platforms", - * Document number: ARM DEN 0049B, October 2015 + * Document number: ARM DEN 0049E, Feb 2021 */ static void build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) @@ -307,10 +308,11 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) const uint32_t iort_node_offset = IORT_NODE_OFFSET; size_t node_size, smmu_offset = 0; AcpiIortIdMapping *idmap; + uint32_t id = 0; GArray *smmu_idmaps = g_array_new(false, true, sizeof(AcpiIortIdMapping)); GArray *its_idmaps = g_array_new(false, true, sizeof(AcpiIortIdMapping)); - AcpiTable table = { .sig = "IORT", .rev = 0, .oem_id = vms->oem_id, + AcpiTable table = { .sig = "IORT", .rev = 3, .oem_id = vms->oem_id, .oem_table_id = vms->oem_table_id }; /* Table 2 The IORT */ acpi_table_begin(&table, table_data); @@ -358,12 +360,12 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) build_append_int_noprefix(table_data, IORT_NODE_OFFSET, 4); build_append_int_noprefix(table_data, 0, 4); /* Reserved */ - /* 3.1.1.3 ITS group node */ + /* Table 12 ITS Group Format */ build_append_int_noprefix(table_data, 0 /* ITS Group */, 1); /* Type */ node_size = 20 /* fixed header size */ + 4 /* 1 GIC ITS Identifier */; build_append_int_noprefix(table_data, node_size, 2); /* Length */ - build_append_int_noprefix(table_data, 0, 1); /* Revision */ - build_append_int_noprefix(table_data, 0, 4); /* Reserved */ + build_append_int_noprefix(table_data, 1, 1); /* Revision */ + build_append_int_noprefix(table_data, id++, 4); /* Identifier */ build_append_int_noprefix(table_data, 0, 4); /* Number of ID mappings */ build_append_int_noprefix(table_data, 0, 4); /* Reference to ID Array */ build_append_int_noprefix(table_data, 1, 4); /* Number of ITSs */ @@ -374,19 +376,19 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) int irq = vms->irqmap[VIRT_SMMU] + ARM_SPI_BASE; smmu_offset = table_data->len - table.table_offset; - /* 3.1.1.2 SMMUv3 */ + /* Table 9 SMMUv3 Format */ build_append_int_noprefix(table_data, 4 /* SMMUv3 */, 1); /* Type */ node_size = SMMU_V3_ENTRY_SIZE + ID_MAPPING_ENTRY_SIZE; build_append_int_noprefix(table_data, node_size, 2); /* Length */ - build_append_int_noprefix(table_data, 0, 1); /* Revision */ - build_append_int_noprefix(table_data, 0, 4); /* Reserved */ + build_append_int_noprefix(table_data, 4, 1); /* Revision */ + build_append_int_noprefix(table_data, id++, 4); /* Identifier */ build_append_int_noprefix(table_data, 1, 4); /* Number of ID mappings */ /* Reference to ID Array */ build_append_int_noprefix(table_data, SMMU_V3_ENTRY_SIZE, 4); /* Base address */ build_append_int_noprefix(table_data, vms->memmap[VIRT_SMMU].base, 8); /* Flags */ - build_append_int_noprefix(table_data, 1 /* COHACC OverrideNote */, 4); + build_append_int_noprefix(table_data, 1 /* COHACC Override */, 4); build_append_int_noprefix(table_data, 0, 4); /* Reserved */ build_append_int_noprefix(table_data, 0, 8); /* VATOS address */ /* Model */ @@ -395,35 +397,43 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) build_append_int_noprefix(table_data, irq + 1, 4); /* PRI */ build_append_int_noprefix(table_data, irq + 3, 4); /* GERR */ build_append_int_noprefix(table_data, irq + 2, 4); /* Sync */ + build_append_int_noprefix(table_data, 0, 4); /* Proximity domain */ + /* DeviceID mapping index (ignored since interrupts are GSIV based) */ + build_append_int_noprefix(table_data, 0, 4); /* output IORT node is the ITS group node (the first node) */ build_iort_id_mapping(table_data, 0, 0xFFFF, IORT_NODE_OFFSET); } - /* Table 16 Root Complex Node */ + /* Table 17 Root Complex Node */ build_append_int_noprefix(table_data, 2 /* Root complex */, 1); /* Type */ node_size = ROOT_COMPLEX_ENTRY_SIZE + ID_MAPPING_ENTRY_SIZE * rc_mapping_count; build_append_int_noprefix(table_data, node_size, 2); /* Length */ - build_append_int_noprefix(table_data, 0, 1); /* Revision */ - build_append_int_noprefix(table_data, 0, 4); /* Reserved */ + build_append_int_noprefix(table_data, 3, 1); /* Revision */ + build_append_int_noprefix(table_data, id++, 4); /* Identifier */ /* Number of ID mappings */ build_append_int_noprefix(table_data, rc_mapping_count, 4); /* Reference to ID Array */ build_append_int_noprefix(table_data, ROOT_COMPLEX_ENTRY_SIZE, 4); - /* Table 13 Memory access properties */ + /* Table 14 Memory access properties */ /* CCA: Cache Coherent Attribute */ build_append_int_noprefix(table_data, 1 /* fully coherent */, 4); build_append_int_noprefix(table_data, 0, 1); /* AH: Note Allocation Hints */ build_append_int_noprefix(table_data, 0, 2); /* Reserved */ - /* MAF: Note Memory Access Flags */ - build_append_int_noprefix(table_data, 0x3 /* CCA = CPM = DCAS = 1 */, 1); + /* Table 15 Memory Access Flags */ + build_append_int_noprefix(table_data, 0x3 /* CCA = CPM = DACS = 1 */, 1); build_append_int_noprefix(table_data, 0, 4); /* ATS Attribute */ /* MCFG pci_segment */ build_append_int_noprefix(table_data, 0, 4); /* PCI Segment number */ + /* Memory address size limit */ + build_append_int_noprefix(table_data, 64, 1); + + build_append_int_noprefix(table_data, 0, 3); /* Reserved */ + /* Output Reference */ if (vms->iommu == VIRT_IOMMU_SMMUV3) { AcpiIortIdMapping *range; -- 2.26.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] hw/arm/virt-acpi-build: IORT upgrade up to revision E.b 2021-10-05 8:38 ` [PATCH v2 2/3] hw/arm/virt-acpi-build: IORT upgrade up to revision E.b Eric Auger @ 2021-10-11 14:38 ` Igor Mammedov 2021-10-13 15:26 ` Jean-Philippe Brucker 1 sibling, 0 replies; 7+ messages in thread From: Igor Mammedov @ 2021-10-11 14:38 UTC (permalink / raw) To: Eric Auger Cc: peter.maydell, drjones, gshan, qemu-devel, shannon.zhaosl, qemu-arm, philmd, eric.auger.pro On Tue, 5 Oct 2021 10:38:04 +0200 Eric Auger <eric.auger@redhat.com> wrote: > Upgrade the IORT table from B to E.b specification > revision (ARM DEN 0049E.b). > > Signed-off-by: Eric Auger <eric.auger@redhat.com> with nit below fixed: Reviewed-by: Igor Mammedov <imammedo@redhat.com> > > --- > > v1 -> v2: > - Fix Revision value for ITS node and SMMUv3 node > - increment an identifier > --- > hw/arm/virt-acpi-build.c | 48 ++++++++++++++++++++++++---------------- > 1 file changed, 29 insertions(+), 19 deletions(-) > > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c > index 257d0fee17..789bac3134 100644 > --- a/hw/arm/virt-acpi-build.c > +++ b/hw/arm/virt-acpi-build.c > @@ -241,19 +241,20 @@ static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineState *vms) > #endif > > #define ID_MAPPING_ENTRY_SIZE 20 > -#define SMMU_V3_ENTRY_SIZE 60 > -#define ROOT_COMPLEX_ENTRY_SIZE 32 > +#define SMMU_V3_ENTRY_SIZE 68 > +#define ROOT_COMPLEX_ENTRY_SIZE 36 > #define IORT_NODE_OFFSET 48 > > static void build_iort_id_mapping(GArray *table_data, uint32_t input_base, > uint32_t id_count, uint32_t out_ref) > { > - /* Identity RID mapping covering the whole input RID range */ > + /* Table 4 ID mapping format */ > build_append_int_noprefix(table_data, input_base, 4); /* Input base */ > build_append_int_noprefix(table_data, id_count, 4); /* Number of IDs */ > build_append_int_noprefix(table_data, input_base, 4); /* Output base */ > build_append_int_noprefix(table_data, out_ref, 4); /* Output Reference */ > - build_append_int_noprefix(table_data, 0, 4); /* Flags */ > + /* Flags */ > + build_append_int_noprefix(table_data, 0 /* Single mapping */, 4); > } > > struct AcpiIortIdMapping { > @@ -298,7 +299,7 @@ static int iort_idmap_compare(gconstpointer a, gconstpointer b) > /* > * Input Output Remapping Table (IORT) > * Conforms to "IO Remapping Table System Software on ARM Platforms", > - * Document number: ARM DEN 0049B, October 2015 > + * Document number: ARM DEN 0049E, Feb 2021 > */ > static void > build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) > @@ -307,10 +308,11 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) > const uint32_t iort_node_offset = IORT_NODE_OFFSET; > size_t node_size, smmu_offset = 0; > AcpiIortIdMapping *idmap; > + uint32_t id = 0; It's probably worth mentioning in commit message that IDs are generated in sequential order, to make sure that different nodes unique but otherwise IDs are not referenced/used. If we were to actually use IDs, I'd prefer explicit naming for static nodes (i.e. something like SMMUv3_ID = #). > GArray *smmu_idmaps = g_array_new(false, true, sizeof(AcpiIortIdMapping)); > GArray *its_idmaps = g_array_new(false, true, sizeof(AcpiIortIdMapping)); > > - AcpiTable table = { .sig = "IORT", .rev = 0, .oem_id = vms->oem_id, > + AcpiTable table = { .sig = "IORT", .rev = 3, .oem_id = vms->oem_id, > .oem_table_id = vms->oem_table_id }; > /* Table 2 The IORT */ > acpi_table_begin(&table, table_data); > @@ -358,12 +360,12 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) > build_append_int_noprefix(table_data, IORT_NODE_OFFSET, 4); > build_append_int_noprefix(table_data, 0, 4); /* Reserved */ > > - /* 3.1.1.3 ITS group node */ > + /* Table 12 ITS Group Format */ > build_append_int_noprefix(table_data, 0 /* ITS Group */, 1); /* Type */ > node_size = 20 /* fixed header size */ + 4 /* 1 GIC ITS Identifier */; > build_append_int_noprefix(table_data, node_size, 2); /* Length */ > - build_append_int_noprefix(table_data, 0, 1); /* Revision */ > - build_append_int_noprefix(table_data, 0, 4); /* Reserved */ > + build_append_int_noprefix(table_data, 1, 1); /* Revision */ > + build_append_int_noprefix(table_data, id++, 4); /* Identifier */ > build_append_int_noprefix(table_data, 0, 4); /* Number of ID mappings */ > build_append_int_noprefix(table_data, 0, 4); /* Reference to ID Array */ > build_append_int_noprefix(table_data, 1, 4); /* Number of ITSs */ > @@ -374,19 +376,19 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) > int irq = vms->irqmap[VIRT_SMMU] + ARM_SPI_BASE; > > smmu_offset = table_data->len - table.table_offset; > - /* 3.1.1.2 SMMUv3 */ > + /* Table 9 SMMUv3 Format */ > build_append_int_noprefix(table_data, 4 /* SMMUv3 */, 1); /* Type */ > node_size = SMMU_V3_ENTRY_SIZE + ID_MAPPING_ENTRY_SIZE; > build_append_int_noprefix(table_data, node_size, 2); /* Length */ > - build_append_int_noprefix(table_data, 0, 1); /* Revision */ > - build_append_int_noprefix(table_data, 0, 4); /* Reserved */ > + build_append_int_noprefix(table_data, 4, 1); /* Revision */ > + build_append_int_noprefix(table_data, id++, 4); /* Identifier */ > build_append_int_noprefix(table_data, 1, 4); /* Number of ID mappings */ > /* Reference to ID Array */ > build_append_int_noprefix(table_data, SMMU_V3_ENTRY_SIZE, 4); > /* Base address */ > build_append_int_noprefix(table_data, vms->memmap[VIRT_SMMU].base, 8); > /* Flags */ > - build_append_int_noprefix(table_data, 1 /* COHACC OverrideNote */, 4); > + build_append_int_noprefix(table_data, 1 /* COHACC Override */, 4); > build_append_int_noprefix(table_data, 0, 4); /* Reserved */ > build_append_int_noprefix(table_data, 0, 8); /* VATOS address */ > /* Model */ > @@ -395,35 +397,43 @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) > build_append_int_noprefix(table_data, irq + 1, 4); /* PRI */ > build_append_int_noprefix(table_data, irq + 3, 4); /* GERR */ > build_append_int_noprefix(table_data, irq + 2, 4); /* Sync */ > + build_append_int_noprefix(table_data, 0, 4); /* Proximity domain */ > + /* DeviceID mapping index (ignored since interrupts are GSIV based) */ > + build_append_int_noprefix(table_data, 0, 4); > > /* output IORT node is the ITS group node (the first node) */ > build_iort_id_mapping(table_data, 0, 0xFFFF, IORT_NODE_OFFSET); > } > > - /* Table 16 Root Complex Node */ > + /* Table 17 Root Complex Node */ > build_append_int_noprefix(table_data, 2 /* Root complex */, 1); /* Type */ > node_size = ROOT_COMPLEX_ENTRY_SIZE + > ID_MAPPING_ENTRY_SIZE * rc_mapping_count; > build_append_int_noprefix(table_data, node_size, 2); /* Length */ > - build_append_int_noprefix(table_data, 0, 1); /* Revision */ > - build_append_int_noprefix(table_data, 0, 4); /* Reserved */ > + build_append_int_noprefix(table_data, 3, 1); /* Revision */ > + build_append_int_noprefix(table_data, id++, 4); /* Identifier */ > /* Number of ID mappings */ > build_append_int_noprefix(table_data, rc_mapping_count, 4); > /* Reference to ID Array */ > build_append_int_noprefix(table_data, ROOT_COMPLEX_ENTRY_SIZE, 4); > > - /* Table 13 Memory access properties */ > + /* Table 14 Memory access properties */ > /* CCA: Cache Coherent Attribute */ > build_append_int_noprefix(table_data, 1 /* fully coherent */, 4); > build_append_int_noprefix(table_data, 0, 1); /* AH: Note Allocation Hints */ > build_append_int_noprefix(table_data, 0, 2); /* Reserved */ > - /* MAF: Note Memory Access Flags */ > - build_append_int_noprefix(table_data, 0x3 /* CCA = CPM = DCAS = 1 */, 1); > + /* Table 15 Memory Access Flags */ > + build_append_int_noprefix(table_data, 0x3 /* CCA = CPM = DACS = 1 */, 1); > > build_append_int_noprefix(table_data, 0, 4); /* ATS Attribute */ > /* MCFG pci_segment */ > build_append_int_noprefix(table_data, 0, 4); /* PCI Segment number */ > > + /* Memory address size limit */ > + build_append_int_noprefix(table_data, 64, 1); > + > + build_append_int_noprefix(table_data, 0, 3); /* Reserved */ > + > /* Output Reference */ > if (vms->iommu == VIRT_IOMMU_SMMUV3) { > AcpiIortIdMapping *range; ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] hw/arm/virt-acpi-build: IORT upgrade up to revision E.b 2021-10-05 8:38 ` [PATCH v2 2/3] hw/arm/virt-acpi-build: IORT upgrade up to revision E.b Eric Auger 2021-10-11 14:38 ` Igor Mammedov @ 2021-10-13 15:26 ` Jean-Philippe Brucker 1 sibling, 0 replies; 7+ messages in thread From: Jean-Philippe Brucker @ 2021-10-13 15:26 UTC (permalink / raw) To: Eric Auger Cc: peter.maydell, drjones, gshan, qemu-devel, shannon.zhaosl, qemu-arm, imammedo, philmd, eric.auger.pro On Tue, Oct 05, 2021 at 10:38:04AM +0200, Eric Auger wrote: > Upgrade the IORT table from B to E.b specification > revision (ARM DEN 0049E.b). > > Signed-off-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Two nits below > > --- > > v1 -> v2: > - Fix Revision value for ITS node and SMMUv3 node > - increment an identifier > --- > hw/arm/virt-acpi-build.c | 48 ++++++++++++++++++++++++---------------- > 1 file changed, 29 insertions(+), 19 deletions(-) > > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c > index 257d0fee17..789bac3134 100644 > --- a/hw/arm/virt-acpi-build.c > +++ b/hw/arm/virt-acpi-build.c > @@ -241,19 +241,20 @@ static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineState *vms) > #endif > > #define ID_MAPPING_ENTRY_SIZE 20 > -#define SMMU_V3_ENTRY_SIZE 60 > -#define ROOT_COMPLEX_ENTRY_SIZE 32 > +#define SMMU_V3_ENTRY_SIZE 68 > +#define ROOT_COMPLEX_ENTRY_SIZE 36 > #define IORT_NODE_OFFSET 48 > > static void build_iort_id_mapping(GArray *table_data, uint32_t input_base, > uint32_t id_count, uint32_t out_ref) > { > - /* Identity RID mapping covering the whole input RID range */ > + /* Table 4 ID mapping format */ > build_append_int_noprefix(table_data, input_base, 4); /* Input base */ > build_append_int_noprefix(table_data, id_count, 4); /* Number of IDs */ > build_append_int_noprefix(table_data, input_base, 4); /* Output base */ > build_append_int_noprefix(table_data, out_ref, 4); /* Output Reference */ > - build_append_int_noprefix(table_data, 0, 4); /* Flags */ > + /* Flags */ > + build_append_int_noprefix(table_data, 0 /* Single mapping */, 4); The comment is a bit confusing, seems to indicate that "Single mapping" is enabled by value 0 > } > > struct AcpiIortIdMapping { > @@ -298,7 +299,7 @@ static int iort_idmap_compare(gconstpointer a, gconstpointer b) > /* > * Input Output Remapping Table (IORT) > * Conforms to "IO Remapping Table System Software on ARM Platforms", > - * Document number: ARM DEN 0049B, October 2015 > + * Document number: ARM DEN 0049E, Feb 2021 0049E.b? > */ > static void > build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] tests/acpi: Generate reference blob for IORT rev E.b 2021-10-05 8:38 [PATCH v2 0/3] hw/arm/virt_acpi_build: Upgrate the IORT table up to revision E.b Eric Auger 2021-10-05 8:38 ` [PATCH v2 1/3] tests/acpi: Get prepared for IORT E.b revision upgrade Eric Auger 2021-10-05 8:38 ` [PATCH v2 2/3] hw/arm/virt-acpi-build: IORT upgrade up to revision E.b Eric Auger @ 2021-10-05 8:38 ` Eric Auger 2021-10-11 14:40 ` Igor Mammedov 2 siblings, 1 reply; 7+ messages in thread From: Eric Auger @ 2021-10-05 8:38 UTC (permalink / raw) To: eric.auger.pro, eric.auger, imammedo, philmd, peter.maydell, shannon.zhaosl, qemu-arm, qemu-devel, drjones Cc: gshan Re-generate reference blobs with rebuild-expected-aml.sh. Signed-off-by: Eric Auger <eric.auger@redhat.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 1 - tests/data/acpi/virt/IORT | Bin 124 -> 128 bytes tests/data/acpi/virt/IORT.memhp | Bin 124 -> 128 bytes tests/data/acpi/virt/IORT.numamem | Bin 124 -> 128 bytes tests/data/acpi/virt/IORT.pxb | Bin 124 -> 128 bytes 5 files changed, 1 deletion(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h index 9a5a923d6b..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,2 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/virt/IORT", diff --git a/tests/data/acpi/virt/IORT b/tests/data/acpi/virt/IORT index 521acefe9ba66706c5607321a82d330586f3f280..7efd0ce8a6b3928efa7e1373f688ab4c5f50543b 100644 GIT binary patch literal 128 zcmebD4+?2uU|?Y0?Bwt45v<@85#X!<1dKp25F11@0kHuPgMkDCNC*yK93~3}W)K^M VRiHGGVg_O`aDdYP|3ers^8jQz3IPBB literal 124 zcmebD4+^Pa00MR=e`k+i1*eDrX9XZ&1PX!JAesq?4S*O7Bw!2(4Uz`|CKCt^;wu0# QRGb+i3L*dhhtM#y0PN=p0RR91 diff --git a/tests/data/acpi/virt/IORT.memhp b/tests/data/acpi/virt/IORT.memhp index 521acefe9ba66706c5607321a82d330586f3f280..7efd0ce8a6b3928efa7e1373f688ab4c5f50543b 100644 GIT binary patch literal 128 zcmebD4+?2uU|?Y0?Bwt45v<@85#X!<1dKp25F11@0kHuPgMkDCNC*yK93~3}W)K^M VRiHGGVg_O`aDdYP|3ers^8jQz3IPBB literal 124 zcmebD4+^Pa00MR=e`k+i1*eDrX9XZ&1PX!JAesq?4S*O7Bw!2(4Uz`|CKCt^;wu0# QRGb+i3L*dhhtM#y0PN=p0RR91 diff --git a/tests/data/acpi/virt/IORT.numamem b/tests/data/acpi/virt/IORT.numamem index 521acefe9ba66706c5607321a82d330586f3f280..7efd0ce8a6b3928efa7e1373f688ab4c5f50543b 100644 GIT binary patch literal 128 zcmebD4+?2uU|?Y0?Bwt45v<@85#X!<1dKp25F11@0kHuPgMkDCNC*yK93~3}W)K^M VRiHGGVg_O`aDdYP|3ers^8jQz3IPBB literal 124 zcmebD4+^Pa00MR=e`k+i1*eDrX9XZ&1PX!JAesq?4S*O7Bw!2(4Uz`|CKCt^;wu0# QRGb+i3L*dhhtM#y0PN=p0RR91 diff --git a/tests/data/acpi/virt/IORT.pxb b/tests/data/acpi/virt/IORT.pxb index 521acefe9ba66706c5607321a82d330586f3f280..7efd0ce8a6b3928efa7e1373f688ab4c5f50543b 100644 GIT binary patch literal 128 zcmebD4+?2uU|?Y0?Bwt45v<@85#X!<1dKp25F11@0kHuPgMkDCNC*yK93~3}W)K^M VRiHGGVg_O`aDdYP|3ers^8jQz3IPBB literal 124 zcmebD4+^Pa00MR=e`k+i1*eDrX9XZ&1PX!JAesq?4S*O7Bw!2(4Uz`|CKCt^;wu0# QRGb+i3L*dhhtM#y0PN=p0RR91 -- 2.26.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] tests/acpi: Generate reference blob for IORT rev E.b 2021-10-05 8:38 ` [PATCH v2 3/3] tests/acpi: Generate reference blob for IORT rev E.b Eric Auger @ 2021-10-11 14:40 ` Igor Mammedov 0 siblings, 0 replies; 7+ messages in thread From: Igor Mammedov @ 2021-10-11 14:40 UTC (permalink / raw) To: Eric Auger Cc: peter.maydell, drjones, gshan, qemu-devel, shannon.zhaosl, qemu-arm, philmd, eric.auger.pro On Tue, 5 Oct 2021 10:38:05 +0200 Eric Auger <eric.auger@redhat.com> wrote: > Re-generate reference blobs with rebuild-expected-aml.sh. commit message should have diff old vs new, if dis is the same/similar for various variants, it's fine to provide only one variant diff here. > > Signed-off-by: Eric Auger <eric.auger@redhat.com> > --- > tests/qtest/bios-tables-test-allowed-diff.h | 1 - > tests/data/acpi/virt/IORT | Bin 124 -> 128 bytes > tests/data/acpi/virt/IORT.memhp | Bin 124 -> 128 bytes > tests/data/acpi/virt/IORT.numamem | Bin 124 -> 128 bytes > tests/data/acpi/virt/IORT.pxb | Bin 124 -> 128 bytes > 5 files changed, 1 deletion(-) > > diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h > index 9a5a923d6b..dfb8523c8b 100644 > --- a/tests/qtest/bios-tables-test-allowed-diff.h > +++ b/tests/qtest/bios-tables-test-allowed-diff.h > @@ -1,2 +1 @@ > /* List of comma-separated changed AML files to ignore */ > -"tests/data/acpi/virt/IORT", > diff --git a/tests/data/acpi/virt/IORT b/tests/data/acpi/virt/IORT > index 521acefe9ba66706c5607321a82d330586f3f280..7efd0ce8a6b3928efa7e1373f688ab4c5f50543b 100644 > GIT binary patch > literal 128 > zcmebD4+?2uU|?Y0?Bwt45v<@85#X!<1dKp25F11@0kHuPgMkDCNC*yK93~3}W)K^M > VRiHGGVg_O`aDdYP|3ers^8jQz3IPBB > > literal 124 > zcmebD4+^Pa00MR=e`k+i1*eDrX9XZ&1PX!JAesq?4S*O7Bw!2(4Uz`|CKCt^;wu0# > QRGb+i3L*dhhtM#y0PN=p0RR91 > > diff --git a/tests/data/acpi/virt/IORT.memhp b/tests/data/acpi/virt/IORT.memhp > index 521acefe9ba66706c5607321a82d330586f3f280..7efd0ce8a6b3928efa7e1373f688ab4c5f50543b 100644 > GIT binary patch > literal 128 > zcmebD4+?2uU|?Y0?Bwt45v<@85#X!<1dKp25F11@0kHuPgMkDCNC*yK93~3}W)K^M > VRiHGGVg_O`aDdYP|3ers^8jQz3IPBB > > literal 124 > zcmebD4+^Pa00MR=e`k+i1*eDrX9XZ&1PX!JAesq?4S*O7Bw!2(4Uz`|CKCt^;wu0# > QRGb+i3L*dhhtM#y0PN=p0RR91 > > diff --git a/tests/data/acpi/virt/IORT.numamem b/tests/data/acpi/virt/IORT.numamem > index 521acefe9ba66706c5607321a82d330586f3f280..7efd0ce8a6b3928efa7e1373f688ab4c5f50543b 100644 > GIT binary patch > literal 128 > zcmebD4+?2uU|?Y0?Bwt45v<@85#X!<1dKp25F11@0kHuPgMkDCNC*yK93~3}W)K^M > VRiHGGVg_O`aDdYP|3ers^8jQz3IPBB > > literal 124 > zcmebD4+^Pa00MR=e`k+i1*eDrX9XZ&1PX!JAesq?4S*O7Bw!2(4Uz`|CKCt^;wu0# > QRGb+i3L*dhhtM#y0PN=p0RR91 > > diff --git a/tests/data/acpi/virt/IORT.pxb b/tests/data/acpi/virt/IORT.pxb > index 521acefe9ba66706c5607321a82d330586f3f280..7efd0ce8a6b3928efa7e1373f688ab4c5f50543b 100644 > GIT binary patch > literal 128 > zcmebD4+?2uU|?Y0?Bwt45v<@85#X!<1dKp25F11@0kHuPgMkDCNC*yK93~3}W)K^M > VRiHGGVg_O`aDdYP|3ers^8jQz3IPBB > > literal 124 > zcmebD4+^Pa00MR=e`k+i1*eDrX9XZ&1PX!JAesq?4S*O7Bw!2(4Uz`|CKCt^;wu0# > QRGb+i3L*dhhtM#y0PN=p0RR91 > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-10-13 15:28 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-10-05 8:38 [PATCH v2 0/3] hw/arm/virt_acpi_build: Upgrate the IORT table up to revision E.b Eric Auger 2021-10-05 8:38 ` [PATCH v2 1/3] tests/acpi: Get prepared for IORT E.b revision upgrade Eric Auger 2021-10-05 8:38 ` [PATCH v2 2/3] hw/arm/virt-acpi-build: IORT upgrade up to revision E.b Eric Auger 2021-10-11 14:38 ` Igor Mammedov 2021-10-13 15:26 ` Jean-Philippe Brucker 2021-10-05 8:38 ` [PATCH v2 3/3] tests/acpi: Generate reference blob for IORT rev E.b Eric Auger 2021-10-11 14:40 ` Igor Mammedov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).