All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build
@ 2026-08-07  6:12 Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 1/7] amd_iommu: Return empty efr for stub call Sairaj Kodilkar
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Sairaj Kodilkar @ 2026-08-07  6:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alejandro Jimenez, Ani Sinha, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Sairaj Kodilkar, qemu-devel
  Cc: vasant.hegde, suravee.suthikulpanit

QEMU reports several IVRS fields that either do not match what the
emulated AMD IOMMU actually implements, or are hardcoded and drift out
of sync with the extended feature register (EFR). This series fixes
them.

The goal is to land a maintainable baseline before adding AMD
hardware-accelerated vIOMMU support in QEMU, where we will require multiple
vIOMMUs attached to different pcie-pxb buses in order to serve set of
passthrough devices.

Please refer to AMD IOMMU spec [1] for more details about IVRS.
[1] https://docs.amd.com/api/khub/documents/GD6kOXjzWsek8QUbn_qMvg/content

Changes since v1:
https://lore.kernel.org/all/20260511123937.32743-1-sarunkod@amd.com/
 - Dropped "acpi_build: Cleanup AMD IOMMU IVRS building" and
   "acpi_build: Introduce necessary macros and structs for AMD IOMMU
   IVRS".
 - Added "amd_iommu: acpi-build: Remove unsupported PPR and HE
   feature"
 - Use pci_get_bdf() instead of pci_bus_num
 - Move AMD IVRS specific macros from acpi-build.h to amd_iommu.h
 - Remove GLX_SUP from feature reporting field

Sairaj Kodilkar (7):
  amd_iommu: Return empty efr for stub call
  tests/acpi: x86: Allow IVRS acpi table changes
  amd_iommu: acpi-build: update PA, GVA and VA size macros
  acpi_build: Use IOMMU pci device to build IOMMU DeviceID
  acpi_build: Build IVRS feature report using extended feature register
  amd_iommu: acpi-build: Remove unsupported PPR and HE feature
  tests/acpi: x86: update golden masters for IVRS

 hw/i386/acpi-build.c     | 65 +++++++++++++++++++++++++++-------------
 hw/i386/amd_iommu-stub.c |  2 +-
 hw/i386/amd_iommu.c      |  2 +-
 hw/i386/amd_iommu.h      | 27 +++++++++++++----
 4 files changed, 67 insertions(+), 29 deletions(-)


base-commit: 3e3ccab106f879b1512f8e0d51a827dd4de30e22
-- 
2.34.1



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/7] amd_iommu: Return empty efr for stub call
  2026-08-07  6:12 [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
@ 2026-08-07  6:12 ` Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 2/7] tests/acpi: x86: Allow IVRS acpi table changes Sairaj Kodilkar
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Sairaj Kodilkar @ 2026-08-07  6:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alejandro Jimenez, Ani Sinha, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Sairaj Kodilkar, qemu-devel
  Cc: vasant.hegde, suravee.suthikulpanit

The stub call should not return normal EFR as it is used as place holder
when actual AMD IOMMU calls are not available. Hence return 0.

Signed-off-by: Sairaj Kodilkar <sarunkod@amd.com>
Reviewed-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
---
 hw/i386/amd_iommu-stub.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/i386/amd_iommu-stub.c b/hw/i386/amd_iommu-stub.c
index d62a3732e60f..fb36dee903ee 100644
--- a/hw/i386/amd_iommu-stub.c
+++ b/hw/i386/amd_iommu-stub.c
@@ -22,5 +22,5 @@
 
 uint64_t amdvi_extended_feature_register(AMDVIState *s)
 {
-    return AMDVI_DEFAULT_EXT_FEATURES;
+    return 0;
 }
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/7] tests/acpi: x86: Allow IVRS acpi table changes
  2026-08-07  6:12 [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 1/7] amd_iommu: Return empty efr for stub call Sairaj Kodilkar
@ 2026-08-07  6:12 ` Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 3/7] amd_iommu: acpi-build: update PA, GVA and VA size macros Sairaj Kodilkar
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Sairaj Kodilkar @ 2026-08-07  6:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alejandro Jimenez, Ani Sinha, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Sairaj Kodilkar, qemu-devel
  Cc: vasant.hegde, suravee.suthikulpanit

