qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] acpi: switch to a dummy SSDT
@ 2018-01-09 13:58 Michael S. Tsirkin
  2018-01-10 11:25 ` Igor Mammedov
  0 siblings, 1 reply; 8+ messages in thread
From: Michael S. Tsirkin @ 2018-01-09 13:58 UTC (permalink / raw)
  To: qemu-devel
  Cc: Igor Mammedov, Paolo Bonzini, Richard Henderson, Eduardo Habkost

We prefer not changing table sizes depending on parameters,
that's why we create a dummy table rather than just drop
the MCFG table.

However, a table named "QEMU" could be put to a better
use than just a stub, e.g. we could use it to pass
some QEMU specific info to guests.

Replace with an SSDT and pad with the Nop opcode
to preserve the length.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/i386/acpi-build.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 73519ab..d0afb31e 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -2419,6 +2419,8 @@ build_mcfg_q35(GArray *table_data, BIOSLinker *linker, AcpiMcfgInfo *info)
 {
     AcpiTableMcfg *mcfg;
     const char *sig;
+    const char *oem;
+    const char *oem_id;
     int len = sizeof(*mcfg) + 1 * sizeof(mcfg->allocation[0]);
 
     mcfg = acpi_data_push(table_data, len);
@@ -2431,16 +2433,21 @@ build_mcfg_q35(GArray *table_data, BIOSLinker *linker, AcpiMcfgInfo *info)
     /* MCFG is used for ECAM which can be enabled or disabled by guest.
      * To avoid table size changes (which create migration issues),
      * always create the table even if there are no allocations,
-     * but set the signature to a reserved value in this case.
-     * ACPI spec requires OSPMs to ignore such tables.
+     * but fill it with Noop values.
+     * OSPMs ignore such tables.
      */
     if (info->mcfg_base == PCIE_BASE_ADDR_UNMAPPED) {
-        /* Reserved signature: ignored by OSPM */
-        sig = "QEMU";
+        sig = "SSDT";
+        oem = "QEMU ";
+        oem_id = "NOOP";
+        /* 0xa3 - NoopOp */
+        memset(&mcfg->reserved, 0xa3, len - offsetof(AcpiTableMcfg, reserved));
     } else {
         sig = "MCFG";
+        oem = NULL;
+        oem_id = NULL;
     }
-    build_header(linker, table_data, (void *)mcfg, sig, len, 1, NULL, NULL);
+    build_header(linker, table_data, (void *)mcfg, sig, len, 1, oem, oem_id);
 }
 
 /*
-- 
MST

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

end of thread, other threads:[~2018-01-10 18:20 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-09 13:58 [Qemu-devel] [PATCH] acpi: switch to a dummy SSDT Michael S. Tsirkin
2018-01-10 11:25 ` Igor Mammedov
2018-01-10 11:29   ` Michael S. Tsirkin
2018-01-10 11:41     ` Igor Mammedov
2018-01-10 11:55       ` Michael S. Tsirkin
2018-01-10 12:31         ` Igor Mammedov
2018-01-10 13:46           ` Michael S. Tsirkin
2018-01-10 18:19     ` Stefan Berger

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).