Signed-off-by: Sairaj Kodilkar <sarunkod@amd.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 dfb8523c8bf4..33e998165591 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/x86/q35/IVRS.ivrs
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 3/7] amd_iommu: acpi-build: update PA, GVA and VA size macros
  2026-08-07  6:12 [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 1/7] amd_iommu: Return empty efr for stub call Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 2/7] tests/acpi: x86: Allow IVRS acpi table changes Sairaj Kodilkar
@ 2026-08-07  6:12 ` Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 4/7] acpi_build: Use IOMMU pci device to build IOMMU DeviceID Sairaj Kodilkar
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Sairaj Kodilkar @ 2026-08-07  6:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alejandro Jimenez, Ani Sinha, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Sairaj Kodilkar, qemu-devel
  Cc: vasant.hegde, suravee.suthikulpanit

Current implementation supports up to 64 bit IOVA and up to 52 bit PA.
Modify related macros so that guest can see right size.

Also, use these macros to build the IVINFO field in the IVRS.

Signed-off-by: Sairaj Kodilkar <sarunkod@amd.com>
Reviewed-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
---
 hw/i386/acpi-build.c |  4 +++-
 hw/i386/amd_iommu.c  |  2 +-
 hw/i386/amd_iommu.h  | 11 ++++++++---
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 8837b69687d1..d8c14644e62e 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1855,7 +1855,9 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
      */
     build_append_int_noprefix(table_data,
                              (1UL << 0) | /* EFRSup */
-                             (40UL << 8), /* PASize */
+                             AMDVI_GVA_SIZE_48 | /* GVASize:     010b = 48 bits */
+                             AMDVI_PA_SIZE_52 |  /* PASize: 011_0100b = 52 bits */
+                             AMDVI_VA_SIZE_64,   /* VASize: 100_0000b = 64 bits */
                              4);
     /* reserved */
     build_append_int_noprefix(table_data, 0, 8);
diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c
index 90252c52af47..b840c40d872c 100644
--- a/hw/i386/amd_iommu.c
+++ b/hw/i386/amd_iommu.c
@@ -2595,7 +2595,7 @@ static void amdvi_pci_realize(PCIDevice *pdev, Error **errp)
                  0xff000000);
     pci_set_long(pdev->config + s->capab_offset + AMDVI_CAPAB_MISC, 0);
     pci_set_long(pdev->config + s->capab_offset + AMDVI_CAPAB_MISC,
-            AMDVI_MAX_PH_ADDR | AMDVI_MAX_GVA_ADDR | AMDVI_MAX_VA_ADDR);
+            AMDVI_PA_SIZE_52 | AMDVI_GVA_SIZE_48 | AMDVI_VA_SIZE_64);
 }
 
 static void amdvi_sysbus_reset(DeviceState *dev)
diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h
index 687691ec1cce..d01f9b41dfae 100644
--- a/hw/i386/amd_iommu.h
+++ b/hw/i386/amd_iommu.h
@@ -243,9 +243,14 @@
 #define AMDVI_PAGE_SHIFT_4K 12
 #define AMDVI_PAGE_MASK_4K      GENMASK64(63, 12)
 
-#define AMDVI_MAX_GVA_ADDR      (2UL << 5)
-#define AMDVI_MAX_PH_ADDR       (40UL << 8)
-#define AMDVI_MAX_VA_ADDR       (48UL << 15)
+/*
+ * IOMMU Capability Offset 10h: Miscellaneous Information Register 0.
+ * VAsize[21:15], PAsize[14:8], and GVAsize[7:5].
+ * These fields use the same layout in the IVRS IVinfo Field.
+ */
+#define AMDVI_VA_SIZE_64        (64UL << 15)
+#define AMDVI_PA_SIZE_52        (52UL << 8)
+#define AMDVI_GVA_SIZE_48       (2UL << 5)
 
 /* Completion Wait data size */
 #define AMDVI_COMPLETION_DATA_SIZE    8
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 4/7] acpi_build: Use IOMMU pci device to build IOMMU DeviceID
  2026-08-07  6:12 [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
                   ` (2 preceding siblings ...)
  2026-08-07  6:12 ` [PATCH v2 3/7] amd_iommu: acpi-build: update PA, GVA and VA size macros Sairaj Kodilkar
@ 2026-08-07  6:12 ` Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 5/7] acpi_build: Build IVRS feature report using extended feature register Sairaj Kodilkar
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Sairaj Kodilkar @ 2026-08-07  6:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alejandro Jimenez, Ani Sinha, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Sairaj Kodilkar, qemu-devel
  Cc: vasant.hegde, suravee.suthikulpanit

Currently, build_amd_iommu() uses "addr" property to build the DeviceID for
IOMMU device and advertise it through IVRS. But this property does not encode
IOMMU bus number, only the device and function number. This creates an
incorrect DeviceID when the IOMMU is attached to a bus other than the
default one with bus number 0.

Signed-off-by: Sairaj Kodilkar <sarunkod@amd.com>
Reviewed-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
---
 hw/i386/acpi-build.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index d8c14644e62e..6e174f20a4ef 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1848,6 +1848,7 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
     AcpiTable table = { .sig = "IVRS", .rev = 1, .oem_id = oem_id,
                         .oem_table_id = oem_table_id };
     uint64_t feature_report;
+    uint16_t iommu_devid = pci_get_bdf(&s->pci->dev);
 
     acpi_table_begin(&table, table_data);
     /* IVinfo - IO virtualization information common to all
@@ -1910,9 +1911,7 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
     /* IVHD length */
     build_append_int_noprefix(table_data, ivhd_blob->len + 24, 2);
     /* DeviceID */
-    build_append_int_noprefix(table_data,
-                              object_property_get_int(OBJECT(s->pci), "addr",
-                                                      &error_abort), 2);
+    build_append_int_noprefix(table_data, iommu_devid, 2);
     /* Capability offset */
     build_append_int_noprefix(table_data, s->pci->capab_offset, 2);
     /* IOMMU base address */
@@ -1944,10 +1943,9 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
 
     /* IVHD length */
     build_append_int_noprefix(table_data, ivhd_blob->len + 40, 2);
+
     /* DeviceID */
-    build_append_int_noprefix(table_data,
-                              object_property_get_int(OBJECT(s->pci), "addr",
-                                                      &error_abort), 2);
+    build_append_int_noprefix(table_data, iommu_devid, 2);
     /* Capability offset */
     build_append_int_noprefix(table_data, s->pci->capab_offset, 2);
     /* IOMMU base address */
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 5/7] acpi_build: Build IVRS feature report using extended feature register
  2026-08-07  6:12 [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
                   ` (3 preceding siblings ...)
  2026-08-07  6:12 ` [PATCH v2 4/7] acpi_build: Use IOMMU pci device to build IOMMU DeviceID Sairaj Kodilkar
@ 2026-08-07  6:12 ` Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 6/7] amd_iommu: acpi-build: Remove unsupported PPR and HE feature Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 7/7] tests/acpi: x86: update golden masters for IVRS Sairaj Kodilkar
  6 siblings, 0 replies; 8+ messages in thread
From: Sairaj Kodilkar @ 2026-08-07  6:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alejandro Jimenez, Ani Sinha, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Sairaj Kodilkar, qemu-devel
  Cc: vasant.hegde, suravee.suthikulpanit

Currently IVRS feature report values are hardcoded, this is difficult to
maintain as any updates to extended feature must be synced. Along with
it, current feature report does not have GATS and HATS set. Hence use
the extended feature registers to build the IVRS feature report.

Signed-off-by: Sairaj Kodilkar <sarunkod@amd.com>
---
 hw/i386/acpi-build.c | 48 +++++++++++++++++++++++++++++++++-----------
 hw/i386/amd_iommu.h  | 11 ++++++++++
 2 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 6e174f20a4ef..656a693e661f 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1839,6 +1839,37 @@ ivrs_host_bridges(Object *obj, void *opaque)
     return 0;
 }
 
+/*
+ * IVHD type 0x10 reports features using Feature Reporting field, which has
+ * different format than extended feature register (EFR) in the IOMMU MMIO
+ * space.
+ *
+ * Convert the EFR format to feature reporting format.
+ */
+static uint32_t
+get_amd_ivhd_feature_report(uint64_t extended_feature)
+{
+    uint32_t feature_report;
+    uint64_t hats_mode = (extended_feature & AMDVI_HATS_MODE_MASK) >>
+                         AMDVI_HATS_MODE_SHIFT;
+    uint64_t gats_mode = (extended_feature & AMDVI_GATS_MODE_MASK) >>
+                         AMDVI_GATS_MODE_SHIFT;
+    uint32_t is_ia = !!(extended_feature & AMDVI_FEATURE_IA);
+    uint32_t is_ga = !!(extended_feature & AMDVI_FEATURE_GA);
+    uint32_t is_gt = !!(extended_feature & AMDVI_FEATURE_GT);
+    uint32_t is_xt = !!(extended_feature & AMDVI_FEATURE_XT);
+
+    feature_report =
+        hats_mode << AMDVI_IVHD_FEATURE_REPORT_HATS_SHIFT |  /* HATS[31:30] */
+        gats_mode << AMDVI_IVHD_FEATURE_REPORT_GATS_SHIFT |  /* GATS[29:28] */
+        is_ia << AMDVI_IVHD_FEATURE_REPORT_IA_SUP_SHIFT |    /* IASup[5]    */
+        is_ga << AMDVI_IVHD_FEATURE_REPORT_GA_SUP_SHIFT |    /* GASup[6]    */
+        is_gt << AMDVI_IVHD_FEATURE_REPORT_GT_SUP_SHIFT |    /* GTSup[2]    */
+        is_xt << AMDVI_IVHD_FEATURE_REPORT_XT_SUP_SHIFT;     /* XTSup[0]    */
+
+    return feature_report;
+}
+
 static void
 build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
                 const char *oem_table_id)
@@ -1847,8 +1878,8 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
     GArray *ivhd_blob = g_array_new(false, true, 1);
     AcpiTable table = { .sig = "IVRS", .rev = 1, .oem_id = oem_id,
                         .oem_table_id = oem_table_id };
-    uint64_t feature_report;
     uint16_t iommu_devid = pci_get_bdf(&s->pci->dev);
+    uint64_t extended_feature = amdvi_extended_feature_register(s);
 
     acpi_table_begin(&table, table_data);
     /* IVinfo - IO virtualization information common to all
@@ -1921,14 +1952,9 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
     /* IOMMU info */
     build_append_int_noprefix(table_data, 0, 2);
     /* IOMMU Feature Reporting */
-    feature_report = (48UL << 30) | /* HATS   */
-                     (48UL << 28) | /* GATS   */
-                     (1UL << 2)   | /* GTSup  */
-                     (1UL << 6);    /* GASup  */
-    if (s->xtsup) {
-        feature_report |= (1UL << 0); /* XTSup */
-    }
-    build_append_int_noprefix(table_data, feature_report, 4);
+    build_append_int_noprefix(table_data,
+                              get_amd_ivhd_feature_report(extended_feature),
+                              4);
 
     /* IVHD entries as found above */
     g_array_append_vals(table_data, ivhd_blob->data, ivhd_blob->len);
@@ -1961,9 +1987,7 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
         build_append_int_noprefix(table_data, 0, 4);
     }
     /* EFR Register Image */
-    build_append_int_noprefix(table_data,
-                              amdvi_extended_feature_register(s),
-                              8);
+    build_append_int_noprefix(table_data, extended_feature, 8);
     /* EFR Register Image 2 */
     build_append_int_noprefix(table_data, 0, 8);
 
diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h
index d01f9b41dfae..319db1861820 100644
--- a/hw/i386/amd_iommu.h
+++ b/hw/i386/amd_iommu.h
@@ -174,7 +174,11 @@
 #define AMDVI_DTE_QUAD3_RESERVED        (GENMASK64(14, 0) | GENMASK64(53, 48))
 
 /* AMDVI paging mode */
+#define AMDVI_GATS_MODE_SHIFT           (12)
+#define AMDVI_GATS_MODE_MASK            (3ULL <<  12)
 #define AMDVI_GATS_MODE                 (2ULL <<  12)
+#define AMDVI_HATS_MODE_SHIFT           (10)
+#define AMDVI_HATS_MODE_MASK            (3ULL <<  10)
 #define AMDVI_HATS_MODE                 (2ULL <<  10)
 #define AMDVI_HATS_MODE_RESERVED        (3ULL <<  10)
 
@@ -296,6 +300,13 @@
 #define AMDVI_DEV_LINT0_PASS_MASK       (1ULL << 62)
 #define AMDVI_DEV_LINT1_PASS_MASK       (1ULL << 63)
 
+#define AMDVI_IVHD_FEATURE_REPORT_HATS_SHIFT        (30)
+#define AMDVI_IVHD_FEATURE_REPORT_GATS_SHIFT        (28)
+#define AMDVI_IVHD_FEATURE_REPORT_GA_SUP_SHIFT      (6)
+#define AMDVI_IVHD_FEATURE_REPORT_IA_SUP_SHIFT      (5)
+#define AMDVI_IVHD_FEATURE_REPORT_GT_SUP_SHIFT      (2)
+#define AMDVI_IVHD_FEATURE_REPORT_XT_SUP_SHIFT      (0)
+
 #define TYPE_AMD_IOMMU_DEVICE "amd-iommu"
 OBJECT_DECLARE_SIMPLE_TYPE(AMDVIState, AMD_IOMMU_DEVICE)
 
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 6/7] amd_iommu: acpi-build: Remove unsupported PPR and HE feature
  2026-08-07  6:12 [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
                   ` (4 preceding siblings ...)
  2026-08-07  6:12 ` [PATCH v2 5/7] acpi_build: Build IVRS feature report using extended feature register Sairaj Kodilkar
@ 2026-08-07  6:12 ` Sairaj Kodilkar
  2026-08-07  6:12 ` [PATCH v2 7/7] tests/acpi: x86: update golden masters for IVRS Sairaj Kodilkar
  6 siblings, 0 replies; 8+ messages in thread
From: Sairaj Kodilkar @ 2026-08-07  6:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alejandro Jimenez, Ani Sinha, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Sairaj Kodilkar, qemu-devel
  Cc: vasant.hegde, suravee.suthikulpanit

AMD IOMMU does not support ppr and hardware error registers. Hence do not
publish these features to guest through extended feature MMIO register
and IVHD 10h flags field.

Signed-off-by: Sairaj Kodilkar <sarunkod@amd.com>
---
 hw/i386/acpi-build.c | 3 +--
 hw/i386/amd_iommu.h  | 5 ++---
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 656a693e661f..749a1fe0d27e 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1935,8 +1935,7 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker, const char *oem_id,
     build_append_int_noprefix(table_data,
                              (1UL << 0) | /* HtTunEn      */
                              (1UL << 4) | /* iotblSup     */
-                             (1UL << 6) | /* PrefSup      */
-                             (1UL << 7),  /* PPRSup       */
+                             (1UL << 6),  /* PrefSup      */
                              1);
 
     /* IVHD length */
diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h
index 319db1861820..c5b346cc356c 100644
--- a/hw/i386/amd_iommu.h
+++ b/hw/i386/amd_iommu.h
@@ -227,9 +227,8 @@
 
 /* default extended feature */
 #define AMDVI_DEFAULT_EXT_FEATURES \
-        (AMDVI_FEATURE_PREFETCH | AMDVI_FEATURE_PPR | \
-        AMDVI_FEATURE_IA | AMDVI_FEATURE_GT | AMDVI_FEATURE_HE | \
-        AMDVI_GATS_MODE | AMDVI_HATS_MODE | AMDVI_FEATURE_GA)
+        (AMDVI_FEATURE_PREFETCH | AMDVI_FEATURE_IA | AMDVI_FEATURE_GT | \
+         AMDVI_GATS_MODE | AMDVI_HATS_MODE | AMDVI_FEATURE_GA)
 
 /* capabilities header */
 #define AMDVI_CAPAB_FEATURES (AMDVI_CAPAB_FLAT_EXT | \
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 7/7] tests/acpi: x86: update golden masters for IVRS
  2026-08-07  6:12 [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
                   ` (5 preceding siblings ...)
  2026-08-07  6:12 ` [PATCH v2 6/7] amd_iommu: acpi-build: Remove unsupported PPR and HE feature Sairaj Kodilkar
@ 2026-08-07  6:12 ` Sairaj Kodilkar
  6 siblings, 0 replies; 8+ messages in thread
From: Sairaj Kodilkar @ 2026-08-07  6:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alejandro Jimenez, Ani Sinha, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Sairaj Kodilkar, qemu-devel
  Cc: vasant.hegde, suravee.suthikulpanit

Differences between disassembled ASL files for IVRS:

 /*
  * Intel ACPI Component Architecture
  * AML/ASL+ Disassembler version 20200925 (64-bit version)
  * Copyright (c) 2000 - 2020 Intel Corporation
  *
- * Disassembly of tests/data/acpi/x86/q35/IVRS.ivrs, Mon May 11 11:21:47 2026
+ * Disassembly of /tmp/aml-NGQ9O3, Mon May 11 11:21:47 2026
  *
  * ACPI Data Table [IVRS]
  *
  * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue
  */

 [000h 0000   4]                    Signature : "IVRS"    [I/O Virtualization Reporting Structure]
 [004h 0004   4]                 Table Length : 000000B0
 [008h 0008   1]                     Revision : 01
-[009h 0009   1]                     Checksum : 74
+[009h 0009   1]                     Checksum : CB
 [00Ah 0010   6]                       Oem ID : "BOCHS "
 [010h 0016   8]                 Oem Table ID : "BXPC    "
 [018h 0024   4]                 Oem Revision : 00000001
 [01Ch 0028   4]              Asl Compiler ID : "BXPC"
 [020h 0032   4]        Asl Compiler Revision : 00000001

-[024h 0036   4]          Virtualization Info : 00002801
+[024h 0036   4]          Virtualization Info : 00203441
 [028h 0040   8]                     Reserved : 0000000000000000

 [030h 0048   1]                Subtable Type : 10 [Hardware Definition Block]
-[031h 0049   1]                        Flags : D1
+[031h 0049   1]                        Flags : 51
 [032h 0050   2]                       Length : 0038
 [034h 0052   2]                     DeviceId : 0010

 [036h 0054   2]            Capability Offset : 0040
 [038h 0056   8]                 Base Address : 00000000FED80000
 [040h 0064   2]            PCI Segment Group : 0000
 [042h 0066   2]          Virtualization Info : 0000
-[044h 0068   4]            Feature Reporting : 00000044
+[044h 0068   4]            Feature Reporting : A0000064

 [048h 0072   1]                   Entry Type : 02
 [049h 0073   2]                    Device ID : 0000
 [04Bh 0075   1]                 Data Setting : 00

 [04Ch 0076   1]                   Entry Type : 02
 [04Dh 0077   2]                    Device ID : 0008
 [04Fh 0079   1]                 Data Setting : 00

 [050h 0080   1]                   Entry Type : 02
 [051h 0081   2]                    Device ID : 0010
 [053h 0083   1]                 Data Setting : 00

 [054h 0084   1]                   Entry Type : 02
 [055h 0085   2]                    Device ID : 00F8
 [057h 0087   1]                 Data Setting : 00
@@ -62,33 +62,33 @@
 [061h 0097   2]                    Device ID : 0000
 [063h 0099   1]                 Data Setting : 00
 [064h 0100   1]                       Handle : 00
 [065h 0101   2]        Source Used Device ID : 00A0
 [067h 0103   1]                      Variety : 01

 [068h 0104   1]                Subtable Type : 11 [Hardware Definition Block]
 [069h 0105   1]                        Flags : 11
 [06Ah 0106   2]                       Length : 0048
 [06Ch 0108   2]                     DeviceId : 0010

 [06Eh 0110   2]            Capability Offset : 0040
 [070h 0112   8]                 Base Address : 00000000FED80000
 [078h 0120   2]            PCI Segment Group : 0000
 [07Ah 0122   2]          Virtualization Info : 0000
 [07Ch 0124   4]                   Attributes : 00000000
-[080h 0128   8]                    EFR Image : 00000000000029D3
+[080h 0128   8]                    EFR Image : 00000000000028D1
 [088h 0136   8]                     Reserved : 0000000000000000

 [090h 0144   1]                   Entry Type : 02
 [091h 0145   2]                    Device ID : 0000
 [093h 0147   1]                 Data Setting : 00

 [094h 0148   1]                   Entry Type : 02
 [095h 0149   2]                    Device ID : 0008
 [097h 0151   1]                 Data Setting : 00

 [098h 0152   1]                   Entry Type : 02
 [099h 0153   2]                    Device ID : 0010
 [09Bh 0155   1]                 Data Setting : 00

 [09Ch 0156   1]                   Entry Type : 02
 [09Dh 0157   2]                    Device ID : 00F8
@@ -98,27 +98,27 @@
 [0A1h 0161   2]                    Device ID : 00FA
 [0A3h 0163   1]                 Data Setting : 00

 [0A4h 0164   1]                   Entry Type : 02
 [0A5h 0165   2]                    Device ID : 00FB
 [0A7h 0167   1]                 Data Setting : 00

 [0A8h 0168   1]                   Entry Type : 48
 [0A9h 0169   2]                    Device ID : 0000
 [0ABh 0171   1]                 Data Setting : 00
 [0ACh 0172   1]                       Handle : 00
 [0ADh 0173   2]        Source Used Device ID : 00A0
 [0AFh 0175   1]                      Variety : 01

Signed-off-by: Sairaj Kodilkar <sarunkod@amd.com>
---
 tests/qtest/bios-tables-test-allowed-diff.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index 33e998165591..dfb8523c8bf4 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/x86/q35/IVRS.ivrs
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-08-07  6:18 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-07  6:12 [PATCH v2 0/7] acpi_build: Refactor and cleanup AMD IVRS build Sairaj Kodilkar
2026-08-07  6:12 ` [PATCH v2 1/7] amd_iommu: Return empty efr for stub call Sairaj Kodilkar
2026-08-07  6:12 ` [PATCH v2 2/7] tests/acpi: x86: Allow IVRS acpi table changes Sairaj Kodilkar
2026-08-07  6:12 ` [PATCH v2 3/7] amd_iommu: acpi-build: update PA, GVA and VA size macros Sairaj Kodilkar
2026-08-07  6:12 ` [PATCH v2 4/7] acpi_build: Use IOMMU pci device to build IOMMU DeviceID Sairaj Kodilkar
2026-08-07  6:12 ` [PATCH v2 5/7] acpi_build: Build IVRS feature report using extended feature register Sairaj Kodilkar
2026-08-07  6:12 ` [PATCH v2 6/7] amd_iommu: acpi-build: Remove unsupported PPR and HE feature Sairaj Kodilkar
2026-08-07  6:12 ` [PATCH v2 7/7] tests/acpi: x86: update golden masters for IVRS Sairaj Kodilkar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.