* [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button
@ 2025-04-11 20:19 Annie Li
2025-04-11 20:28 ` [RFC V3 PATCH 01/13] acpi: Implement control method sleep button Annie Li
` (12 more replies)
0 siblings, 13 replies; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:19 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
The ACPI sleep button can be implemented as a fixed hardware button
or Control Method Sleep button.
The patch of implementing a fixed hardware sleep button was posted
here 1). More discussions can be found here 2). Essentially, the
discussion mainly focuses on whether the sleep button is implemented
as a fixed hardware button or Control Method Sleep button. The latter
benefits various architectures since the code can be shared among
them.
This patch set implements Control Method Sleep button for both x86
and Microvm.(The V1 patch set was posted previously here 3). We
rebase all the patches on QEMU9.1.0 and re-post V2 here 4). This V3
patch set here is rebased on QEMU 10.0.0-rc3. The sleep button support
for MicroVM is added, however, its support for ARM platform in V2 is
removed due to lower interests of it and more efforts in the firmware.
For x86, a sleep button GPE event handler is implemented, so a GPE
event is triggered to indicate the OSPM the sleep button is pressed.
Tests have been done for Linux guest, and Windows Server guest,
this sleep button works as expected.
For MicroVM, a GED event is triggered to notify the OSPM. This GED
event is also applicable for ARM platform, but this V3 patch set
doesn't cover ARM platform as what V2 did 4). Tests have been done
for Linux MicroVM guests.
System_wakeup doesn't work for MicroVM for now due to the missing
support of it. This patch set only covers system_sleep, not the
wakeup part.
1) https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg06478.html
2) https://lore.kernel.org/all/20210920095316.2dd133be@redhat.com/T/#mfe24f89778020deeacfe45083f3eea3cf9f55961
3) https://lore.kernel.org/all/20231205002143.562-1-annie.li@oracle.com/T/
4) https://patchwork.kernel.org/project/qemu-devel/cover/20240927183906.1248-1-annie.li@oracle.com/
----Changes from V2----
Replace license with SPDX-License-Identifier
Rebase the patch set on qemu 10.0.0-rc3
Reorder the patch
Improve descriptions for system_sleep
Improve comments and format
Support system_sleep for microvm
Remove patches for ARM
----------------------
----Changes from V1----
Rebase the patch set on qemu 9.1.0-rc4
-----------------------
Annie Li (12):
acpi: Implement control method sleep button
test/acpi: allow DSDT table changes for x86 platform
acpi: Support Control Method sleep button for x86
tests/qtest/bios-table-tests: Update ACPI table binaries for x86
acpi: Send the GPE event of suspend and wakeup for x86
test/acpi: allow DSDT table changes for microvm
microvm: support control method sleep button
microvm: enable sleep GED event
tests/qtest/bios-table-tests: Update ACPI table binaries for microvm
microvm: suspend the system as requested
microvm: enable suspend
acpi: hmp/qmp: Add hmp/qmp support for system_sleep
Miguel Luis (1):
hw/acpi: Add ACPI GED support for the sleep event
hmp-commands.hx | 14 ++++++++
hw/acpi/control_method_device.c | 33 ++++++++++++++++++
hw/acpi/core.c | 10 ++++++
hw/acpi/generic_event_device.c | 12 +++++++
hw/acpi/meson.build | 1 +
hw/core/machine-hmp-cmds.c | 5 +++
hw/core/machine-qmp-cmds.c | 11 ++++++
hw/i386/acpi-build.c | 22 +++++++++++-
hw/i386/acpi-microvm.c | 11 ++++++
hw/i386/microvm.c | 4 ++-
include/hw/acpi/acpi.h | 1 +
include/hw/acpi/acpi_dev_interface.h | 1 +
include/hw/acpi/control_method_device.h | 21 +++++++++++
include/hw/acpi/generic_event_device.h | 2 ++
include/monitor/hmp.h | 1 +
qapi/machine.json | 20 +++++++++++
qapi/pragma.json | 1 +
tests/data/acpi/x86/microvm/DSDT | Bin 365 -> 442 bytes
tests/data/acpi/x86/microvm/DSDT.ioapic2 | Bin 365 -> 442 bytes
tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 3100 bytes
tests/data/acpi/x86/microvm/DSDT.rtc | Bin 404 -> 481 bytes
tests/data/acpi/x86/microvm/DSDT.usb | Bin 414 -> 491 bytes
tests/data/acpi/x86/pc/DSDT | Bin 8611 -> 8721 bytes
tests/data/acpi/x86/pc/DSDT.acpierst | Bin 8522 -> 8632 bytes
tests/data/acpi/x86/pc/DSDT.acpihmat | Bin 9936 -> 10046 bytes
tests/data/acpi/x86/pc/DSDT.bridge | Bin 15482 -> 15592 bytes
tests/data/acpi/x86/pc/DSDT.cphp | Bin 9075 -> 9185 bytes
tests/data/acpi/x86/pc/DSDT.dimmpxm | Bin 10265 -> 10375 bytes
tests/data/acpi/x86/pc/DSDT.hpbridge | Bin 8562 -> 8672 bytes
tests/data/acpi/x86/pc/DSDT.hpbrroot | Bin 5100 -> 5210 bytes
tests/data/acpi/x86/pc/DSDT.ipmikcs | Bin 8683 -> 8793 bytes
tests/data/acpi/x86/pc/DSDT.memhp | Bin 9970 -> 10080 bytes
tests/data/acpi/x86/pc/DSDT.nohpet | Bin 8469 -> 8579 bytes
tests/data/acpi/x86/pc/DSDT.numamem | Bin 8617 -> 8727 bytes
tests/data/acpi/x86/pc/DSDT.roothp | Bin 12404 -> 12514 bytes
tests/data/acpi/x86/q35/DSDT | Bin 8440 -> 8550 bytes
tests/data/acpi/x86/q35/DSDT.acpierst | Bin 8457 -> 8567 bytes
tests/data/acpi/x86/q35/DSDT.acpihmat | Bin 9765 -> 9875 bytes
.../data/acpi/x86/q35/DSDT.acpihmat-generic-x | Bin 12650 -> 12760 bytes
.../acpi/x86/q35/DSDT.acpihmat-noinitiator | Bin 8719 -> 8829 bytes
tests/data/acpi/x86/q35/DSDT.applesmc | Bin 8486 -> 8596 bytes
tests/data/acpi/x86/q35/DSDT.bridge | Bin 12053 -> 12163 bytes
tests/data/acpi/x86/q35/DSDT.core-count | Bin 12998 -> 13108 bytes
tests/data/acpi/x86/q35/DSDT.core-count2 | Bin 33855 -> 33965 bytes
tests/data/acpi/x86/q35/DSDT.cphp | Bin 8904 -> 9014 bytes
tests/data/acpi/x86/q35/DSDT.cxl | Bin 13231 -> 13341 bytes
tests/data/acpi/x86/q35/DSDT.dimmpxm | Bin 10094 -> 10204 bytes
tests/data/acpi/x86/q35/DSDT.ipmibt | Bin 8515 -> 8625 bytes
tests/data/acpi/x86/q35/DSDT.ipmismbus | Bin 8528 -> 8638 bytes
tests/data/acpi/x86/q35/DSDT.ivrs | Bin 8457 -> 8567 bytes
tests/data/acpi/x86/q35/DSDT.memhp | Bin 9799 -> 9909 bytes
tests/data/acpi/x86/q35/DSDT.mmio64 | Bin 9570 -> 9680 bytes
tests/data/acpi/x86/q35/DSDT.multi-bridge | Bin 13293 -> 13403 bytes
tests/data/acpi/x86/q35/DSDT.noacpihp | Bin 8302 -> 8412 bytes
tests/data/acpi/x86/q35/DSDT.nohpet | Bin 8298 -> 8408 bytes
tests/data/acpi/x86/q35/DSDT.numamem | Bin 8446 -> 8556 bytes
tests/data/acpi/x86/q35/DSDT.pvpanic-isa | Bin 8541 -> 8651 bytes
tests/data/acpi/x86/q35/DSDT.thread-count | Bin 12998 -> 13108 bytes
tests/data/acpi/x86/q35/DSDT.thread-count2 | Bin 33855 -> 33965 bytes
tests/data/acpi/x86/q35/DSDT.tis.tpm12 | Bin 9046 -> 9156 bytes
tests/data/acpi/x86/q35/DSDT.tis.tpm2 | Bin 9072 -> 9182 bytes
tests/data/acpi/x86/q35/DSDT.type4-count | Bin 18674 -> 18784 bytes
tests/data/acpi/x86/q35/DSDT.viot | Bin 14697 -> 14807 bytes
tests/data/acpi/x86/q35/DSDT.xapic | Bin 35803 -> 35913 bytes
64 files changed, 168 insertions(+), 2 deletions(-)
create mode 100644 hw/acpi/control_method_device.c
create mode 100644 include/hw/acpi/control_method_device.h
--
2.43.5
^ permalink raw reply [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 01/13] acpi: Implement control method sleep button
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
@ 2025-04-11 20:28 ` Annie Li
2025-04-17 17:28 ` Gustavo Romero
2025-04-11 20:31 ` [RFC V3 PATCH 02/13] test/acpi: allow DSDT table changes for x86 platform Annie Li
` (11 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:28 UTC (permalink / raw)
To: qemu-devel
Cc: mst, paul, Jonathan.Cameron, git, imammedo, annie.li, miguel.luis
The fixed hardware sleep button isn't appropriate for hardware
reduced platform. This patch implements the control method sleep
button in a separate source file so that the button can be added
for various platforms.
Co-developed-by: Miguel Luis <miguel.luis@oracle.com>
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hw/acpi/control_method_device.c | 33 +++++++++++++++++++++++++
hw/acpi/meson.build | 1 +
include/hw/acpi/control_method_device.h | 21 ++++++++++++++++
3 files changed, 55 insertions(+)
diff --git a/hw/acpi/control_method_device.c b/hw/acpi/control_method_device.c
new file mode 100644
index 0000000000..c3b1d484c4
--- /dev/null
+++ b/hw/acpi/control_method_device.c
@@ -0,0 +1,33 @@
+/*
+ * Control Method Device
+ *
+ * Copyright (c) 2023 Oracle and/or its affiliates.
+ *
+ *
+ * Authors:
+ * Annie Li <annie.li@oracle.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "qemu/osdep.h"
+#include "hw/acpi/control_method_device.h"
+#include "hw/mem/nvdimm.h"
+
+/*
+ * The control method sleep button[ACPI v6.5 Section 4.8.2.2.2.2]
+ * resides in generic hardware address spaces. The sleep button
+ * is defined as _HID("PNP0C0E") that associates with device "SLPB".
+ */
+void acpi_dsdt_add_sleep_button(Aml *scope)
+{
+ Aml *dev = aml_device(ACPI_SLEEP_BUTTON_DEVICE);
+ aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0C0E")));
+ aml_append(dev, aml_operation_region("\\SLP", AML_SYSTEM_IO,
+ aml_int(0x201), 0x1));
+ Aml *field = aml_field("\\SLP", AML_BYTE_ACC, AML_NOLOCK,
+ AML_WRITE_AS_ZEROS);
+ aml_append(field, aml_named_field("SBP", 1));
+ aml_append(dev, field);
+ aml_append(scope, dev);
+}
diff --git a/hw/acpi/meson.build b/hw/acpi/meson.build
index 73f02b9691..a62e625cef 100644
--- a/hw/acpi/meson.build
+++ b/hw/acpi/meson.build
@@ -17,6 +17,7 @@ acpi_ss.add(when: 'CONFIG_ACPI_CXL', if_true: files('cxl.c'), if_false: files('c
acpi_ss.add(when: 'CONFIG_ACPI_VMGENID', if_true: files('vmgenid.c'))
acpi_ss.add(when: 'CONFIG_ACPI_VMCLOCK', if_true: files('vmclock.c'))
acpi_ss.add(when: 'CONFIG_ACPI_HW_REDUCED', if_true: files('generic_event_device.c'))
+acpi_ss.add(when: 'CONFIG_ACPI_HW_REDUCED', if_true: files('control_method_device.c'))
acpi_ss.add(when: 'CONFIG_ACPI_HMAT', if_true: files('hmat.c'))
acpi_ss.add(when: 'CONFIG_ACPI_APEI', if_true: files('ghes.c'), if_false: files('ghes-stub.c'))
acpi_ss.add(when: 'CONFIG_ACPI_PIIX4', if_true: files('piix4.c'))
diff --git a/include/hw/acpi/control_method_device.h b/include/hw/acpi/control_method_device.h
new file mode 100644
index 0000000000..079f1a74dd
--- /dev/null
+++ b/include/hw/acpi/control_method_device.h
@@ -0,0 +1,21 @@
+/*
+ * Control Method Device
+ *
+ * Copyright (c) 2023 Oracle and/or its affiliates.
+ *
+ *
+ * Authors:
+ * Annie Li <annie.li@oracle.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+
+#ifndef HW_ACPI_CONTROL_METHOD_DEVICE_H
+#define HW_ACPI_CONTROL_NETHOD_DEVICE_H
+
+#define ACPI_SLEEP_BUTTON_DEVICE "SLPB"
+
+void acpi_dsdt_add_sleep_button(Aml *scope);
+
+#endif
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 02/13] test/acpi: allow DSDT table changes for x86 platform
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
2025-04-11 20:28 ` [RFC V3 PATCH 01/13] acpi: Implement control method sleep button Annie Li
@ 2025-04-11 20:31 ` Annie Li
2025-04-17 17:29 ` Gustavo Romero
2025-04-11 20:34 ` [RFC V3 PATCH 03/13] acpi: Support Control Method sleep button for x86 Annie Li
` (10 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:31 UTC (permalink / raw)
To: qemu-devel; +Cc: mst, imammedo, alistair.francis, sunilvl, ribalda, annie.li
list changed files in tests/qtest/bios-tables-test-allowed-diff.h
Signed-off-by: Annie Li <annie.li@oracle.com>
---
tests/qtest/bios-tables-test-allowed-diff.h | 42 +++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..a1047913af 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,43 @@
/* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/x86/pc/DSDT",
+"tests/data/acpi/x86/pc/DSDT.acpierst",
+"tests/data/acpi/x86/pc/DSDT.acpihmat",
+"tests/data/acpi/x86/pc/DSDT.bridge",
+"tests/data/acpi/x86/pc/DSDT.cphp",
+"tests/data/acpi/x86/pc/DSDT.dimmpxm",
+"tests/data/acpi/x86/pc/DSDT.hpbridge",
+"tests/data/acpi/x86/pc/DSDT.hpbrroot",
+"tests/data/acpi/x86/pc/DSDT.ipmikcs",
+"tests/data/acpi/x86/pc/DSDT.memhp",
+"tests/data/acpi/x86/pc/DSDT.nohpet",
+"tests/data/acpi/x86/pc/DSDT.numamem",
+"tests/data/acpi/x86/pc/DSDT.roothp",
+"tests/data/acpi/x86/q35/DSDT",
+"tests/data/acpi/x86/q35/DSDT.acpierst",
+"tests/data/acpi/x86/q35/DSDT.acpihmat",
+"tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x",
+"tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator",
+"tests/data/acpi/x86/q35/DSDT.applesmc",
+"tests/data/acpi/x86/q35/DSDT.bridge",
+"tests/data/acpi/x86/q35/DSDT.core-count",
+"tests/data/acpi/x86/q35/DSDT.core-count2",
+"tests/data/acpi/x86/q35/DSDT.cphp",
+"tests/data/acpi/x86/q35/DSDT.cxl",
+"tests/data/acpi/x86/q35/DSDT.dimmpxm",
+"tests/data/acpi/x86/q35/DSDT.ipmibt",
+"tests/data/acpi/x86/q35/DSDT.ipmismbus",
+"tests/data/acpi/x86/q35/DSDT.ivrs",
+"tests/data/acpi/x86/q35/DSDT.memhp",
+"tests/data/acpi/x86/q35/DSDT.mmio64",
+"tests/data/acpi/x86/q35/DSDT.multi-bridge",
+"tests/data/acpi/x86/q35/DSDT.noacpihp",
+"tests/data/acpi/x86/q35/DSDT.nohpet",
+"tests/data/acpi/x86/q35/DSDT.numamem",
+"tests/data/acpi/x86/q35/DSDT.pvpanic-isa",
+"tests/data/acpi/x86/q35/DSDT.thread-count",
+"tests/data/acpi/x86/q35/DSDT.thread-count2",
+"tests/data/acpi/x86/q35/DSDT.tis.tpm12",
+"tests/data/acpi/x86/q35/DSDT.tis.tpm2",
+"tests/data/acpi/x86/q35/DSDT.type4-count",
+"tests/data/acpi/x86/q35/DSDT.viot",
+"tests/data/acpi/x86/q35/DSDT.xapic",
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 03/13] acpi: Support Control Method sleep button for x86
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
2025-04-11 20:28 ` [RFC V3 PATCH 01/13] acpi: Implement control method sleep button Annie Li
2025-04-11 20:31 ` [RFC V3 PATCH 02/13] test/acpi: allow DSDT table changes for x86 platform Annie Li
@ 2025-04-11 20:34 ` Annie Li
2025-04-17 17:30 ` Gustavo Romero
2025-04-11 20:39 ` [RFC V3 PATCH 04/13] tests/qtest/bios-table-tests: Update ACPI table binaries " Annie Li
` (9 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:34 UTC (permalink / raw)
To: qemu-devel; +Cc: mst, imammedo, philmd, zhao1.liu, Jonathan.Cameron, annie.li
Add Control Method Sleep button and its GPE event handler for
x86 platform. The GPE event handler notifies OSPM when the
Sleep button event is triggered.
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hw/i386/acpi-build.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 3fffa4a332..4be3595e5a 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -40,6 +40,7 @@
#include "hw/acpi/acpi_aml_interface.h"
#include "hw/input/i8042.h"
#include "hw/acpi/memory_hotplug.h"
+#include "hw/acpi/control_method_device.h"
#include "system/tpm.h"
#include "hw/acpi/tpm.h"
#include "hw/acpi/vmgenid.h"
@@ -1359,7 +1360,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
NULL);
Object *q35 = object_resolve_type_unambiguous(TYPE_Q35_HOST_DEVICE, NULL);
CrsRangeEntry *entry;
- Aml *dsdt, *sb_scope, *scope, *dev, *method, *field, *pkg, *crs;
+ Aml *dsdt, *sb_scope, *scope, *dev, *method, *field, *pkg, *crs, *condition;
CrsRangeSet crs_range_set;
PCMachineState *pcms = PC_MACHINE(machine);
PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(machine);
@@ -1465,6 +1466,25 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
}
aml_append(dsdt, scope);
+ sb_scope = aml_scope("_SB");
+ acpi_dsdt_add_sleep_button(sb_scope);
+ aml_append(dsdt, sb_scope);
+
+ /*
+ * The event handler for the control method sleep button is generated
+ * for notifying OSPM[ACPI v6.5 Section 4.8.2.2.2.].
+ */
+ scope = aml_scope("\\_GPE");
+ method = aml_method("_L07", 0, AML_NOTSERIALIZED);
+ condition = aml_if(aml_name("\\_SB.SLPB.SBP"));
+ aml_append(condition, aml_store(aml_int(1), aml_name("\\_SB.SLPB.SBP")));
+ aml_append(condition,
+ aml_notify(aml_name("\\_SB."ACPI_SLEEP_BUTTON_DEVICE),
+ aml_int(0x80)));
+ aml_append(method, condition);
+ aml_append(scope, method);
+ aml_append(dsdt, scope);
+
if (pcmc->legacy_cpu_hotplug) {
build_legacy_cpu_hotplug_aml(dsdt, machine, pm->cpu_hp_io_base);
} else {
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 04/13] tests/qtest/bios-table-tests: Update ACPI table binaries for x86
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (2 preceding siblings ...)
2025-04-11 20:34 ` [RFC V3 PATCH 03/13] acpi: Support Control Method sleep button for x86 Annie Li
@ 2025-04-11 20:39 ` Annie Li
2025-04-17 17:31 ` Gustavo Romero
2025-04-11 20:41 ` [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup " Annie Li
` (8 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:39 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li
Following is the diff generated by the step 5 and 6 in
tests/qtest/bios-tables-test.c
Diff from iasl to show changes in DSDT table:
--- /tmp/asl-34PV42.dsl 2025-04-09 19:04:34.846646690 +0000
+++ /tmp/asl-5XBW42.dsl 2025-04-09 19:04:34.839646378 +0000
@@ -1,30 +1,30 @@
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20210604 (64-bit version)
* Copyright (c) 2000 - 2021 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
- * Disassembly of tests/data/acpi/x86/q35/DSDT, Wed Apr 9 19:04:34 2025
+ * Disassembly of /tmp/aml-EMBW42, Wed Apr 9 19:04:34 2025
*
* Original Table Header:
* Signature "DSDT"
- * Length 0x000020F8 (8440)
+ * Length 0x00002166 (8550)
* Revision 0x01 **** 32-bit table (V1), no 64-bit math support
- * Checksum 0xBE
+ * Checksum 0x1E
* OEM ID "BOCHS "
* OEM Table ID "BXPC "
* OEM Revision 0x00000001 (1)
* Compiler ID "BXPC"
* Compiler Version 0x00000001 (1)
*/
DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPC ", 0x00000001)
{
Scope (\)
{
OperationRegion (DBG, SystemIO, 0x0402, One)
Field (DBG, ByteAcc, NoLock, Preserve)
{
DBGB, 8
}
@@ -2852,32 +2852,57 @@
{
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
)
})
}
}
Scope (_GPE)
{
Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID
}
Scope (_SB)
{
+ Device (SLPB)
+ {
+ Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device */) // _HID: Hardware ID
+ OperationRegion (\SLP, SystemIO, 0x0201, One)
+ Field (\SLP, ByteAcc, NoLock, WriteAsZeros)
+ {
+ SBP, 1
+ }
+ }
+ }
+
+ Scope (\_GPE)
+ {
+ Method (_L07, 0, NotSerialized) // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
+ {
+ If (\_SB.SLPB.SBP)
+ {
+ \_SB.SLPB.SBP = One
+ Notify (\_SB.SLPB, 0x80) // Status Change
+ }
+ }
+ }
+
+ Scope (_SB)
+ {
Device (\_SB.PCI0.PRES)
{
Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID
Name (_UID, "CPU Hotplug resources") // _UID: Unique ID
Mutex (CPLK, 0x00)
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0CD8, // Range Minimum
0x0CD8, // Range Maximum
0x01, // Alignment
0x0C, // Length
)
})
OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C)
Field (PRST, ByteAcc, NoLock, WriteAsZeros)
Signed-off-by: Annie Li <annie.li@oracle.com>
---
tests/data/acpi/x86/pc/DSDT | Bin 8611 -> 8721 bytes
tests/data/acpi/x86/pc/DSDT.acpierst | Bin 8522 -> 8632 bytes
tests/data/acpi/x86/pc/DSDT.acpihmat | Bin 9936 -> 10046 bytes
tests/data/acpi/x86/pc/DSDT.bridge | Bin 15482 -> 15592 bytes
tests/data/acpi/x86/pc/DSDT.cphp | Bin 9075 -> 9185 bytes
tests/data/acpi/x86/pc/DSDT.dimmpxm | Bin 10265 -> 10375 bytes
tests/data/acpi/x86/pc/DSDT.hpbridge | Bin 8562 -> 8672 bytes
tests/data/acpi/x86/pc/DSDT.hpbrroot | Bin 5100 -> 5210 bytes
tests/data/acpi/x86/pc/DSDT.ipmikcs | Bin 8683 -> 8793 bytes
tests/data/acpi/x86/pc/DSDT.memhp | Bin 9970 -> 10080 bytes
tests/data/acpi/x86/pc/DSDT.nohpet | Bin 8469 -> 8579 bytes
tests/data/acpi/x86/pc/DSDT.numamem | Bin 8617 -> 8727 bytes
tests/data/acpi/x86/pc/DSDT.roothp | Bin 12404 -> 12514 bytes
tests/data/acpi/x86/q35/DSDT | Bin 8440 -> 8550 bytes
tests/data/acpi/x86/q35/DSDT.acpierst | Bin 8457 -> 8567 bytes
tests/data/acpi/x86/q35/DSDT.acpihmat | Bin 9765 -> 9875 bytes
.../data/acpi/x86/q35/DSDT.acpihmat-generic-x | Bin 12650 -> 12760 bytes
.../acpi/x86/q35/DSDT.acpihmat-noinitiator | Bin 8719 -> 8829 bytes
tests/data/acpi/x86/q35/DSDT.applesmc | Bin 8486 -> 8596 bytes
tests/data/acpi/x86/q35/DSDT.bridge | Bin 12053 -> 12163 bytes
tests/data/acpi/x86/q35/DSDT.core-count | Bin 12998 -> 13108 bytes
tests/data/acpi/x86/q35/DSDT.core-count2 | Bin 33855 -> 33965 bytes
tests/data/acpi/x86/q35/DSDT.cphp | Bin 8904 -> 9014 bytes
tests/data/acpi/x86/q35/DSDT.cxl | Bin 13231 -> 13341 bytes
tests/data/acpi/x86/q35/DSDT.dimmpxm | Bin 10094 -> 10204 bytes
tests/data/acpi/x86/q35/DSDT.ipmibt | Bin 8515 -> 8625 bytes
tests/data/acpi/x86/q35/DSDT.ipmismbus | Bin 8528 -> 8638 bytes
tests/data/acpi/x86/q35/DSDT.ivrs | Bin 8457 -> 8567 bytes
tests/data/acpi/x86/q35/DSDT.memhp | Bin 9799 -> 9909 bytes
tests/data/acpi/x86/q35/DSDT.mmio64 | Bin 9570 -> 9680 bytes
tests/data/acpi/x86/q35/DSDT.multi-bridge | Bin 13293 -> 13403 bytes
tests/data/acpi/x86/q35/DSDT.noacpihp | Bin 8302 -> 8412 bytes
tests/data/acpi/x86/q35/DSDT.nohpet | Bin 8298 -> 8408 bytes
tests/data/acpi/x86/q35/DSDT.numamem | Bin 8446 -> 8556 bytes
tests/data/acpi/x86/q35/DSDT.pvpanic-isa | Bin 8541 -> 8651 bytes
tests/data/acpi/x86/q35/DSDT.thread-count | Bin 12998 -> 13108 bytes
tests/data/acpi/x86/q35/DSDT.thread-count2 | Bin 33855 -> 33965 bytes
tests/data/acpi/x86/q35/DSDT.tis.tpm12 | Bin 9046 -> 9156 bytes
tests/data/acpi/x86/q35/DSDT.tis.tpm2 | Bin 9072 -> 9182 bytes
tests/data/acpi/x86/q35/DSDT.type4-count | Bin 18674 -> 18784 bytes
tests/data/acpi/x86/q35/DSDT.viot | Bin 14697 -> 14807 bytes
tests/data/acpi/x86/q35/DSDT.xapic | Bin 35803 -> 35913 bytes
tests/qtest/bios-tables-test-allowed-diff.h | 42 ------------------
43 files changed, 42 deletions(-)
diff --git a/tests/data/acpi/x86/pc/DSDT b/tests/data/acpi/x86/pc/DSDT
index 4beb5194b84a711fcb52e3e52cc2096497d18442..62bd8eae9602af4c590c6962689da54e4bff9c70 100644
GIT binary patch
delta 152
zcmZ4NJkf>ACD<iIP>F$oF<>LtX`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
Q46)9G3#x4MGoHO70CXWM82|tP
delta 24
gcmbQ}ve=o+CD<iou_6Nl<A;r0r+GFz^PUp{0AxW3ApigX
diff --git a/tests/data/acpi/x86/pc/DSDT.acpierst b/tests/data/acpi/x86/pc/DSDT.acpierst
index abda6863b64c5dc8ba5aba1a286cbfa76772a1e4..6c9cf3df3902fb30c704b7a657c4c08402c28837 100644
GIT binary patch
delta 152
zcmX@*w8NRpCD<iohav+5<IIg*r+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&3)
QGsHR%E~v82&v;Tq03>NE`v3p{
delta 24
fcmdnte9DQ-CD<jzOOb(r(PAUlX`ao_yrm)lUH%6H
diff --git a/tests/data/acpi/x86/pc/DSDT.acpihmat b/tests/data/acpi/x86/pc/DSDT.acpihmat
index d081db26d7ba504b3344fad130d5812419291ac0..36f952d730a1d64c1babf7adf05c0ed364f559f3 100644
GIT binary patch
delta 152
zcmccMyU&lyCD<jzPMv{)k#{54X`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*L
Q39-(D3#x4MGoDwH0Ih*5tpET3
delta 24
gcmdnzcfps-CD<k8f*Jz@<Jyf}r+GFz^Zu3u0B*SmumAu6
diff --git a/tests/data/acpi/x86/pc/DSDT.bridge b/tests/data/acpi/x86/pc/DSDT.bridge
index e16897dc5f0fbb3f7b4de8db913884046246cc3b..da189168ffdae5817a4fe7b0e62531a333cb3d75 100644
GIT binary patch
delta 152
zcmexW@uHH;CD<k8g$)A(WBf+0(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
Q8DgCW7gX8iXFOB%0jE+eBLDyZ
delta 24
gcmaD+`KyA<CD<jT%7%e~@!v+S(>$A<d6((~0DNZ&D*ylh
diff --git a/tests/data/acpi/x86/pc/DSDT.cphp b/tests/data/acpi/x86/pc/DSDT.cphp
index e95711cd9cde5d50b841b701ae0fed5a4b15e872..d6f96a071f1a7d570400dffedfd10af38eee0faf 100644
GIT binary patch
delta 152
zcmezD_RyWnCD<k8p)vyl<B^SAr+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&34
Q0>nBGE~v82&v<&p0E=BL^8f$<
delta 24
fcmaFp{@IPoCD<jTSeb!=F?l1`X`ao_yz|5WYLN%t
diff --git a/tests/data/acpi/x86/pc/DSDT.dimmpxm b/tests/data/acpi/x86/pc/DSDT.dimmpxm
index 90ba66b9164f9a958d5a3c4371b1eec03e922828..ee06a74106606a3725b7f6882d020cf487873771 100644
GIT binary patch
delta 152
zcmbOk&>qO;66_MvuED^-Sh$hvK2N<te6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7p=a
Qfmr9k1y#2B7mvI&0NQISX8-^I
delta 24
fcmZn<oEgC766_KpslmX&D6o<1KF{WGUIS?WQ{)C!
diff --git a/tests/data/acpi/x86/pc/DSDT.hpbridge b/tests/data/acpi/x86/pc/DSDT.hpbridge
index 0eafe5fbf3d73719c9c3e6e26371863bfb44ed2f..1730d2ca1d83c08eca05e35ac1691e559a618489 100644
GIT binary patch
delta 152
zcmez5^uU?RCD<k8fg%F~W9vq)(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
Q8DgCW7gX8iXFNS30AG15hX4Qo
delta 24
fcmaFh{K<*SCD<jTNRfeoQDr07X`ao_ymLhWXATFC
diff --git a/tests/data/acpi/x86/pc/DSDT.hpbrroot b/tests/data/acpi/x86/pc/DSDT.hpbrroot
index 077a4cc988dc417a1bc9317dddd2dbd96ff1ff50..4ae9b5586f27761f77eabc801467a343a88d84a4 100644
GIT binary patch
delta 152
zcmaE(eoKSPCD<h-N`!%d@$g2j9PWC9_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
Q46)9G3#x2$J9jDv0MnK#{Qv*}
delta 24
fcmcbm@kX7?CD<k8jW7cPWAa9>9PZ6exXU;IX|o6f
diff --git a/tests/data/acpi/x86/pc/DSDT.ipmikcs b/tests/data/acpi/x86/pc/DSDT.ipmikcs
index 8d465f027772f9c59b0c328c1a099e374a6d2a90..71e2566c59b03670df98d8f3dced9b7f7df1a985 100644
GIT binary patch
delta 152
zcmaFueA9)?CD<h-Qi*|q@ytf9(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
Q8DgCW7gX8iXFRN;05ZWVwg3PC
delta 24
fcmccV^4gipCD<k8wITxpW6nmd(>$A<dBsElZqf(7
diff --git a/tests/data/acpi/x86/pc/DSDT.memhp b/tests/data/acpi/x86/pc/DSDT.memhp
index e3b49757cb7abd7536ee89a6824967d2cb2485cf..5955bc2920d5327a90ae604d406496d73d543378 100644
GIT binary patch
delta 152
zcmez5`@oOOCD<h-L7jntQDr07X`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*E
Q46)9G3#x4MGaeo(0P|uiP5=M^
delta 24
gcmaFh_sN&bCD<k8lNtj9<B^SAr+GFz^U6vA0CoNdPyhe`
diff --git a/tests/data/acpi/x86/pc/DSDT.nohpet b/tests/data/acpi/x86/pc/DSDT.nohpet
index 9e772c1316d0ea07c51717466c4c7e383553f345..2eef579e2fb3629b3e6a66eccb1565e2fbf2864d 100644
GIT binary patch
delta 152
zcmbR0)a=aV66_MvtjNH?D7BHxmZ#nzKG-Qfx=AzGC%}m#-ow*{$MFIWUvxtZP#~U>
zn~{kzx{(LWaSV0>iU`=m#JdN$ikQax7??9G(2LP$2AKfT4w5fmL=$L>(SylzH3&F4
QL#*@Qf-2h_!LwHc05@AI8UO$Q
delta 24
fcmZp6p6bNq66_Kps>r~=xN{?yEzjnyJm*9JRQv}a
diff --git a/tests/data/acpi/x86/pc/DSDT.numamem b/tests/data/acpi/x86/pc/DSDT.numamem
index 9bfbfc28213713c208dfc38a85abb46fb190871d..b2c8220fefd1175ff403a77f77ea2fab7675d096 100644
GIT binary patch
delta 152
zcmZ4KJl%!MCD<iIT#12!@y<rB(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
Q8DgCW7gX8iXFP{R0Lqsu!vFvP
delta 24
gcmbR4veKE$CD<ior6L0ZW6egc(>$A<d9R270AVu+#Q*>R
diff --git a/tests/data/acpi/x86/pc/DSDT.roothp b/tests/data/acpi/x86/pc/DSDT.roothp
index efbee6d8aa5c62ff4fcb83e6c5cff59542977850..287ec23844e6887a24276d21b9bdcc415796e656 100644
GIT binary patch
delta 152
zcmey8@F<bXCD<k8kpTk(<K2y1r+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&3)
QGsHR%E~v82&v^Qj0ln}oK>z>%
delta 24
fcmaEq_$7hMCD<jT#DIZ;v1TLJX`ao_yz`X-aRmrT
diff --git a/tests/data/acpi/x86/q35/DSDT b/tests/data/acpi/x86/q35/DSDT
index e5e8d1e041e20e1b3ee56a5c93fe3d6ebd721ee6..813e489f98b6be8958d8bf9bcf1d0b2eed691a5e 100644
GIT binary patch
delta 152
zcmez2_{@pRCD<h-O_70tQEnrbq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
QhFIsp1y#1$MDhqb0FYQJkpKVy
delta 24
gcmaFn^uv+MCD<k8hXMlw<Gzhtl9HPzN?v6L0CM#Rm;e9(
diff --git a/tests/data/acpi/x86/q35/DSDT.acpierst b/tests/data/acpi/x86/q35/DSDT.acpierst
index 072a3fe2cd17dfe06658dfd82588f69787810114..2d81bcbc781d3fc68a053d5319fbdcfa153a4653 100644
GIT binary patch
delta 152
zcmeBl`tHQ#66_LEuE@Z^xNjquq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
QhFIsp1y#1$MDi*-0Jz>N_5c6?
delta 24
fcmezF)ak_K66_MfsmQ><7`u^6QgZV|$!F{US$zim
diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat b/tests/data/acpi/x86/q35/DSDT.acpihmat
index 2a4f2fc1d5c5649673353186e67ff5b5e59e8d53..0b911c9425d2f59fc6e0a2aac97fe23ee0b4a18d 100644
GIT binary patch
delta 152
zcmZ4LGufBRCD<iovKj*e<L!-Hl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klg
Q6JnhQ7gX716UmP}0KMcZCjbBd
delta 24
fcmbR2yVQrvCD<iIRgHmxv1%iiq~zv_l1#h+Rh|Ya
diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x b/tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x
index 7911c058bba5005d318b8db8d6da5c1ee381b0f1..bd0f517847bd71eb78db72010df699c1bea64d4a 100644
GIT binary patch
delta 152
zcmaErbR(I|CD<k8h9Lt3W5Y%+Ny&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*S
Q2eHnB3#x3hiKLkX03_=xHUIzs
delta 24
fcmcbS{3?mdCD<h-%aDPAQGO$rq~zv_lI{`!XLtuC
diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator b/tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator
index 580b4a456a20fc0cc0a832eaf74193b46d8ae8b1..3ab30d885f483c1626a9ab5a3501610923485462 100644
GIT binary patch
delta 152
zcmeBo`Rl^v66_LEtHi*-ICUeJq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7p=Y
Qfmr9k1y#1$MDjKV0J0=20{{R3
delta 24
fcmezC((l6M66_Mfuf)K>XtI$@QgZV|$u}GTS;PkN
diff --git a/tests/data/acpi/x86/q35/DSDT.applesmc b/tests/data/acpi/x86/q35/DSDT.applesmc
index 5e8220e38d6f88b103f6eb3eb7c78dfa466882dc..7e17c9ebb3b7d28526bd04c9af5ca05a3461ac13 100644
GIT binary patch
delta 152
zcmZ4HG{u?ACD<ioiXsC8Bi}|YNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
Q46)9G3#x3hiR34C075n@I{*Lx
delta 24
fcmbQ@yv&KqCD<iIO_70taqUJfNy*I<C7C$@RoDhY
diff --git a/tests/data/acpi/x86/q35/DSDT.bridge b/tests/data/acpi/x86/q35/DSDT.bridge
index ee039453af1071e00a81ee7b37cf8f417f524257..9da24d83ea7ab37c354a0cdbecbcf5129a3e1621 100644
GIT binary patch
delta 152
zcmbOl*BsB~66_Mvtk1x}Xtj|`QnKD4KG-Qfx=AzGC%}m#-ow*{$MFIWUvxtZP#~U>
zn~{kzx{(LWaSV0>iU`=m#JdN$ikQax7??9G(2LP$2AKfT4w5fmL=$L>(SylzH3&F4
QL#*@Qf-2i=BKc4h0A%4RcK`qY
delta 24
fcmZpUpBl&I66_Kps?Wf{cyl9{q~zv_lAlBYTLK4u
diff --git a/tests/data/acpi/x86/q35/DSDT.core-count b/tests/data/acpi/x86/q35/DSDT.core-count
index 7ebfceeb66460d0ad98471924ce224b7153e87ef..22bf4a17db1b8175db939c5159e1686c8bc54066 100644
GIT binary patch
delta 152
zcmX?>x+RUvCD<jz#F&ABaoR>MNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)gaK2
RzzDI=gA1Z=vx(#+NdT{dDyjeg
delta 24
gcmdmzb}W_4CD<k8m=Oa5quE9-Ny*I<B^OHq0BDs5v;Y7A
diff --git a/tests/data/acpi/x86/q35/DSDT.core-count2 b/tests/data/acpi/x86/q35/DSDT.core-count2
index d0394558a1faa0b4ba43abab66d474d96b477ff3..69e710caba4a353d3c0805acc8faba7043bf0ff3 100644
GIT binary patch
delta 154
zcmdnr!L+uMiOVI}C1h<20|VoWja-tF^#<|5PVv!An!!E+P8{(bo-RC&7kK!h8)AS0
z@r>MzOpMWuJYbGvuoF;3z$PZ%J-}7OG~UO+oMC}pj6O5S1dw)+d;uexKwFF+OrEPj
TptGC}VxI>WMBQc+N$zX_b$%=I
delta 26
hcmZ46$+W+NiOVI}CB(jkfq}7oBbTJ)=82Lr*#K~72iE`q
diff --git a/tests/data/acpi/x86/q35/DSDT.cphp b/tests/data/acpi/x86/q35/DSDT.cphp
index a055c2e7d3c4f5a00a03be20fd73227e322283a4..0b9e315600b8665a8cb4ddfc57c4cf60968d0b4f 100644
GIT binary patch
delta 152
zcmX@%y3LKtCD<jzOqqd!apFcUNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga)M
Q0I|-43#x3hiR2Vc0D`qDZ2$lO
delta 24
gcmdnycEXj*CD<k8gc1V-qv1v_Ny*I<C6{sn0Ag_mR{#J2
diff --git a/tests/data/acpi/x86/q35/DSDT.cxl b/tests/data/acpi/x86/q35/DSDT.cxl
index 20843549f54af1cb0e6017c4cfff7463318d9eb7..0a49b62f39f1e4e00db2d03bbf34de4e20f2ed7d 100644
GIT binary patch
delta 152
zcmZ3VJ~xBQCD<iI)`Wq9F=!)~q-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
QhFIsp1y#1$M6y~60Avm-6951J
delta 24
gcmbQ6u|A#4CD<ioy)gp=<EM>Wl9HPzO7=(r0BWlU8UO$Q
diff --git a/tests/data/acpi/x86/q35/DSDT.dimmpxm b/tests/data/acpi/x86/q35/DSDT.dimmpxm
index 664e926e90765550136242f7e3e0bdc7719c1853..1c14b91bb4d341d16527d330e2bb0515e2fafb81 100644
GIT binary patch
delta 152
zcmaFocgLU0CD<k8jyeMaqy0uMUCDZb_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga&<
Q0<q463#x3hhol-G0QRCP-v9sr
delta 24
fcmccP|IUxgCD<h-Po05*@!m!*UCGT$CC&K&Y?uek
diff --git a/tests/data/acpi/x86/q35/DSDT.ipmibt b/tests/data/acpi/x86/q35/DSDT.ipmibt
index 4066a76d26aa380dfbecc58aa3f83ab5db2baadb..5561088d97a871f858461680d77d016f6b71d799 100644
GIT binary patch
delta 152
zcmX@?w9%Q%CD<ioqap(XW6(w}Ny&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
Q46)9G3#x3hi6lP<0GEO(^Z)<=
delta 24
fcmdn!eAtQ0CD<jzS&@N(@#97=Ny*I<B^5XTU!w;5
diff --git a/tests/data/acpi/x86/q35/DSDT.ipmismbus b/tests/data/acpi/x86/q35/DSDT.ipmismbus
index 6d0b6b95c2a9fd01befc37b26650781ee1562e2a..cecba8c0629f89d2ccdd017791be69e5a98f52fa 100644
GIT binary patch
delta 152
zcmccMw9lE#CD<iopCSVT<Kc~5l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
Q8DgCW7gX716G<5k0P7zrnE(I)
delta 24
fcmdnze8Gv!CD<h-K#_rgF=->0q~zv_lDZrKT|fq)
diff --git a/tests/data/acpi/x86/q35/DSDT.ivrs b/tests/data/acpi/x86/q35/DSDT.ivrs
index 072a3fe2cd17dfe06658dfd82588f69787810114..2d81bcbc781d3fc68a053d5319fbdcfa153a4653 100644
GIT binary patch
delta 152
zcmeBl`tHQ#66_LEuE@Z^xNjquq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
QhFIsp1y#1$MDi*-0Jz>N_5c6?
delta 24
fcmezF)ak_K66_MfsmQ><7`u^6QgZV|$!F{US$zim
diff --git a/tests/data/acpi/x86/q35/DSDT.memhp b/tests/data/acpi/x86/q35/DSDT.memhp
index 4f2f9bcfceff076490cc49b8286380295a340004..056366a2c9fd535fa02d7494181e76b6a76b4cfb 100644
GIT binary patch
delta 152
zcmX@^v(=Z&CD<ios~Q6X<EM>Wl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
Q8DgCW7gX716G>rS00Y!2$N&HU
delta 24
fcmdn$d)$Z1CD<jzU5$Z(apFcUNy*I<B~^F<Ug8GH
diff --git a/tests/data/acpi/x86/q35/DSDT.mmio64 b/tests/data/acpi/x86/q35/DSDT.mmio64
index 0fb6aab16f1bd79f3c0790cc9f644f7e52ac37b1..3ab05c9ec6afa014ad53ad246fcba7336bef3901 100644
GIT binary patch
delta 152
zcmaFlb-|m<CD<k8f+_<8<K~TAl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
Q8DgCW7gX716G=TD01g}~?*IS*
delta 24
fcmccM{m6^UCD<h-NtJ<tF=!)~q~zv_lJ-0RVyXu4
diff --git a/tests/data/acpi/x86/q35/DSDT.multi-bridge b/tests/data/acpi/x86/q35/DSDT.multi-bridge
index f6afa6d96d2525d512cc46f17439f7a49962b730..41543787c443606ccef7191c2b0bee6737efe752 100644
GIT binary patch
delta 152
zcmaExemjH9CD<h-+Ju3D(Rd@5q-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
QhFIsp1y#1$L~^GT0Kb|l>;M1&
delta 24
gcmcbe@iv{yCD<k8tuX@w<K>N9l9HPzN}iGe0C=|u^8f$<
diff --git a/tests/data/acpi/x86/q35/DSDT.noacpihp b/tests/data/acpi/x86/q35/DSDT.noacpihp
index 9f7261d1b06bbf5d8a3e5a7a46b247a2a21eb544..1c09aff8b5b8955730d5ca1737e4e7f6e698e401 100644
GIT binary patch
delta 152
zcmaFoaL19$CD<k8jsgP%BjZM{UE=iy@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
Q8DgCW7gX8itKu^`01GWE=Kufz
delta 24
gcmccP_|AdLCD<h-Pl17faluBeUE-UKBvx?%0BS-9?*IS*
diff --git a/tests/data/acpi/x86/q35/DSDT.nohpet b/tests/data/acpi/x86/q35/DSDT.nohpet
index 99ad629c9171ff6ab346d6b4c519e77ca23e5b1c..86a109d6b12d38501d4353b5f8e31e9f3c15dd43 100644
GIT binary patch
delta 152
zcmaFmaKn+yCD<k8h5`cv<BN@4-4gW%@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
Q8DgCW7gX8iWfDi&0caR3kN^Mx
delta 24
fcmccN_{xFHCD<h-OM!ubv3(;~x5Q><$*b%DW~~R9
diff --git a/tests/data/acpi/x86/q35/DSDT.numamem b/tests/data/acpi/x86/q35/DSDT.numamem
index fd1d8a79d3d9b071c8796e5e99b76698a9a8d29c..454aa65803d8da71c9d5f1a263fa0b59bb76af4f 100644
GIT binary patch
delta 152
zcmez8_{NFLCD<h-N0EVnan(jHNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*E
Q46)9G3#x3hiR3AE0OrmsI{*Lx
delta 24
gcmaFk^v{vYCD<k8p8^8|qt`|*Ny*I<C2z9>0B`3AJOBUy
diff --git a/tests/data/acpi/x86/q35/DSDT.pvpanic-isa b/tests/data/acpi/x86/q35/DSDT.pvpanic-isa
index 89032fa0290f496be0c06c6382586541aa1118a8..8ef053f6dc2f1c3086756698c5953e857067df9d 100644
GIT binary patch
delta 152
zcmccXblREACD<k8v?2oo<He0!l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
Q8DgCW7gX716G=@D010g>+W-In
delta 24
fcmX@@eAkJ~CD<h-R*`{$v0x*Yq~zv_l2#l5VE+c<
diff --git a/tests/data/acpi/x86/q35/DSDT.thread-count b/tests/data/acpi/x86/q35/DSDT.thread-count
index 7ebfceeb66460d0ad98471924ce224b7153e87ef..22bf4a17db1b8175db939c5159e1686c8bc54066 100644
GIT binary patch
delta 152
zcmX?>x+RUvCD<jz#F&ABaoR>MNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)gaK2
RzzDI=gA1Z=vx(#+NdT{dDyjeg
delta 24
gcmdmzb}W_4CD<k8m=Oa5quE9-Ny*I<B^OHq0BDs5v;Y7A
diff --git a/tests/data/acpi/x86/q35/DSDT.thread-count2 b/tests/data/acpi/x86/q35/DSDT.thread-count2
index d0394558a1faa0b4ba43abab66d474d96b477ff3..69e710caba4a353d3c0805acc8faba7043bf0ff3 100644
GIT binary patch
delta 154
zcmdnr!L+uMiOVI}C1h<20|VoWja-tF^#<|5PVv!An!!E+P8{(bo-RC&7kK!h8)AS0
z@r>MzOpMWuJYbGvuoF;3z$PZ%J-}7OG~UO+oMC}pj6O5S1dw)+d;uexKwFF+OrEPj
TptGC}VxI>WMBQc+N$zX_b$%=I
delta 26
hcmZ46$+W+NiOVI}CB(jkfq}7oBbTJ)=82Lr*#K~72iE`q
diff --git a/tests/data/acpi/x86/q35/DSDT.tis.tpm12 b/tests/data/acpi/x86/q35/DSDT.tis.tpm12
index f2ed40ca70cb13e733e39f4bad756be8688e01fe..a36710dd89085f8ec5f173b84d4cd2a25473530e 100644
GIT binary patch
delta 152
zcmccScEp{_CD<k8h%y5MqyI)ONy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
Q46)9G3#x3hiKG%20KDHSNdN!<
delta 24
fcmX@&e$9=`CD<h-Oqqd!@!du)Ny*I<C5^cNWdH|I
diff --git a/tests/data/acpi/x86/q35/DSDT.tis.tpm2 b/tests/data/acpi/x86/q35/DSDT.tis.tpm2
index 5c975d2162d0bfee5a3a089e79b5ba038f82b7ef..c7d737509dfd229d2dde46ea92d292039d854f79 100644
GIT binary patch
delta 152
zcmez1cFCD<k8o-zXiBj-jgNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
Q46)9G3#x3hiKGn|0K|zZYXATM
delta 24
fcmccT{=tpQCD<jTK$(Goam7Y1Ny*I<C4IR7XsQQt
diff --git a/tests/data/acpi/x86/q35/DSDT.type4-count b/tests/data/acpi/x86/q35/DSDT.type4-count
index 3194a82b8b4f66aff1ecf7d2d60b4890181fc600..2d8b82a36ef1a8a4325817b164f77ceda78dd42e 100644
GIT binary patch
delta 154
zcmew~k@3MKMlP3NmyiTc1_s8>8@VJU>kZ<Ao#LaLG=qHtoH*h=JY9GkFYxe1H^cx1
z;u*OanHZxRdB7aUU?-r6fK5!idw{EmX}phtIl}_I7=31t2_Wqt`2t2XfwmYum^@d5
UK+hp2h<zSh5OtePB=_k909vmsYybcN
delta 26
icmaDbiSg4!MlP3Nmyk~$3=E9H8@VJUH&2v2uMYr$`w0gC
diff --git a/tests/data/acpi/x86/q35/DSDT.viot b/tests/data/acpi/x86/q35/DSDT.viot
index 129d43e1e561be3fd7cd71406829ab81d0a8aba0..3920d98b2501b08a4e0d57767a8c47cd57080748 100644
GIT binary patch
delta 152
zcmaD^biJ6%CD<k8x+Mbx<HwC$l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
Q8DgCW7gX716G>AA0Ch<#y8r+H
delta 24
fcmca!{IZD4CD<h-(~^OKal%F}Ny*I<CEXMNZrcaK
diff --git a/tests/data/acpi/x86/q35/DSDT.xapic b/tests/data/acpi/x86/q35/DSDT.xapic
index b37ab591110d1c8201575ad6bba83449d7b90b21..1c6c420f9edb16f2e706d2b495d6e856441de000 100644
GIT binary patch
delta 154
zcmcaTo$2HZCN7s?mk`e$1_s8*8@VJU>kZ<Ao#LaLG=qHtoH*h=JY9GkFYxe1H^cx1
z;u*OanHZxRdB7aUU?-r6fK5!idw{EmX}phtIl}_I7=31t2_Wqt`2t2XfwmYum^@d5
UK<h^~h<zSh5OtePB$pQf0DWdH00000
delta 26
icmX>(gX#8kCN7s?myp}t3=E9T8@VJUH&2w@Q3L>kAqj5)
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index a1047913af..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,43 +1 @@
/* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/x86/pc/DSDT",
-"tests/data/acpi/x86/pc/DSDT.acpierst",
-"tests/data/acpi/x86/pc/DSDT.acpihmat",
-"tests/data/acpi/x86/pc/DSDT.bridge",
-"tests/data/acpi/x86/pc/DSDT.cphp",
-"tests/data/acpi/x86/pc/DSDT.dimmpxm",
-"tests/data/acpi/x86/pc/DSDT.hpbridge",
-"tests/data/acpi/x86/pc/DSDT.hpbrroot",
-"tests/data/acpi/x86/pc/DSDT.ipmikcs",
-"tests/data/acpi/x86/pc/DSDT.memhp",
-"tests/data/acpi/x86/pc/DSDT.nohpet",
-"tests/data/acpi/x86/pc/DSDT.numamem",
-"tests/data/acpi/x86/pc/DSDT.roothp",
-"tests/data/acpi/x86/q35/DSDT",
-"tests/data/acpi/x86/q35/DSDT.acpierst",
-"tests/data/acpi/x86/q35/DSDT.acpihmat",
-"tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x",
-"tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator",
-"tests/data/acpi/x86/q35/DSDT.applesmc",
-"tests/data/acpi/x86/q35/DSDT.bridge",
-"tests/data/acpi/x86/q35/DSDT.core-count",
-"tests/data/acpi/x86/q35/DSDT.core-count2",
-"tests/data/acpi/x86/q35/DSDT.cphp",
-"tests/data/acpi/x86/q35/DSDT.cxl",
-"tests/data/acpi/x86/q35/DSDT.dimmpxm",
-"tests/data/acpi/x86/q35/DSDT.ipmibt",
-"tests/data/acpi/x86/q35/DSDT.ipmismbus",
-"tests/data/acpi/x86/q35/DSDT.ivrs",
-"tests/data/acpi/x86/q35/DSDT.memhp",
-"tests/data/acpi/x86/q35/DSDT.mmio64",
-"tests/data/acpi/x86/q35/DSDT.multi-bridge",
-"tests/data/acpi/x86/q35/DSDT.noacpihp",
-"tests/data/acpi/x86/q35/DSDT.nohpet",
-"tests/data/acpi/x86/q35/DSDT.numamem",
-"tests/data/acpi/x86/q35/DSDT.pvpanic-isa",
-"tests/data/acpi/x86/q35/DSDT.thread-count",
-"tests/data/acpi/x86/q35/DSDT.thread-count2",
-"tests/data/acpi/x86/q35/DSDT.tis.tpm12",
-"tests/data/acpi/x86/q35/DSDT.tis.tpm2",
-"tests/data/acpi/x86/q35/DSDT.type4-count",
-"tests/data/acpi/x86/q35/DSDT.viot",
-"tests/data/acpi/x86/q35/DSDT.xapic",
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (3 preceding siblings ...)
2025-04-11 20:39 ` [RFC V3 PATCH 04/13] tests/qtest/bios-table-tests: Update ACPI table binaries " Annie Li
@ 2025-04-11 20:41 ` Annie Li
2025-04-14 15:18 ` Alex Bennée
2025-04-17 17:40 ` Gustavo Romero
2025-04-11 20:42 ` [RFC V3 PATCH 06/13] test/acpi: allow DSDT table changes for microvm Annie Li
` (7 subsequent siblings)
12 siblings, 2 replies; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:41 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
The GPE event is triggered to notify x86 guest to suppend
itself. The function acpi_send_sleep_event will also
trigger GED events on HW-reduced systems where ACPI GED
sleep event is supported.
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hw/acpi/core.c | 10 ++++++++++
include/hw/acpi/acpi.h | 1 +
include/hw/acpi/acpi_dev_interface.h | 1 +
3 files changed, 12 insertions(+)
diff --git a/hw/acpi/core.c b/hw/acpi/core.c
index 58f8964e13..00a9d226f0 100644
--- a/hw/acpi/core.c
+++ b/hw/acpi/core.c
@@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
return -1;
}
+void acpi_send_sleep_event(void)
+{
+ Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF, NULL);
+
+ if (obj) {
+ /* Send sleep event */
+ acpi_send_event(DEVICE(obj), ACPI_SLEEP_STATUS);
+ }
+}
+
static void acpi_notify_wakeup(Notifier *notifier, void *data)
{
ACPIREGS *ar = container_of(notifier, ACPIREGS, wakeup);
diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
index d1a4fa2af8..64d3ff78ed 100644
--- a/include/hw/acpi/acpi.h
+++ b/include/hw/acpi/acpi.h
@@ -184,6 +184,7 @@ uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar, uint32_t addr);
void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq,
AcpiEventStatusBits status);
+void acpi_send_sleep_event(void);
void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq);
diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_dev_interface.h
index 68d9d15f50..1cb050cd3a 100644
--- a/include/hw/acpi/acpi_dev_interface.h
+++ b/include/hw/acpi/acpi_dev_interface.h
@@ -13,6 +13,7 @@ typedef enum {
ACPI_NVDIMM_HOTPLUG_STATUS = 16,
ACPI_VMGENID_CHANGE_STATUS = 32,
ACPI_POWER_DOWN_STATUS = 64,
+ ACPI_SLEEP_STATUS = 128,
} AcpiEventStatusBits;
#define TYPE_ACPI_DEVICE_IF "acpi-device-interface"
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 06/13] test/acpi: allow DSDT table changes for microvm
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (4 preceding siblings ...)
2025-04-11 20:41 ` [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup " Annie Li
@ 2025-04-11 20:42 ` Annie Li
2025-04-17 17:33 ` Gustavo Romero
2025-04-11 20:42 ` [RFC V3 PATCH 07/13] microvm: support control method sleep button Annie Li
` (6 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:42 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
list changed files in tests/qtest/bios-tables-test-allowed-diff.h
Signed-off-by: Annie Li <annie.li@oracle.com>
---
tests/qtest/bios-tables-test-allowed-diff.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..bb028db137 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,6 @@
/* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/x86/microvm/DSDT",
+"tests/data/acpi/x86/microvm/DSDT.ioapic2",
+"tests/data/acpi/x86/microvm/DSDT.pcie",
+"tests/data/acpi/x86/microvm/DSDT.rtc",
+"tests/data/acpi/x86/microvm/DSDT.usb",
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 07/13] microvm: support control method sleep button
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (5 preceding siblings ...)
2025-04-11 20:42 ` [RFC V3 PATCH 06/13] test/acpi: allow DSDT table changes for microvm Annie Li
@ 2025-04-11 20:42 ` Annie Li
2025-04-17 17:34 ` Gustavo Romero
2025-04-11 20:42 ` [RFC V3 PATCH 08/13] hw/acpi: Add ACPI GED support for the sleep event Annie Li
` (5 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:42 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
Add the support of control method sleep button and System
S3 Sleeping State for microvm.
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hw/i386/acpi-microvm.c | 11 +++++++++++
include/hw/acpi/generic_event_device.h | 1 +
2 files changed, 12 insertions(+)
diff --git a/hw/i386/acpi-microvm.c b/hw/i386/acpi-microvm.c
index 279da6b4aa..57c45ea327 100644
--- a/hw/i386/acpi-microvm.c
+++ b/hw/i386/acpi-microvm.c
@@ -32,6 +32,7 @@
#include "hw/acpi/generic_event_device.h"
#include "hw/acpi/utils.h"
#include "hw/acpi/erst.h"
+#include "hw/acpi/control_method_device.h"
#include "hw/i386/fw_cfg.h"
#include "hw/i386/microvm.h"
#include "hw/pci/pci.h"
@@ -123,12 +124,22 @@ build_dsdt_microvm(GArray *table_data, BIOSLinker *linker,
build_ged_aml(sb_scope, GED_DEVICE, x86ms->acpi_dev,
GED_MMIO_IRQ, AML_SYSTEM_MEMORY, GED_MMIO_BASE);
acpi_dsdt_add_power_button(sb_scope);
+ acpi_dsdt_add_sleep_button(sb_scope);
acpi_dsdt_add_virtio(sb_scope, mms);
acpi_dsdt_add_xhci(sb_scope, mms);
acpi_dsdt_add_pci(sb_scope, mms);
aml_append(dsdt, sb_scope);
/* ACPI 5.0: Table 7-209 System State Package */
+ scope = aml_scope("\\");
+ pkg = aml_package(4);
+ aml_append(pkg, aml_int(ACPI_GED_SLP_TYP_S3));
+ aml_append(pkg, aml_int(0)); /* ignored */
+ aml_append(pkg, aml_int(0)); /* reserved */
+ aml_append(pkg, aml_int(0)); /* reserved */
+ aml_append(scope, aml_name_decl("_S3", pkg));
+ aml_append(dsdt, scope);
+
scope = aml_scope("\\");
pkg = aml_package(4);
aml_append(pkg, aml_int(ACPI_GED_SLP_TYP_S5));
diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/generic_event_device.h
index d2dac87b4a..28c5785863 100644
--- a/include/hw/acpi/generic_event_device.h
+++ b/include/hw/acpi/generic_event_device.h
@@ -85,6 +85,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(AcpiGedState, ACPI_GED)
#define ACPI_GED_SLP_TYP_POS 0x2 /* SLP_TYPx Bit Offset */
#define ACPI_GED_SLP_TYP_MASK 0x07 /* SLP_TYPx 3-bit mask */
#define ACPI_GED_SLP_TYP_S5 0x05 /* System _S5 State (Soft Off) */
+#define ACPI_GED_SLP_TYP_S3 0x03 /* System _S3 State (Sleeping State) */
#define ACPI_GED_SLP_EN 0x20 /* SLP_EN write-only bit */
#define GED_DEVICE "GED"
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 08/13] hw/acpi: Add ACPI GED support for the sleep event
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (6 preceding siblings ...)
2025-04-11 20:42 ` [RFC V3 PATCH 07/13] microvm: support control method sleep button Annie Li
@ 2025-04-11 20:42 ` Annie Li
2025-04-17 17:35 ` Gustavo Romero
2025-04-11 20:43 ` [RFC V3 PATCH 09/13] microvm: enable sleep GED event Annie Li
` (4 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:42 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
From: Miguel Luis <miguel.luis@oracle.com>
Add support for ACPI GED sleep event on the ACPI device
interface so that HW-reduced systems can enable guests
to sleep.
Signed-off-by: Miguel Luis <miguel.luis@oracle.com>
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hw/acpi/generic_event_device.c | 9 +++++++++
include/hw/acpi/generic_event_device.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c
index c85d97ca37..5a1ac8e362 100644
--- a/hw/acpi/generic_event_device.c
+++ b/hw/acpi/generic_event_device.c
@@ -13,6 +13,7 @@
#include "qapi/error.h"
#include "hw/acpi/acpi.h"
#include "hw/acpi/generic_event_device.h"
+#include "hw/acpi/control_method_device.h"
#include "hw/irq.h"
#include "hw/mem/pc-dimm.h"
#include "hw/mem/nvdimm.h"
@@ -26,6 +27,7 @@ static const uint32_t ged_supported_events[] = {
ACPI_GED_PWR_DOWN_EVT,
ACPI_GED_NVDIMM_HOTPLUG_EVT,
ACPI_GED_CPU_HOTPLUG_EVT,
+ ACPI_GED_SLEEP_EVT,
};
/*
@@ -121,6 +123,11 @@ void build_ged_aml(Aml *table, const char *name, HotplugHandler *hotplug_dev,
aml_notify(aml_name("\\_SB.NVDR"),
aml_int(0x80)));
break;
+ case ACPI_GED_SLEEP_EVT:
+ aml_append(if_ctx,
+ aml_notify(aml_name(ACPI_SLEEP_BUTTON_DEVICE),
+ aml_int(0x80)));
+ break;
default:
/*
* Please make sure all the events in ged_supported_events[]
@@ -295,6 +302,8 @@ static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits ev)
sel = ACPI_GED_MEM_HOTPLUG_EVT;
} else if (ev & ACPI_POWER_DOWN_STATUS) {
sel = ACPI_GED_PWR_DOWN_EVT;
+ } else if (ev & ACPI_SLEEP_STATUS) {
+ sel = ACPI_GED_SLEEP_EVT;
} else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) {
sel = ACPI_GED_NVDIMM_HOTPLUG_EVT;
} else if (ev & ACPI_CPU_HOTPLUG_STATUS) {
diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/generic_event_device.h
index 28c5785863..71503e0100 100644
--- a/include/hw/acpi/generic_event_device.h
+++ b/include/hw/acpi/generic_event_device.h
@@ -102,6 +102,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(AcpiGedState, ACPI_GED)
#define ACPI_GED_PWR_DOWN_EVT 0x2
#define ACPI_GED_NVDIMM_HOTPLUG_EVT 0x4
#define ACPI_GED_CPU_HOTPLUG_EVT 0x8
+#define ACPI_GED_SLEEP_EVT 0x10
typedef struct GEDState {
MemoryRegion evt;
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 09/13] microvm: enable sleep GED event
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (7 preceding siblings ...)
2025-04-11 20:42 ` [RFC V3 PATCH 08/13] hw/acpi: Add ACPI GED support for the sleep event Annie Li
@ 2025-04-11 20:43 ` Annie Li
2025-04-17 17:35 ` Gustavo Romero
2025-04-11 20:44 ` [RFC V3 PATCH 10/13] tests/qtest/bios-table-tests: Update ACPI table binaries for microvm Annie Li
` (3 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:43 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
The sleep GED event is enabled for MicroVM. Also, the system
suspend is enabled when the GED register is set for sleep.
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hw/i386/microvm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index d0a236c74f..eba33c4365 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -205,7 +205,8 @@ static void microvm_devices_init(MicrovmMachineState *mms)
/* Optional and legacy devices */
if (x86_machine_is_acpi_enabled(x86ms)) {
DeviceState *dev = qdev_new(TYPE_ACPI_GED);
- qdev_prop_set_uint32(dev, "ged-event", ACPI_GED_PWR_DOWN_EVT);
+ qdev_prop_set_uint32(dev, "ged-event",
+ ACPI_GED_PWR_DOWN_EVT | ACPI_GED_SLEEP_EVT);
sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, GED_MMIO_BASE);
/* sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, GED_MMIO_BASE_MEMHP); */
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 10/13] tests/qtest/bios-table-tests: Update ACPI table binaries for microvm
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (8 preceding siblings ...)
2025-04-11 20:43 ` [RFC V3 PATCH 09/13] microvm: enable sleep GED event Annie Li
@ 2025-04-11 20:44 ` Annie Li
2025-04-17 17:36 ` Gustavo Romero
2025-04-11 20:44 ` [RFC V3 PATCH 11/13] microvm: suspend the system as requested Annie Li
` (2 subsequent siblings)
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:44 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
Following is the diff generated by the step 5 and 6 in
tests/qtest/bios-tables-test.c
Diff from iasl to show changes in DSDT table:
--- /tmp/asl-2F0N42.dsl 2025-04-11 12:50:02.892883467 +0000
+++ /tmp/asl-C81N42.dsl 2025-04-11 12:50:02.890883378 +0000
@@ -1,30 +1,30 @@
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20210604 (64-bit version)
* Copyright (c) 2000 - 2021 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
- * Disassembly of tests/data/acpi/x86/microvm/DSDT, Fri Apr 11 12:50:02 2025
+ * Disassembly of /tmp/aml-481N42, Fri Apr 11 12:50:02 2025
*
* Original Table Header:
* Signature "DSDT"
- * Length 0x0000016D (365)
+ * Length 0x000001BA (442)
* Revision 0x02
- * Checksum 0x11
+ * Checksum 0xD5
* OEM ID "BOCHS "
* OEM Table ID "BXPC "
* OEM Revision 0x00000001 (1)
* Compiler ID "BXPC"
* Compiler Version 0x00000001 (1)
*/
DefinitionBlock ("", "DSDT", 2, "BOCHS ", "BXPC ", 0x00000001)
{
Scope (_SB)
{
Device (FWCF)
{
Name (_HID, "QEMU0002") // _HID: Hardware ID
Name (_STA, 0x0B) // _STA: Status
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
@@ -66,56 +66,82 @@
0x00000009,
}
})
OperationRegion (EREG, SystemMemory, 0xFEA00000, 0x04)
Field (EREG, DWordAcc, NoLock, WriteAsZeros)
{
ESEL, 32
}
Method (_EVT, 1, Serialized) // _EVT: Event
{
Local0 = ESEL /* \_SB_.GED_.ESEL */
If (((Local0 & 0x02) == 0x02))
{
Notify (PWRB, 0x80) // Status Change
}
+
+ If (((Local0 & 0x10) == 0x10))
+ {
+ Notify (SLPB, 0x80) // Status Change
+ }
}
}
Device (PWRB)
{
Name (_HID, "PNP0C0C" /* Power Button Device */) // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID
}
+ Device (SLPB)
+ {
+ Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device */) // _HID: Hardware ID
+ OperationRegion (\SLP, SystemIO, 0x0201, One)
+ Field (\SLP, ByteAcc, NoLock, WriteAsZeros)
+ {
+ SBP, 1
+ }
+ }
+
Device (VR07)
{
Name (_HID, "LNRO0005") // _HID: Hardware ID
Name (_UID, 0x07) // _UID: Unique ID
Name (_CCA, One) // _CCA: Cache Coherency Attribute
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
Memory32Fixed (ReadWrite,
0xFEB00E00, // Address Base
0x00000200, // Address Length
)
Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
{
0x00000017,
}
})
}
}
Scope (\)
{
+ Name (_S3, Package (0x04) // _S3_: S3 System State
+ {
+ 0x03,
+ Zero,
+ Zero,
+ Zero
+ })
+ }
+
+ Scope (\)
+ {
Name (_S5, Package (0x04) // _S5_: S5 System State
{
0x05,
Zero,
Zero,
Zero
})
}
}
Signed-off-by: Annie Li <annie.li@oracle.com>
---
tests/data/acpi/x86/microvm/DSDT | Bin 365 -> 442 bytes
tests/data/acpi/x86/microvm/DSDT.ioapic2 | Bin 365 -> 442 bytes
tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 3100 bytes
tests/data/acpi/x86/microvm/DSDT.rtc | Bin 404 -> 481 bytes
tests/data/acpi/x86/microvm/DSDT.usb | Bin 414 -> 491 bytes
tests/qtest/bios-tables-test-allowed-diff.h | 5 -----
6 files changed, 5 deletions(-)
diff --git a/tests/data/acpi/x86/microvm/DSDT b/tests/data/acpi/x86/microvm/DSDT
index f477668f2ee80241e47b340ad4a30f5480df2049..ee199a4fb65ab1a2d811f37d9b5bc67bccd34939 100644
GIT binary patch
delta 127
zcmaFMw2PU`CD<io7b61$)76Pw(oD|c6V<breAy>X_GQ$Y_)vy#fxzVI1TFyvE`hdS
zpMZ(K6f`w~v=c|Xho=jV;{_hR=!O`eKs+NiBNJnEBM+G480-WTnJmHREo~ex#LmLS
V%)r1PAP~dA5g%*{7GMPm005{09v1)r
delta 54
zcmdnR{FaH!CD<h-myv;iNpK>UG?TmVMD;8tAGV2;eHmpZK9rfv$0$2FjM0<JG+v0E
Kg^QJefdK$+3k%2q
diff --git a/tests/data/acpi/x86/microvm/DSDT.ioapic2 b/tests/data/acpi/x86/microvm/DSDT.ioapic2
index e5924a49962e0cff4228bcfc77ebcf48cb4a2219..7512d1527cf222d6f75a92f051f9eda402e28376 100644
GIT binary patch
delta 127
zcmaFMw2PU`CD<io7b61$Q~yLRX(ng!iRxKQzU&hx`!ecHd?>@WKwxrp0+#>-mq1&v
zPr$@q3YwZg+KD6H!_$Sw@d6KDbVCeKAfAz%k%=+7kq69i40ZyFOqO8umNt$TVrSuE
UW?*0t5Qt&mhz~Xe3$OwO0ErwO(EtDd
delta 54
zcmdnR{FaH!CD<h-myv;i>GVV{X(o5!iRxKQK5P>w`!dQ-d?+)Sk5P7V7^5ebX}l0S
K3l}Q`0|Nky8w`Q~
diff --git a/tests/data/acpi/x86/microvm/DSDT.pcie b/tests/data/acpi/x86/microvm/DSDT.pcie
index 8eacd21d6ecdf9a3cd3e4f03cf1b40748dcbf53e..5e3f80cbf82cab52fe310160c88d0a11ff069bf5 100644
GIT binary patch
delta 128
zcmX>vK1YJfCD<iIhKGTHiDM#{G?VMziRxKQzU&hx`!ecHd?>@WKwxrp0+#>-mq1&v
zPr$@q3YwZg+KD6H!_$Sw@d6KDbVCeKAfAz%k%=+7kq69i40ZyFY?feL%O!0bFT~Em
W#mvCKARrLKz!4v83Kn1m3IG6dDjnGX
delta 55
zcmbOuabBFuCD<k8JU0Ualj}q-X(rE|6V<breAp&V_GOfv_)umtAEWH%FvitfT&D3t
L>?~ZY3=9kauQ3gZ
diff --git a/tests/data/acpi/x86/microvm/DSDT.rtc b/tests/data/acpi/x86/microvm/DSDT.rtc
index e375473b5f033d374dd2a64a9f814fd16c3e262f..11258908703b64a835bd14307490c62c5ef7301f 100644
GIT binary patch
delta 129
zcmbQj{E(T;CD<k8AtM6=)8dI-(o9~G6V)d&`La*k<;$oynS)V=Z-Kz%>I5zU1}=fN
zV4r}=ii`@Hnm~pVN4$rp3y<Rk9=_;?7@$BrBR3-xV{{`AnBy4i1QeNU&*&{}952Mq
X!o|$Mz#t$H!@v<AYzh`&1quKFJNg{0
delta 79
zcmaFJJcXIdCD<io3L^sp)BTBD(oBA$6V)d&`LIpg<;y5LnS)VAI=V?RAUw#4Bi_T)
jg*U)2z`)tSnSmod)YFAway6qjmub8ZI|~;p0|Ns9En5;N
diff --git a/tests/data/acpi/x86/microvm/DSDT.usb b/tests/data/acpi/x86/microvm/DSDT.usb
index d63fd84620a2689120b32262f964e6a098d71632..7250d9f8ad45fca91afeda1089090eee11cd6594 100644
GIT binary patch
delta 127
zcmbQo{F<4|CD<k8H6sH9)6<Du(o8N=6V<breAy>X_GQ$Y_)vy#fxzVI1TFyvE`hdS
zpMZ(K6f`w~v=c|Xho=jV;{_hR=!O`eKs+NiBNJnEBM+G480-WTnJmFrBW)Zn#LmLS
V%)r1PAP~dA5g%*{7GMPm006!m9&i8v
delta 54
zcmaFOJdc^nCD<io9wP$-lj1}!X(kV`iRxKQK5P>w`!dQ-d?+)Sk5P7V7-JQeX}l0S
K3l}Q`0|NkddJG`|
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index bb028db137..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,6 +1 @@
/* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/x86/microvm/DSDT",
-"tests/data/acpi/x86/microvm/DSDT.ioapic2",
-"tests/data/acpi/x86/microvm/DSDT.pcie",
-"tests/data/acpi/x86/microvm/DSDT.rtc",
-"tests/data/acpi/x86/microvm/DSDT.usb",
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 11/13] microvm: suspend the system as requested
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (9 preceding siblings ...)
2025-04-11 20:44 ` [RFC V3 PATCH 10/13] tests/qtest/bios-table-tests: Update ACPI table binaries for microvm Annie Li
@ 2025-04-11 20:44 ` Annie Li
2025-04-17 17:37 ` Gustavo Romero
2025-04-11 20:44 ` [RFC V3 PATCH 12/13] microvm: enable suspend Annie Li
2025-04-11 20:45 ` [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep Annie Li
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:44 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
Once the microvm guest requests to go to sleep state and
sets the GED register with S3 type, QEMU needs to continue
suspending the system.
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hw/acpi/generic_event_device.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c
index 5a1ac8e362..bc53551a45 100644
--- a/hw/acpi/generic_event_device.c
+++ b/hw/acpi/generic_event_device.c
@@ -213,6 +213,9 @@ static void ged_regs_write(void *opaque, hwaddr addr, uint64_t data,
if (slp_en && slp_typ == ACPI_GED_SLP_TYP_S5) {
qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
}
+ if (slp_en && slp_typ == ACPI_GED_SLP_TYP_S3) {
+ qemu_system_suspend_request();
+ }
return;
case ACPI_GED_REG_SLEEP_STS:
return;
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 12/13] microvm: enable suspend
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (10 preceding siblings ...)
2025-04-11 20:44 ` [RFC V3 PATCH 11/13] microvm: suspend the system as requested Annie Li
@ 2025-04-11 20:44 ` Annie Li
2025-04-17 17:37 ` Gustavo Romero
2025-04-11 20:45 ` [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep Annie Li
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:44 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
The function qemu_wakeup_suspend_enabled combines the suspend
and wakeup together. However, the microvm doesn't support
wakeup yet. Suspend is enabled here, but wakeup doesn't
actually work for microvm now.
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hw/i386/microvm.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index eba33c4365..da5d4126e5 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -489,6 +489,7 @@ static void microvm_machine_state_init(MachineState *machine)
qemu_add_machine_init_done_notifier(&mms->machine_done);
mms->powerdown_req.notify = microvm_powerdown_req;
qemu_register_powerdown_notifier(&mms->powerdown_req);
+ qemu_register_wakeup_support();
microvm_memory_init(mms);
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
` (11 preceding siblings ...)
2025-04-11 20:44 ` [RFC V3 PATCH 12/13] microvm: enable suspend Annie Li
@ 2025-04-11 20:45 ` Annie Li
2025-04-14 6:31 ` Markus Armbruster
12 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-11 20:45 UTC (permalink / raw)
To: qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, annie.li, miguel.luis
Followng hmp/qmp commands are implemented for pressing virtual
sleep button,
hmp: system_sleep
qmp: { "execute": "system_sleep" }
These commands put the guest into suspend or other power states
depending on the power settings inside the guest.
These hmp/qmp command are in '*_*' format, it is intended to do
so to align to existing 'system_*' commands.
Signed-off-by: Annie Li <annie.li@oracle.com>
---
hmp-commands.hx | 14 ++++++++++++++
hw/core/machine-hmp-cmds.c | 5 +++++
hw/core/machine-qmp-cmds.c | 11 +++++++++++
include/monitor/hmp.h | 1 +
qapi/machine.json | 20 ++++++++++++++++++++
qapi/pragma.json | 1 +
6 files changed, 52 insertions(+)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 06746f0afc..12f08f3444 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -639,6 +639,20 @@ SRST
whether profiling is on or off.
ERST
+ {
+ .name = "system_sleep",
+ .args_type = "",
+ .params = "",
+ .help = "send system sleep event",
+ .cmd = hmp_system_sleep,
+ },
+
+SRST
+``system_sleep``
+ Push the virtual sleep button; if supported, the system will enter
+ an ACPI sleep state.
+ERST
+
{
.name = "system_reset",
.args_type = "",
diff --git a/hw/core/machine-hmp-cmds.c b/hw/core/machine-hmp-cmds.c
index c6325cdcaa..f8a7c1de88 100644
--- a/hw/core/machine-hmp-cmds.c
+++ b/hw/core/machine-hmp-cmds.c
@@ -189,6 +189,11 @@ void hmp_system_reset(Monitor *mon, const QDict *qdict)
qmp_system_reset(NULL);
}
+void hmp_system_sleep(Monitor *mon, const QDict *qdict)
+{
+ qmp_system_sleep(NULL);
+}
+
void hmp_system_powerdown(Monitor *mon, const QDict *qdict)
{
qmp_system_powerdown(NULL);
diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c
index 3130c5cd45..823a8751b2 100644
--- a/hw/core/machine-qmp-cmds.c
+++ b/hw/core/machine-qmp-cmds.c
@@ -12,6 +12,7 @@
#include "hw/boards.h"
#include "hw/intc/intc.h"
#include "hw/mem/memory-device.h"
+#include "hw/acpi/acpi.h"
#include "qapi/error.h"
#include "qapi/qapi-builtin-visit.h"
#include "qapi/qapi-commands-machine.h"
@@ -276,6 +277,16 @@ void qmp_system_reset(Error **errp)
qemu_system_reset_request(SHUTDOWN_CAUSE_HOST_QMP_SYSTEM_RESET);
}
+void qmp_system_sleep(Error **errp)
+{
+ if (!qemu_wakeup_suspend_enabled()) {
+ error_setg(errp,
+ "suspend from running is not supported by this machine");
+ return;
+ }
+ acpi_send_sleep_event();
+}
+
void qmp_system_powerdown(Error **errp)
{
qemu_system_powerdown_request();
diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h
index ae116d9804..e543eec109 100644
--- a/include/monitor/hmp.h
+++ b/include/monitor/hmp.h
@@ -43,6 +43,7 @@ void hmp_quit(Monitor *mon, const QDict *qdict);
void hmp_stop(Monitor *mon, const QDict *qdict);
void hmp_sync_profile(Monitor *mon, const QDict *qdict);
void hmp_system_reset(Monitor *mon, const QDict *qdict);
+void hmp_system_sleep(Monitor *mon, const QDict *qdict);
void hmp_system_powerdown(Monitor *mon, const QDict *qdict);
void hmp_exit_preconfig(Monitor *mon, const QDict *qdict);
void hmp_announce_self(Monitor *mon, const QDict *qdict);
diff --git a/qapi/machine.json b/qapi/machine.json
index a6b8795b09..0965e78f4e 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -361,6 +361,26 @@
##
{ 'command': 'system_reset' }
+##
+# @system_sleep:
+#
+# Requests that the guest perform a ACPI sleep transition by pushing
+# the virtual sleep button.
+#
+# Since:10.0
+#
+# .. note:: A guest may or may not respond to this command. This
+# command returning does not indicate that a guest has
+# accepted the request or that it has gone to sleep.
+#
+# .. qmp-example::
+#
+# -> { "execute": "system_sleep" }
+# <- { "return": {} }
+#
+##
+{ 'command': 'system_sleep' }
+
##
# @system_powerdown:
#
diff --git a/qapi/pragma.json b/qapi/pragma.json
index 023a2ef7bc..285ce82e9b 100644
--- a/qapi/pragma.json
+++ b/qapi/pragma.json
@@ -23,6 +23,7 @@
'set_password',
'system_powerdown',
'system_reset',
+ 'system_sleep',
'system_wakeup' ],
# Commands allowed to return a non-dictionary
'command-returns-exceptions': [
--
2.43.5
^ permalink raw reply related [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep
2025-04-11 20:45 ` [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep Annie Li
@ 2025-04-14 6:31 ` Markus Armbruster
2025-04-14 14:14 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Markus Armbruster @ 2025-04-14 6:31 UTC (permalink / raw)
To: Annie Li
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, philmd, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, armbru, miguel.luis
Annie Li <annie.li@oracle.com> writes:
> Followng hmp/qmp commands are implemented for pressing virtual
> sleep button,
>
> hmp: system_sleep
> qmp: { "execute": "system_sleep" }
>
> These commands put the guest into suspend or other power states
> depending on the power settings inside the guest.
>
> These hmp/qmp command are in '*_*' format, it is intended to do
> so to align to existing 'system_*' commands.
>
> Signed-off-by: Annie Li <annie.li@oracle.com>
[...]
> diff --git a/qapi/machine.json b/qapi/machine.json
> index a6b8795b09..0965e78f4e 100644
> --- a/qapi/machine.json
> +++ b/qapi/machine.json
> @@ -361,6 +361,26 @@
> ##
> { 'command': 'system_reset' }
>
> +##
> +# @system_sleep:
> +#
> +# Requests that the guest perform a ACPI sleep transition by pushing
> +# the virtual sleep button.
> +#
> +# Since:10.0
> +#
> +# .. note:: A guest may or may not respond to this command. This
Two spaces between sentences for consistency, please.
> +# command returning does not indicate that a guest has
> +# accepted the request or that it has gone to sleep.
> +#
> +# .. qmp-example::
> +#
> +# -> { "execute": "system_sleep" }
> +# <- { "return": {} }
> +#
> +##
> +{ 'command': 'system_sleep' }
> +
> ##
> # @system_powerdown:
> #
> diff --git a/qapi/pragma.json b/qapi/pragma.json
> index 023a2ef7bc..285ce82e9b 100644
> --- a/qapi/pragma.json
> +++ b/qapi/pragma.json
> @@ -23,6 +23,7 @@
> 'set_password',
> 'system_powerdown',
> 'system_reset',
> + 'system_sleep',
Additions here are always sad, but inconsistency with the other
system_FOO commands would be worse.
> 'system_wakeup' ],
> # Commands allowed to return a non-dictionary
> 'command-returns-exceptions': [
With the spacing nit touched up:
Acked-by: Markus Armbruster <armbru@redhat.com>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep
2025-04-14 6:31 ` Markus Armbruster
@ 2025-04-14 14:14 ` Annie Li
2025-04-17 17:37 ` Gustavo Romero
0 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-14 14:14 UTC (permalink / raw)
To: Markus Armbruster
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, philmd, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, miguel.luis
On 4/14/2025 2:31 AM, Markus Armbruster wrote:
> Annie Li <annie.li@oracle.com> writes:
>
>> Followng hmp/qmp commands are implemented for pressing virtual
>> sleep button,
>>
>> hmp: system_sleep
>> qmp: { "execute": "system_sleep" }
>>
>> These commands put the guest into suspend or other power states
>> depending on the power settings inside the guest.
>>
>> These hmp/qmp command are in '*_*' format, it is intended to do
>> so to align to existing 'system_*' commands.
>>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
> [...]
>
>> diff --git a/qapi/machine.json b/qapi/machine.json
>> index a6b8795b09..0965e78f4e 100644
>> --- a/qapi/machine.json
>> +++ b/qapi/machine.json
>> @@ -361,6 +361,26 @@
>> ##
>> { 'command': 'system_reset' }
>>
>> +##
>> +# @system_sleep:
>> +#
>> +# Requests that the guest perform a ACPI sleep transition by pushing
>> +# the virtual sleep button.
>> +#
>> +# Since:10.0
>> +#
>> +# .. note:: A guest may or may not respond to this command. This
> Two spaces between sentences for consistency, please.
Didn't notice this, thanks for pointing it out.
Will fix it.
Thanks
Annie
>
>> +# command returning does not indicate that a guest has
>> +# accepted the request or that it has gone to sleep.
>> +#
>> +# .. qmp-example::
>> +#
>> +# -> { "execute": "system_sleep" }
>> +# <- { "return": {} }
>> +#
>> +##
>> +{ 'command': 'system_sleep' }
>> +
>> ##
>> # @system_powerdown:
>> #
>> diff --git a/qapi/pragma.json b/qapi/pragma.json
>> index 023a2ef7bc..285ce82e9b 100644
>> --- a/qapi/pragma.json
>> +++ b/qapi/pragma.json
>> @@ -23,6 +23,7 @@
>> 'set_password',
>> 'system_powerdown',
>> 'system_reset',
>> + 'system_sleep',
> Additions here are always sad, but inconsistency with the other
> system_FOO commands would be worse.
>
>> 'system_wakeup' ],
>> # Commands allowed to return a non-dictionary
>> 'command-returns-exceptions': [
> With the spacing nit touched up:
> Acked-by: Markus Armbruster <armbru@redhat.com>
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-11 20:41 ` [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup " Annie Li
@ 2025-04-14 15:18 ` Alex Bennée
2025-04-15 1:24 ` Annie Li
2025-04-17 17:40 ` Gustavo Romero
1 sibling, 1 reply; 46+ messages in thread
From: Alex Bennée @ 2025-04-14 15:18 UTC (permalink / raw)
To: Annie Li
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, philmd, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, armbru, miguel.luis,
Gustavo Romero
Annie Li <annie.li@oracle.com> writes:
> The GPE event is triggered to notify x86 guest to suppend
> itself. The function acpi_send_sleep_event will also
> trigger GED events on HW-reduced systems where ACPI GED
> sleep event is supported.
>
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/acpi/core.c | 10 ++++++++++
> include/hw/acpi/acpi.h | 1 +
> include/hw/acpi/acpi_dev_interface.h | 1 +
> 3 files changed, 12 insertions(+)
>
> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
> index 58f8964e13..00a9d226f0 100644
> --- a/hw/acpi/core.c
> +++ b/hw/acpi/core.c
> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
> return -1;
> }
>
> +void acpi_send_sleep_event(void)
> +{
> + Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF,
> NULL);
Is it a fair assumption there will only ever be one QOM object that
provides the TYPE_ACPI_DEVICE_IF interface on a system?
> +
> + if (obj) {
> + /* Send sleep event */
> + acpi_send_event(DEVICE(obj), ACPI_SLEEP_STATUS);
> + }
> +}
> +
> static void acpi_notify_wakeup(Notifier *notifier, void *data)
> {
> ACPIREGS *ar = container_of(notifier, ACPIREGS, wakeup);
> diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
> index d1a4fa2af8..64d3ff78ed 100644
> --- a/include/hw/acpi/acpi.h
> +++ b/include/hw/acpi/acpi.h
> @@ -184,6 +184,7 @@ uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar, uint32_t addr);
>
> void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq,
> AcpiEventStatusBits status);
> +void acpi_send_sleep_event(void);
>
> void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq);
>
> diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_dev_interface.h
> index 68d9d15f50..1cb050cd3a 100644
> --- a/include/hw/acpi/acpi_dev_interface.h
> +++ b/include/hw/acpi/acpi_dev_interface.h
> @@ -13,6 +13,7 @@ typedef enum {
> ACPI_NVDIMM_HOTPLUG_STATUS = 16,
> ACPI_VMGENID_CHANGE_STATUS = 32,
> ACPI_POWER_DOWN_STATUS = 64,
> + ACPI_SLEEP_STATUS = 128,
> } AcpiEventStatusBits;
>
> #define TYPE_ACPI_DEVICE_IF "acpi-device-interface"
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-14 15:18 ` Alex Bennée
@ 2025-04-15 1:24 ` Annie Li
2025-04-15 15:29 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-15 1:24 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, philmd, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, armbru, miguel.luis,
Gustavo Romero
On 4/14/2025 11:18 AM, Alex Bennée wrote:
> Annie Li <annie.li@oracle.com> writes:
>
>> The GPE event is triggered to notify x86 guest to suppend
>> itself. The function acpi_send_sleep_event will also
>> trigger GED events on HW-reduced systems where ACPI GED
>> sleep event is supported.
>>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> hw/acpi/core.c | 10 ++++++++++
>> include/hw/acpi/acpi.h | 1 +
>> include/hw/acpi/acpi_dev_interface.h | 1 +
>> 3 files changed, 12 insertions(+)
>>
>> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
>> index 58f8964e13..00a9d226f0 100644
>> --- a/hw/acpi/core.c
>> +++ b/hw/acpi/core.c
>> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
>> return -1;
>> }
>>
>> +void acpi_send_sleep_event(void)
>> +{
>> + Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF,
>> NULL);
> Is it a fair assumption there will only ever be one QOM object that
> provides the TYPE_ACPI_DEVICE_IF interface on a system?
I supposed it was, but I might be wrong(seeing some classes have the
same interface). Please correct me if I've missed something, thank you!
Thanks
Annie
>> +
>> + if (obj) {
>> + /* Send sleep event */
>> + acpi_send_event(DEVICE(obj), ACPI_SLEEP_STATUS);
>> + }
>> +}
>> +
>> static void acpi_notify_wakeup(Notifier *notifier, void *data)
>> {
>> ACPIREGS *ar = container_of(notifier, ACPIREGS, wakeup);
>> diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
>> index d1a4fa2af8..64d3ff78ed 100644
>> --- a/include/hw/acpi/acpi.h
>> +++ b/include/hw/acpi/acpi.h
>> @@ -184,6 +184,7 @@ uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar, uint32_t addr);
>>
>> void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq,
>> AcpiEventStatusBits status);
>> +void acpi_send_sleep_event(void);
>>
>> void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq);
>>
>> diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_dev_interface.h
>> index 68d9d15f50..1cb050cd3a 100644
>> --- a/include/hw/acpi/acpi_dev_interface.h
>> +++ b/include/hw/acpi/acpi_dev_interface.h
>> @@ -13,6 +13,7 @@ typedef enum {
>> ACPI_NVDIMM_HOTPLUG_STATUS = 16,
>> ACPI_VMGENID_CHANGE_STATUS = 32,
>> ACPI_POWER_DOWN_STATUS = 64,
>> + ACPI_SLEEP_STATUS = 128,
>> } AcpiEventStatusBits;
>>
>> #define TYPE_ACPI_DEVICE_IF "acpi-device-interface"
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-15 1:24 ` Annie Li
@ 2025-04-15 15:29 ` Philippe Mathieu-Daudé
2025-04-15 21:48 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-04-15 15:29 UTC (permalink / raw)
To: Annie Li, Alex Bennée
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, armbru, miguel.luis,
Gustavo Romero
Hi Annie,
On 15/4/25 03:24, Annie Li wrote:
>
> On 4/14/2025 11:18 AM, Alex Bennée wrote:
>> Annie Li <annie.li@oracle.com> writes:
>>
>>> The GPE event is triggered to notify x86 guest to suppend
>>> itself. The function acpi_send_sleep_event will also
>>> trigger GED events on HW-reduced systems where ACPI GED
>>> sleep event is supported.
>>>
>>> Signed-off-by: Annie Li <annie.li@oracle.com>
>>> ---
>>> hw/acpi/core.c | 10 ++++++++++
>>> include/hw/acpi/acpi.h | 1 +
>>> include/hw/acpi/acpi_dev_interface.h | 1 +
>>> 3 files changed, 12 insertions(+)
>>>
>>> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
>>> index 58f8964e13..00a9d226f0 100644
>>> --- a/hw/acpi/core.c
>>> +++ b/hw/acpi/core.c
>>> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
>>> return -1;
>>> }
>>> +void acpi_send_sleep_event(void)
>>> +{
>>> + Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF,
>>> NULL);
>> Is it a fair assumption there will only ever be one QOM object that
>> provides the TYPE_ACPI_DEVICE_IF interface on a system?
>
> I supposed it was, but I might be wrong(seeing some classes have the
> same interface). Please correct me if I've missed something, thank you!
/**
* object_resolve_path_type:
* @path: the path to resolve
* @typename: the type to look for.
* @ambiguous: (out) (optional): location to store whether the
* lookup failed because it was ambiguous, or %NULL.
* Set to %false on success.
Since you use ambiguous=NULL, your code will only set %obj if there
is exactly ONE device implementing the ACPI_DEVICE interface created.
So far IIUC nothing forbids creating multiple ones, so if you expect
only one, you should add code to handle the "2 or more" case. Or at
least add a comment.
Regards,
Phil.
>>> +
>>> + if (obj) {
>>> + /* Send sleep event */
>>> + acpi_send_event(DEVICE(obj), ACPI_SLEEP_STATUS);
>>> + }
>>> +}
>>> +
>>> static void acpi_notify_wakeup(Notifier *notifier, void *data)
>>> {
>>> ACPIREGS *ar = container_of(notifier, ACPIREGS, wakeup);
>>> diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
>>> index d1a4fa2af8..64d3ff78ed 100644
>>> --- a/include/hw/acpi/acpi.h
>>> +++ b/include/hw/acpi/acpi.h
>>> @@ -184,6 +184,7 @@ uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar,
>>> uint32_t addr);
>>> void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq,
>>> AcpiEventStatusBits status);
>>> +void acpi_send_sleep_event(void);
>>> void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq);
>>> diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/
>>> acpi_dev_interface.h
>>> index 68d9d15f50..1cb050cd3a 100644
>>> --- a/include/hw/acpi/acpi_dev_interface.h
>>> +++ b/include/hw/acpi/acpi_dev_interface.h
>>> @@ -13,6 +13,7 @@ typedef enum {
>>> ACPI_NVDIMM_HOTPLUG_STATUS = 16,
>>> ACPI_VMGENID_CHANGE_STATUS = 32,
>>> ACPI_POWER_DOWN_STATUS = 64,
>>> + ACPI_SLEEP_STATUS = 128,
>>> } AcpiEventStatusBits;
>>> #define TYPE_ACPI_DEVICE_IF "acpi-device-interface"
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-15 15:29 ` Philippe Mathieu-Daudé
@ 2025-04-15 21:48 ` Annie Li
2025-04-16 6:24 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 46+ messages in thread
From: Annie Li @ 2025-04-15 21:48 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Alex Bennée
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, armbru, miguel.luis,
Gustavo Romero
On 4/15/2025 11:29 AM, Philippe Mathieu-Daudé wrote:
> Hi Annie,
>
> On 15/4/25 03:24, Annie Li wrote:
>>
>> On 4/14/2025 11:18 AM, Alex Bennée wrote:
>>> Annie Li <annie.li@oracle.com> writes:
>>>
>>>> The GPE event is triggered to notify x86 guest to suppend
>>>> itself. The function acpi_send_sleep_event will also
>>>> trigger GED events on HW-reduced systems where ACPI GED
>>>> sleep event is supported.
>>>>
>>>> Signed-off-by: Annie Li <annie.li@oracle.com>
>>>> ---
>>>> hw/acpi/core.c | 10 ++++++++++
>>>> include/hw/acpi/acpi.h | 1 +
>>>> include/hw/acpi/acpi_dev_interface.h | 1 +
>>>> 3 files changed, 12 insertions(+)
>>>>
>>>> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
>>>> index 58f8964e13..00a9d226f0 100644
>>>> --- a/hw/acpi/core.c
>>>> +++ b/hw/acpi/core.c
>>>> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
>>>> return -1;
>>>> }
>>>> +void acpi_send_sleep_event(void)
>>>> +{
>>>> + Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF,
>>>> NULL);
>>> Is it a fair assumption there will only ever be one QOM object that
>>> provides the TYPE_ACPI_DEVICE_IF interface on a system?
>>
>> I supposed it was, but I might be wrong(seeing some classes have the
>> same interface). Please correct me if I've missed something, thank you!
>
> /**
> * object_resolve_path_type:
> * @path: the path to resolve
> * @typename: the type to look for.
> * @ambiguous: (out) (optional): location to store whether the
> * lookup failed because it was ambiguous, or %NULL.
> * Set to %false on success.
>
> Since you use ambiguous=NULL, your code will only set %obj if there
> is exactly ONE device implementing the ACPI_DEVICE interface created.
>
> So far IIUC nothing forbids creating multiple ones, so if you expect
> only one, you should add code to handle the "2 or more" case. Or at
> least add a comment.
Actually, there is only one QOM object here.
There are 3 classes involves with TYPE_ACPI_DEVICE_IF interface.
PC, Q35, GED.
For x86 system, the PC or Q35 machine doesn't use GED event, instead,
it sends the GPE event.
For microvm/ARM/virt system, GED device is used, its own
TYPE_ACPI_DEVICE_IF
is involved.
All these objects do not exist at the same time, so it is safe to assume
only one QOM
object exists here.
Thanks
Annie
>
> Regards,
>
> Phil.
>
>>>> +
>>>> + if (obj) {
>>>> + /* Send sleep event */
>>>> + acpi_send_event(DEVICE(obj), ACPI_SLEEP_STATUS);
>>>> + }
>>>> +}
>>>> +
>>>> static void acpi_notify_wakeup(Notifier *notifier, void *data)
>>>> {
>>>> ACPIREGS *ar = container_of(notifier, ACPIREGS, wakeup);
>>>> diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
>>>> index d1a4fa2af8..64d3ff78ed 100644
>>>> --- a/include/hw/acpi/acpi.h
>>>> +++ b/include/hw/acpi/acpi.h
>>>> @@ -184,6 +184,7 @@ uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar,
>>>> uint32_t addr);
>>>> void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq,
>>>> AcpiEventStatusBits status);
>>>> +void acpi_send_sleep_event(void);
>>>> void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq);
>>>> diff --git a/include/hw/acpi/acpi_dev_interface.h
>>>> b/include/hw/acpi/ acpi_dev_interface.h
>>>> index 68d9d15f50..1cb050cd3a 100644
>>>> --- a/include/hw/acpi/acpi_dev_interface.h
>>>> +++ b/include/hw/acpi/acpi_dev_interface.h
>>>> @@ -13,6 +13,7 @@ typedef enum {
>>>> ACPI_NVDIMM_HOTPLUG_STATUS = 16,
>>>> ACPI_VMGENID_CHANGE_STATUS = 32,
>>>> ACPI_POWER_DOWN_STATUS = 64,
>>>> + ACPI_SLEEP_STATUS = 128,
>>>> } AcpiEventStatusBits;
>>>> #define TYPE_ACPI_DEVICE_IF "acpi-device-interface"
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-15 21:48 ` Annie Li
@ 2025-04-16 6:24 ` Philippe Mathieu-Daudé
2025-04-17 17:32 ` Gustavo Romero
0 siblings, 1 reply; 46+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-04-16 6:24 UTC (permalink / raw)
To: Annie Li, Alex Bennée
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, armbru, miguel.luis,
Gustavo Romero
On 15/4/25 23:48, Annie Li wrote:
>
> On 4/15/2025 11:29 AM, Philippe Mathieu-Daudé wrote:
>> Hi Annie,
>>
>> On 15/4/25 03:24, Annie Li wrote:
>>>
>>> On 4/14/2025 11:18 AM, Alex Bennée wrote:
>>>> Annie Li <annie.li@oracle.com> writes:
>>>>
>>>>> The GPE event is triggered to notify x86 guest to suppend
>>>>> itself. The function acpi_send_sleep_event will also
>>>>> trigger GED events on HW-reduced systems where ACPI GED
>>>>> sleep event is supported.
>>>>>
>>>>> Signed-off-by: Annie Li <annie.li@oracle.com>
>>>>> ---
>>>>> hw/acpi/core.c | 10 ++++++++++
>>>>> include/hw/acpi/acpi.h | 1 +
>>>>> include/hw/acpi/acpi_dev_interface.h | 1 +
>>>>> 3 files changed, 12 insertions(+)
>>>>>
>>>>> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
>>>>> index 58f8964e13..00a9d226f0 100644
>>>>> --- a/hw/acpi/core.c
>>>>> +++ b/hw/acpi/core.c
>>>>> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
>>>>> return -1;
>>>>> }
>>>>> +void acpi_send_sleep_event(void)
>>>>> +{
>>>>> + Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF,
>>>>> NULL);
>>>> Is it a fair assumption there will only ever be one QOM object that
>>>> provides the TYPE_ACPI_DEVICE_IF interface on a system?
>>>
>>> I supposed it was, but I might be wrong(seeing some classes have the
>>> same interface). Please correct me if I've missed something, thank you!
>>
>> /**
>> * object_resolve_path_type:
>> * @path: the path to resolve
>> * @typename: the type to look for.
>> * @ambiguous: (out) (optional): location to store whether the
>> * lookup failed because it was ambiguous, or %NULL.
>> * Set to %false on success.
>>
>> Since you use ambiguous=NULL, your code will only set %obj if there
>> is exactly ONE device implementing the ACPI_DEVICE interface created.
>>
>> So far IIUC nothing forbids creating multiple ones, so if you expect
>> only one, you should add code to handle the "2 or more" case. Or at
>> least add a comment.
> Actually, there is only one QOM object here.
> There are 3 classes involves with TYPE_ACPI_DEVICE_IF interface.
> PC, Q35, GED.
> For x86 system, the PC or Q35 machine doesn't use GED event, instead,
> it sends the GPE event.
> For microvm/ARM/virt system, GED device is used, its own
> TYPE_ACPI_DEVICE_IF
> is involved.
> All these objects do not exist at the same time, so it is safe to assume
> only one QOM
> object exists here.
I agree this is the case as of today, but I'm not sure about tomorrow.
AFAICT nothing prohibit instanciating more than 1 type implementing
TYPE_ACPI_DEVICE_IF.
Anyway we are just trying to be more cautious here; up to the
maintainer.
Regards,
Phil.
>
> Thanks
> Annie
>>
>> Regards,
>>
>> Phil.
>>
>>>>> +
>>>>> + if (obj) {
>>>>> + /* Send sleep event */
>>>>> + acpi_send_event(DEVICE(obj), ACPI_SLEEP_STATUS);
>>>>> + }
>>>>> +}
>>>>> +
>>>>> static void acpi_notify_wakeup(Notifier *notifier, void *data)
>>>>> {
>>>>> ACPIREGS *ar = container_of(notifier, ACPIREGS, wakeup);
>>>>> diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
>>>>> index d1a4fa2af8..64d3ff78ed 100644
>>>>> --- a/include/hw/acpi/acpi.h
>>>>> +++ b/include/hw/acpi/acpi.h
>>>>> @@ -184,6 +184,7 @@ uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar,
>>>>> uint32_t addr);
>>>>> void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq,
>>>>> AcpiEventStatusBits status);
>>>>> +void acpi_send_sleep_event(void);
>>>>> void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq);
>>>>> diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/
>>>>> acpi/ acpi_dev_interface.h
>>>>> index 68d9d15f50..1cb050cd3a 100644
>>>>> --- a/include/hw/acpi/acpi_dev_interface.h
>>>>> +++ b/include/hw/acpi/acpi_dev_interface.h
>>>>> @@ -13,6 +13,7 @@ typedef enum {
>>>>> ACPI_NVDIMM_HOTPLUG_STATUS = 16,
>>>>> ACPI_VMGENID_CHANGE_STATUS = 32,
>>>>> ACPI_POWER_DOWN_STATUS = 64,
>>>>> + ACPI_SLEEP_STATUS = 128,
>>>>> } AcpiEventStatusBits;
>>>>> #define TYPE_ACPI_DEVICE_IF "acpi-device-interface"
>>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 01/13] acpi: Implement control method sleep button
2025-04-11 20:28 ` [RFC V3 PATCH 01/13] acpi: Implement control method sleep button Annie Li
@ 2025-04-17 17:28 ` Gustavo Romero
2025-04-17 18:40 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:28 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: mst, paul, Jonathan.Cameron, git, imammedo, miguel.luis
Hi Annie,
On 4/11/25 17:28, Annie Li wrote:
> The fixed hardware sleep button isn't appropriate for hardware
> reduced platform. This patch implements the control method sleep
> button in a separate source file so that the button can be added
> for various platforms.
>
> Co-developed-by: Miguel Luis <miguel.luis@oracle.com>
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/acpi/control_method_device.c | 33 +++++++++++++++++++++++++
> hw/acpi/meson.build | 1 +
> include/hw/acpi/control_method_device.h | 21 ++++++++++++++++
> 3 files changed, 55 insertions(+)
>
> diff --git a/hw/acpi/control_method_device.c b/hw/acpi/control_method_device.c
> new file mode 100644
> index 0000000000..c3b1d484c4
> --- /dev/null
> +++ b/hw/acpi/control_method_device.c
> @@ -0,0 +1,33 @@
> +/*
> + * Control Method Device
> + *
> + * Copyright (c) 2023 Oracle and/or its affiliates.
> + *
> + *
> + * Authors:
> + * Annie Li <annie.li@oracle.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#include "qemu/osdep.h"
> +#include "hw/acpi/control_method_device.h"
> +#include "hw/mem/nvdimm.h"
NVDIMM is out of context here, please use:
#include "hw/acpi/aml-build.h"
instead for the aml_* symbols.
> +/*
> + * The control method sleep button[ACPI v6.5 Section 4.8.2.2.2.2]
> + * resides in generic hardware address spaces. The sleep button
> + * is defined as _HID("PNP0C0E") that associates with device "SLPB".
> + */
> +void acpi_dsdt_add_sleep_button(Aml *scope)
> +{
> + Aml *dev = aml_device(ACPI_SLEEP_BUTTON_DEVICE);
> + aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0C0E")));
I see that since GPE event handler L07 will be tied to the sleep button
device there is no _PRW variable defined here. Do you mind adding a comment
here about it? Something like:
/* No _PRW, the sleeping button device is always tied to GPE L07 event handler. */
Cheers,
Gustavo
> + aml_append(dev, aml_operation_region("\\SLP", AML_SYSTEM_IO,
> + aml_int(0x201), 0x1));
> + Aml *field = aml_field("\\SLP", AML_BYTE_ACC, AML_NOLOCK,
> + AML_WRITE_AS_ZEROS);
> + aml_append(field, aml_named_field("SBP", 1));
> + aml_append(dev, field);
> + aml_append(scope, dev);
> +}
> diff --git a/hw/acpi/meson.build b/hw/acpi/meson.build
> index 73f02b9691..a62e625cef 100644
> --- a/hw/acpi/meson.build
> +++ b/hw/acpi/meson.build
> @@ -17,6 +17,7 @@ acpi_ss.add(when: 'CONFIG_ACPI_CXL', if_true: files('cxl.c'), if_false: files('c
> acpi_ss.add(when: 'CONFIG_ACPI_VMGENID', if_true: files('vmgenid.c'))
> acpi_ss.add(when: 'CONFIG_ACPI_VMCLOCK', if_true: files('vmclock.c'))
> acpi_ss.add(when: 'CONFIG_ACPI_HW_REDUCED', if_true: files('generic_event_device.c'))
> +acpi_ss.add(when: 'CONFIG_ACPI_HW_REDUCED', if_true: files('control_method_device.c'))
> acpi_ss.add(when: 'CONFIG_ACPI_HMAT', if_true: files('hmat.c'))
> acpi_ss.add(when: 'CONFIG_ACPI_APEI', if_true: files('ghes.c'), if_false: files('ghes-stub.c'))
> acpi_ss.add(when: 'CONFIG_ACPI_PIIX4', if_true: files('piix4.c'))
> diff --git a/include/hw/acpi/control_method_device.h b/include/hw/acpi/control_method_device.h
> new file mode 100644
> index 0000000000..079f1a74dd
> --- /dev/null
> +++ b/include/hw/acpi/control_method_device.h
> @@ -0,0 +1,21 @@
> +/*
> + * Control Method Device
> + *
> + * Copyright (c) 2023 Oracle and/or its affiliates.
> + *
> + *
> + * Authors:
> + * Annie Li <annie.li@oracle.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +
> +#ifndef HW_ACPI_CONTROL_METHOD_DEVICE_H
> +#define HW_ACPI_CONTROL_NETHOD_DEVICE_H
> +
> +#define ACPI_SLEEP_BUTTON_DEVICE "SLPB"
> +
> +void acpi_dsdt_add_sleep_button(Aml *scope);
> +
> +#endif
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 02/13] test/acpi: allow DSDT table changes for x86 platform
2025-04-11 20:31 ` [RFC V3 PATCH 02/13] test/acpi: allow DSDT table changes for x86 platform Annie Li
@ 2025-04-17 17:29 ` Gustavo Romero
2025-04-17 18:42 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:29 UTC (permalink / raw)
To: annie.li, qemu-devel; +Cc: mst, imammedo, alistair.francis, sunilvl, ribalda
Hi Annie,
On 4/11/25 17:31, Annie Li wrote:
> list changed files in tests/qtest/bios-tables-test-allowed-diff.h
nit: List
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> tests/qtest/bios-tables-test-allowed-diff.h | 42 +++++++++++++++++++++
> 1 file changed, 42 insertions(+)
>
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index dfb8523c8b..a1047913af 100644
> --- a/tests/qtest/bios-tables-test-allowed-diff.h
> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> @@ -1 +1,43 @@
> /* List of comma-separated changed AML files to ignore */
> +"tests/data/acpi/x86/pc/DSDT",
> +"tests/data/acpi/x86/pc/DSDT.acpierst",
> +"tests/data/acpi/x86/pc/DSDT.acpihmat",
> +"tests/data/acpi/x86/pc/DSDT.bridge",
> +"tests/data/acpi/x86/pc/DSDT.cphp",
> +"tests/data/acpi/x86/pc/DSDT.dimmpxm",
> +"tests/data/acpi/x86/pc/DSDT.hpbridge",
> +"tests/data/acpi/x86/pc/DSDT.hpbrroot",
> +"tests/data/acpi/x86/pc/DSDT.ipmikcs",
> +"tests/data/acpi/x86/pc/DSDT.memhp",
> +"tests/data/acpi/x86/pc/DSDT.nohpet",
> +"tests/data/acpi/x86/pc/DSDT.numamem",
> +"tests/data/acpi/x86/pc/DSDT.roothp",
> +"tests/data/acpi/x86/q35/DSDT",
> +"tests/data/acpi/x86/q35/DSDT.acpierst",
> +"tests/data/acpi/x86/q35/DSDT.acpihmat",
> +"tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x",
> +"tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator",
> +"tests/data/acpi/x86/q35/DSDT.applesmc",
> +"tests/data/acpi/x86/q35/DSDT.bridge",
> +"tests/data/acpi/x86/q35/DSDT.core-count",
> +"tests/data/acpi/x86/q35/DSDT.core-count2",
> +"tests/data/acpi/x86/q35/DSDT.cphp",
> +"tests/data/acpi/x86/q35/DSDT.cxl",
> +"tests/data/acpi/x86/q35/DSDT.dimmpxm",
> +"tests/data/acpi/x86/q35/DSDT.ipmibt",
> +"tests/data/acpi/x86/q35/DSDT.ipmismbus",
> +"tests/data/acpi/x86/q35/DSDT.ivrs",
> +"tests/data/acpi/x86/q35/DSDT.memhp",
> +"tests/data/acpi/x86/q35/DSDT.mmio64",
> +"tests/data/acpi/x86/q35/DSDT.multi-bridge",
> +"tests/data/acpi/x86/q35/DSDT.noacpihp",
> +"tests/data/acpi/x86/q35/DSDT.nohpet",
> +"tests/data/acpi/x86/q35/DSDT.numamem",
> +"tests/data/acpi/x86/q35/DSDT.pvpanic-isa",
> +"tests/data/acpi/x86/q35/DSDT.thread-count",
> +"tests/data/acpi/x86/q35/DSDT.thread-count2",
> +"tests/data/acpi/x86/q35/DSDT.tis.tpm12",
> +"tests/data/acpi/x86/q35/DSDT.tis.tpm2",
> +"tests/data/acpi/x86/q35/DSDT.type4-count",
> +"tests/data/acpi/x86/q35/DSDT.viot",
> +"tests/data/acpi/x86/q35/DSDT.xapic",
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 03/13] acpi: Support Control Method sleep button for x86
2025-04-11 20:34 ` [RFC V3 PATCH 03/13] acpi: Support Control Method sleep button for x86 Annie Li
@ 2025-04-17 17:30 ` Gustavo Romero
2025-04-17 18:42 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:30 UTC (permalink / raw)
To: annie.li, qemu-devel; +Cc: mst, imammedo, philmd, zhao1.liu, Jonathan.Cameron
Hi Annie,
On 4/11/25 17:34, Annie Li wrote:
> Add Control Method Sleep button and its GPE event handler for
> x86 platform. The GPE event handler notifies OSPM when the
> Sleep button event is triggered.
>
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/i386/acpi-build.c | 22 +++++++++++++++++++++-
> 1 file changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
> index 3fffa4a332..4be3595e5a 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -40,6 +40,7 @@
> #include "hw/acpi/acpi_aml_interface.h"
> #include "hw/input/i8042.h"
> #include "hw/acpi/memory_hotplug.h"
> +#include "hw/acpi/control_method_device.h"
> #include "system/tpm.h"
> #include "hw/acpi/tpm.h"
> #include "hw/acpi/vmgenid.h"
> @@ -1359,7 +1360,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
> NULL);
> Object *q35 = object_resolve_type_unambiguous(TYPE_Q35_HOST_DEVICE, NULL);
> CrsRangeEntry *entry;
> - Aml *dsdt, *sb_scope, *scope, *dev, *method, *field, *pkg, *crs;
> + Aml *dsdt, *sb_scope, *scope, *dev, *method, *field, *pkg, *crs, *condition;
> CrsRangeSet crs_range_set;
> PCMachineState *pcms = PC_MACHINE(machine);
> PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(machine);
> @@ -1465,6 +1466,25 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
> }
> aml_append(dsdt, scope);
>
> + sb_scope = aml_scope("_SB");
> + acpi_dsdt_add_sleep_button(sb_scope);
> + aml_append(dsdt, sb_scope);
> +
> + /*
> + * The event handler for the control method sleep button is generated
> + * for notifying OSPM[ACPI v6.5 Section 4.8.2.2.2.].
Typo: Section 4.8.2.2.2.2
Please use the form "... OSPM (ACPI v6.5, Section 4.8.2.2.2.2)" for citations.
> + */
> + scope = aml_scope("\\_GPE");
> + method = aml_method("_L07", 0, AML_NOTSERIALIZED);
> + condition = aml_if(aml_name("\\_SB.SLPB.SBP"));
> + aml_append(condition, aml_store(aml_int(1), aml_name("\\_SB.SLPB.SBP")));
Why not concatenate with ACPI_SLEEP_BUTTON_DEVICE here and in the conditional
above it as it's done below for the Notify()?
Cheers,
Gustavo
> + aml_append(condition,
> + aml_notify(aml_name("\\_SB."ACPI_SLEEP_BUTTON_DEVICE),
> + aml_int(0x80)));
> + aml_append(method, condition);
> + aml_append(scope, method);
> + aml_append(dsdt, scope);
> +
> if (pcmc->legacy_cpu_hotplug) {
> build_legacy_cpu_hotplug_aml(dsdt, machine, pm->cpu_hp_io_base);
> } else {
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 04/13] tests/qtest/bios-table-tests: Update ACPI table binaries for x86
2025-04-11 20:39 ` [RFC V3 PATCH 04/13] tests/qtest/bios-table-tests: Update ACPI table binaries " Annie Li
@ 2025-04-17 17:31 ` Gustavo Romero
2025-04-17 18:44 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:31 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru
Hi Annie,
On 4/11/25 17:39, Annie Li wrote:
> Following is the diff generated by the step 5 and 6 in
> tests/qtest/bios-tables-test.c
>
> Diff from iasl to show changes in DSDT table:
>
> --- /tmp/asl-34PV42.dsl 2025-04-09 19:04:34.846646690 +0000
> +++ /tmp/asl-5XBW42.dsl 2025-04-09 19:04:34.839646378 +0000
> @@ -1,30 +1,30 @@
> /*
> * Intel ACPI Component Architecture
> * AML/ASL+ Disassembler version 20210604 (64-bit version)
> * Copyright (c) 2000 - 2021 Intel Corporation
> *
> * Disassembling to symbolic ASL+ operators
> *
> - * Disassembly of tests/data/acpi/x86/q35/DSDT, Wed Apr 9 19:04:34 2025
> + * Disassembly of /tmp/aml-EMBW42, Wed Apr 9 19:04:34 2025
This complete valid diff in the commit message seems to confuse git am and
b4. Please remove the initial 2 lines to make it invalid, i.e. remove:
> --- /tmp/asl-34PV42.dsl 2025-04-09 19:04:34.846646690 +0000
> +++ /tmp/asl-5XBW42.dsl 2025-04-09 19:04:34.839646378 +0000
Also, to me, it's simple to concat:
> - * Disassembly of tests/data/acpi/x86/q35/DSDT, Wed Apr 9 19:04:34 2025
> + * Disassembly of /tmp/aml-EMBW42, Wed Apr 9 19:04:34 2025
into:
> * Disassembly of tests/data/acpi/x86/q35/DSDT, Wed Apr 9 19:04:34 2025
since /tmp/aml-EMBW42 brings no information to the commit message.
Otherwise:
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
Cheers,
Gustavo
> *
> * Original Table Header:
> * Signature "DSDT"
> - * Length 0x000020F8 (8440)
> + * Length 0x00002166 (8550)
> * Revision 0x01 **** 32-bit table (V1), no 64-bit math support
> - * Checksum 0xBE
> + * Checksum 0x1E
> * OEM ID "BOCHS "
> * OEM Table ID "BXPC "
> * OEM Revision 0x00000001 (1)
> * Compiler ID "BXPC"
> * Compiler Version 0x00000001 (1)
> */
> DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPC ", 0x00000001)
> {
> Scope (\)
> {
> OperationRegion (DBG, SystemIO, 0x0402, One)
> Field (DBG, ByteAcc, NoLock, Preserve)
> {
> DBGB, 8
> }
>
> @@ -2852,32 +2852,57 @@
> {
> Memory32Fixed (ReadOnly,
> 0xFED00000, // Address Base
> 0x00000400, // Address Length
> )
> })
> }
> }
>
> Scope (_GPE)
> {
> Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID: Hardware ID
> }
>
> Scope (_SB)
> {
> + Device (SLPB)
> + {
> + Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device */) // _HID: Hardware ID
> + OperationRegion (\SLP, SystemIO, 0x0201, One)
> + Field (\SLP, ByteAcc, NoLock, WriteAsZeros)
> + {
> + SBP, 1
> + }
> + }
> + }
> +
> + Scope (\_GPE)
> + {
> + Method (_L07, 0, NotSerialized) // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
> + {
> + If (\_SB.SLPB.SBP)
> + {
> + \_SB.SLPB.SBP = One
> + Notify (\_SB.SLPB, 0x80) // Status Change
> + }
> + }
> + }
> +
> + Scope (_SB)
> + {
> Device (\_SB.PCI0.PRES)
> {
> Name (_HID, EisaId ("PNP0A06") /* Generic Container Device */) // _HID: Hardware ID
> Name (_UID, "CPU Hotplug resources") // _UID: Unique ID
> Mutex (CPLK, 0x00)
> Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
> {
> IO (Decode16,
> 0x0CD8, // Range Minimum
> 0x0CD8, // Range Maximum
> 0x01, // Alignment
> 0x0C, // Length
> )
> })
> OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C)
> Field (PRST, ByteAcc, NoLock, WriteAsZeros)
>
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> tests/data/acpi/x86/pc/DSDT | Bin 8611 -> 8721 bytes
> tests/data/acpi/x86/pc/DSDT.acpierst | Bin 8522 -> 8632 bytes
> tests/data/acpi/x86/pc/DSDT.acpihmat | Bin 9936 -> 10046 bytes
> tests/data/acpi/x86/pc/DSDT.bridge | Bin 15482 -> 15592 bytes
> tests/data/acpi/x86/pc/DSDT.cphp | Bin 9075 -> 9185 bytes
> tests/data/acpi/x86/pc/DSDT.dimmpxm | Bin 10265 -> 10375 bytes
> tests/data/acpi/x86/pc/DSDT.hpbridge | Bin 8562 -> 8672 bytes
> tests/data/acpi/x86/pc/DSDT.hpbrroot | Bin 5100 -> 5210 bytes
> tests/data/acpi/x86/pc/DSDT.ipmikcs | Bin 8683 -> 8793 bytes
> tests/data/acpi/x86/pc/DSDT.memhp | Bin 9970 -> 10080 bytes
> tests/data/acpi/x86/pc/DSDT.nohpet | Bin 8469 -> 8579 bytes
> tests/data/acpi/x86/pc/DSDT.numamem | Bin 8617 -> 8727 bytes
> tests/data/acpi/x86/pc/DSDT.roothp | Bin 12404 -> 12514 bytes
> tests/data/acpi/x86/q35/DSDT | Bin 8440 -> 8550 bytes
> tests/data/acpi/x86/q35/DSDT.acpierst | Bin 8457 -> 8567 bytes
> tests/data/acpi/x86/q35/DSDT.acpihmat | Bin 9765 -> 9875 bytes
> .../data/acpi/x86/q35/DSDT.acpihmat-generic-x | Bin 12650 -> 12760 bytes
> .../acpi/x86/q35/DSDT.acpihmat-noinitiator | Bin 8719 -> 8829 bytes
> tests/data/acpi/x86/q35/DSDT.applesmc | Bin 8486 -> 8596 bytes
> tests/data/acpi/x86/q35/DSDT.bridge | Bin 12053 -> 12163 bytes
> tests/data/acpi/x86/q35/DSDT.core-count | Bin 12998 -> 13108 bytes
> tests/data/acpi/x86/q35/DSDT.core-count2 | Bin 33855 -> 33965 bytes
> tests/data/acpi/x86/q35/DSDT.cphp | Bin 8904 -> 9014 bytes
> tests/data/acpi/x86/q35/DSDT.cxl | Bin 13231 -> 13341 bytes
> tests/data/acpi/x86/q35/DSDT.dimmpxm | Bin 10094 -> 10204 bytes
> tests/data/acpi/x86/q35/DSDT.ipmibt | Bin 8515 -> 8625 bytes
> tests/data/acpi/x86/q35/DSDT.ipmismbus | Bin 8528 -> 8638 bytes
> tests/data/acpi/x86/q35/DSDT.ivrs | Bin 8457 -> 8567 bytes
> tests/data/acpi/x86/q35/DSDT.memhp | Bin 9799 -> 9909 bytes
> tests/data/acpi/x86/q35/DSDT.mmio64 | Bin 9570 -> 9680 bytes
> tests/data/acpi/x86/q35/DSDT.multi-bridge | Bin 13293 -> 13403 bytes
> tests/data/acpi/x86/q35/DSDT.noacpihp | Bin 8302 -> 8412 bytes
> tests/data/acpi/x86/q35/DSDT.nohpet | Bin 8298 -> 8408 bytes
> tests/data/acpi/x86/q35/DSDT.numamem | Bin 8446 -> 8556 bytes
> tests/data/acpi/x86/q35/DSDT.pvpanic-isa | Bin 8541 -> 8651 bytes
> tests/data/acpi/x86/q35/DSDT.thread-count | Bin 12998 -> 13108 bytes
> tests/data/acpi/x86/q35/DSDT.thread-count2 | Bin 33855 -> 33965 bytes
> tests/data/acpi/x86/q35/DSDT.tis.tpm12 | Bin 9046 -> 9156 bytes
> tests/data/acpi/x86/q35/DSDT.tis.tpm2 | Bin 9072 -> 9182 bytes
> tests/data/acpi/x86/q35/DSDT.type4-count | Bin 18674 -> 18784 bytes
> tests/data/acpi/x86/q35/DSDT.viot | Bin 14697 -> 14807 bytes
> tests/data/acpi/x86/q35/DSDT.xapic | Bin 35803 -> 35913 bytes
> tests/qtest/bios-tables-test-allowed-diff.h | 42 ------------------
> 43 files changed, 42 deletions(-)
>
> diff --git a/tests/data/acpi/x86/pc/DSDT b/tests/data/acpi/x86/pc/DSDT
> index 4beb5194b84a711fcb52e3e52cc2096497d18442..62bd8eae9602af4c590c6962689da54e4bff9c70 100644
> GIT binary patch
> delta 152
> zcmZ4NJkf>ACD<iIP>F$oF<>LtX`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
> Q46)9G3#x4MGoHO70CXWM82|tP
>
> delta 24
> gcmbQ}ve=o+CD<iou_6Nl<A;r0r+GFz^PUp{0AxW3ApigX
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.acpierst b/tests/data/acpi/x86/pc/DSDT.acpierst
> index abda6863b64c5dc8ba5aba1a286cbfa76772a1e4..6c9cf3df3902fb30c704b7a657c4c08402c28837 100644
> GIT binary patch
> delta 152
> zcmX@*w8NRpCD<iohav+5<IIg*r+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
> zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&3)
> QGsHR%E~v82&v;Tq03>NE`v3p{
>
> delta 24
> fcmdnte9DQ-CD<jzOOb(r(PAUlX`ao_yrm)lUH%6H
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.acpihmat b/tests/data/acpi/x86/pc/DSDT.acpihmat
> index d081db26d7ba504b3344fad130d5812419291ac0..36f952d730a1d64c1babf7adf05c0ed364f559f3 100644
> GIT binary patch
> delta 152
> zcmccMyU&lyCD<jzPMv{)k#{54X`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*L
> Q39-(D3#x4MGoDwH0Ih*5tpET3
>
> delta 24
> gcmdnzcfps-CD<k8f*Jz@<Jyf}r+GFz^Zu3u0B*SmumAu6
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.bridge b/tests/data/acpi/x86/pc/DSDT.bridge
> index e16897dc5f0fbb3f7b4de8db913884046246cc3b..da189168ffdae5817a4fe7b0e62531a333cb3d75 100644
> GIT binary patch
> delta 152
> zcmexW@uHH;CD<k8g$)A(WBf+0(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
> Q8DgCW7gX8iXFOB%0jE+eBLDyZ
>
> delta 24
> gcmaD+`KyA<CD<jT%7%e~@!v+S(>$A<d6((~0DNZ&D*ylh
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.cphp b/tests/data/acpi/x86/pc/DSDT.cphp
> index e95711cd9cde5d50b841b701ae0fed5a4b15e872..d6f96a071f1a7d570400dffedfd10af38eee0faf 100644
> GIT binary patch
> delta 152
> zcmezD_RyWnCD<k8p)vyl<B^SAr+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
> zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&34
> Q0>nBGE~v82&v<&p0E=BL^8f$<
>
> delta 24
> fcmaFp{@IPoCD<jTSeb!=F?l1`X`ao_yz|5WYLN%t
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.dimmpxm b/tests/data/acpi/x86/pc/DSDT.dimmpxm
> index 90ba66b9164f9a958d5a3c4371b1eec03e922828..ee06a74106606a3725b7f6882d020cf487873771 100644
> GIT binary patch
> delta 152
> zcmbOk&>qO;66_MvuED^-Sh$hvK2N<te6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7p=a
> Qfmr9k1y#2B7mvI&0NQISX8-^I
>
> delta 24
> fcmZn<oEgC766_KpslmX&D6o<1KF{WGUIS?WQ{)C!
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.hpbridge b/tests/data/acpi/x86/pc/DSDT.hpbridge
> index 0eafe5fbf3d73719c9c3e6e26371863bfb44ed2f..1730d2ca1d83c08eca05e35ac1691e559a618489 100644
> GIT binary patch
> delta 152
> zcmez5^uU?RCD<k8fg%F~W9vq)(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
> Q8DgCW7gX8iXFNS30AG15hX4Qo
>
> delta 24
> fcmaFh{K<*SCD<jTNRfeoQDr07X`ao_ymLhWXATFC
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.hpbrroot b/tests/data/acpi/x86/pc/DSDT.hpbrroot
> index 077a4cc988dc417a1bc9317dddd2dbd96ff1ff50..4ae9b5586f27761f77eabc801467a343a88d84a4 100644
> GIT binary patch
> delta 152
> zcmaE(eoKSPCD<h-N`!%d@$g2j9PWC9_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
> Q46)9G3#x2$J9jDv0MnK#{Qv*}
>
> delta 24
> fcmcbm@kX7?CD<k8jW7cPWAa9>9PZ6exXU;IX|o6f
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.ipmikcs b/tests/data/acpi/x86/pc/DSDT.ipmikcs
> index 8d465f027772f9c59b0c328c1a099e374a6d2a90..71e2566c59b03670df98d8f3dced9b7f7df1a985 100644
> GIT binary patch
> delta 152
> zcmaFueA9)?CD<h-Qi*|q@ytf9(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
> Q8DgCW7gX8iXFRN;05ZWVwg3PC
>
> delta 24
> fcmccV^4gipCD<k8wITxpW6nmd(>$A<dBsElZqf(7
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.memhp b/tests/data/acpi/x86/pc/DSDT.memhp
> index e3b49757cb7abd7536ee89a6824967d2cb2485cf..5955bc2920d5327a90ae604d406496d73d543378 100644
> GIT binary patch
> delta 152
> zcmez5`@oOOCD<h-L7jntQDr07X`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*E
> Q46)9G3#x4MGaeo(0P|uiP5=M^
>
> delta 24
> gcmaFh_sN&bCD<k8lNtj9<B^SAr+GFz^U6vA0CoNdPyhe`
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.nohpet b/tests/data/acpi/x86/pc/DSDT.nohpet
> index 9e772c1316d0ea07c51717466c4c7e383553f345..2eef579e2fb3629b3e6a66eccb1565e2fbf2864d 100644
> GIT binary patch
> delta 152
> zcmbR0)a=aV66_MvtjNH?D7BHxmZ#nzKG-Qfx=AzGC%}m#-ow*{$MFIWUvxtZP#~U>
> zn~{kzx{(LWaSV0>iU`=m#JdN$ikQax7??9G(2LP$2AKfT4w5fmL=$L>(SylzH3&F4
> QL#*@Qf-2h_!LwHc05@AI8UO$Q
>
> delta 24
> fcmZp6p6bNq66_Kps>r~=xN{?yEzjnyJm*9JRQv}a
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.numamem b/tests/data/acpi/x86/pc/DSDT.numamem
> index 9bfbfc28213713c208dfc38a85abb46fb190871d..b2c8220fefd1175ff403a77f77ea2fab7675d096 100644
> GIT binary patch
> delta 152
> zcmZ4KJl%!MCD<iIT#12!@y<rB(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
> Q8DgCW7gX8iXFP{R0Lqsu!vFvP
>
> delta 24
> gcmbR4veKE$CD<ior6L0ZW6egc(>$A<d9R270AVu+#Q*>R
>
> diff --git a/tests/data/acpi/x86/pc/DSDT.roothp b/tests/data/acpi/x86/pc/DSDT.roothp
> index efbee6d8aa5c62ff4fcb83e6c5cff59542977850..287ec23844e6887a24276d21b9bdcc415796e656 100644
> GIT binary patch
> delta 152
> zcmey8@F<bXCD<k8kpTk(<K2y1r+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
> zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&3)
> QGsHR%E~v82&v^Qj0ln}oK>z>%
>
> delta 24
> fcmaEq_$7hMCD<jT#DIZ;v1TLJX`ao_yz`X-aRmrT
>
> diff --git a/tests/data/acpi/x86/q35/DSDT b/tests/data/acpi/x86/q35/DSDT
> index e5e8d1e041e20e1b3ee56a5c93fe3d6ebd721ee6..813e489f98b6be8958d8bf9bcf1d0b2eed691a5e 100644
> GIT binary patch
> delta 152
> zcmez2_{@pRCD<h-O_70tQEnrbq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
> QhFIsp1y#1$MDhqb0FYQJkpKVy
>
> delta 24
> gcmaFn^uv+MCD<k8hXMlw<Gzhtl9HPzN?v6L0CM#Rm;e9(
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.acpierst b/tests/data/acpi/x86/q35/DSDT.acpierst
> index 072a3fe2cd17dfe06658dfd82588f69787810114..2d81bcbc781d3fc68a053d5319fbdcfa153a4653 100644
> GIT binary patch
> delta 152
> zcmeBl`tHQ#66_LEuE@Z^xNjquq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
> QhFIsp1y#1$MDi*-0Jz>N_5c6?
>
> delta 24
> fcmezF)ak_K66_MfsmQ><7`u^6QgZV|$!F{US$zim
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat b/tests/data/acpi/x86/q35/DSDT.acpihmat
> index 2a4f2fc1d5c5649673353186e67ff5b5e59e8d53..0b911c9425d2f59fc6e0a2aac97fe23ee0b4a18d 100644
> GIT binary patch
> delta 152
> zcmZ4LGufBRCD<iovKj*e<L!-Hl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klg
> Q6JnhQ7gX716UmP}0KMcZCjbBd
>
> delta 24
> fcmbR2yVQrvCD<iIRgHmxv1%iiq~zv_l1#h+Rh|Ya
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x b/tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x
> index 7911c058bba5005d318b8db8d6da5c1ee381b0f1..bd0f517847bd71eb78db72010df699c1bea64d4a 100644
> GIT binary patch
> delta 152
> zcmaErbR(I|CD<k8h9Lt3W5Y%+Ny&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*S
> Q2eHnB3#x3hiKLkX03_=xHUIzs
>
> delta 24
> fcmcbS{3?mdCD<h-%aDPAQGO$rq~zv_lI{`!XLtuC
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator b/tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator
> index 580b4a456a20fc0cc0a832eaf74193b46d8ae8b1..3ab30d885f483c1626a9ab5a3501610923485462 100644
> GIT binary patch
> delta 152
> zcmeBo`Rl^v66_LEtHi*-ICUeJq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7p=Y
> Qfmr9k1y#1$MDjKV0J0=20{{R3
>
> delta 24
> fcmezC((l6M66_Mfuf)K>XtI$@QgZV|$u}GTS;PkN
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.applesmc b/tests/data/acpi/x86/q35/DSDT.applesmc
> index 5e8220e38d6f88b103f6eb3eb7c78dfa466882dc..7e17c9ebb3b7d28526bd04c9af5ca05a3461ac13 100644
> GIT binary patch
> delta 152
> zcmZ4HG{u?ACD<ioiXsC8Bi}|YNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
> Q46)9G3#x3hiR34C075n@I{*Lx
>
> delta 24
> fcmbQ@yv&KqCD<iIO_70taqUJfNy*I<C7C$@RoDhY
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.bridge b/tests/data/acpi/x86/q35/DSDT.bridge
> index ee039453af1071e00a81ee7b37cf8f417f524257..9da24d83ea7ab37c354a0cdbecbcf5129a3e1621 100644
> GIT binary patch
> delta 152
> zcmbOl*BsB~66_Mvtk1x}Xtj|`QnKD4KG-Qfx=AzGC%}m#-ow*{$MFIWUvxtZP#~U>
> zn~{kzx{(LWaSV0>iU`=m#JdN$ikQax7??9G(2LP$2AKfT4w5fmL=$L>(SylzH3&F4
> QL#*@Qf-2i=BKc4h0A%4RcK`qY
>
> delta 24
> fcmZpUpBl&I66_Kps?Wf{cyl9{q~zv_lAlBYTLK4u
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.core-count b/tests/data/acpi/x86/q35/DSDT.core-count
> index 7ebfceeb66460d0ad98471924ce224b7153e87ef..22bf4a17db1b8175db939c5159e1686c8bc54066 100644
> GIT binary patch
> delta 152
> zcmX?>x+RUvCD<jz#F&ABaoR>MNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)gaK2
> RzzDI=gA1Z=vx(#+NdT{dDyjeg
>
> delta 24
> gcmdmzb}W_4CD<k8m=Oa5quE9-Ny*I<B^OHq0BDs5v;Y7A
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.core-count2 b/tests/data/acpi/x86/q35/DSDT.core-count2
> index d0394558a1faa0b4ba43abab66d474d96b477ff3..69e710caba4a353d3c0805acc8faba7043bf0ff3 100644
> GIT binary patch
> delta 154
> zcmdnr!L+uMiOVI}C1h<20|VoWja-tF^#<|5PVv!An!!E+P8{(bo-RC&7kK!h8)AS0
> z@r>MzOpMWuJYbGvuoF;3z$PZ%J-}7OG~UO+oMC}pj6O5S1dw)+d;uexKwFF+OrEPj
> TptGC}VxI>WMBQc+N$zX_b$%=I
>
> delta 26
> hcmZ46$+W+NiOVI}CB(jkfq}7oBbTJ)=82Lr*#K~72iE`q
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.cphp b/tests/data/acpi/x86/q35/DSDT.cphp
> index a055c2e7d3c4f5a00a03be20fd73227e322283a4..0b9e315600b8665a8cb4ddfc57c4cf60968d0b4f 100644
> GIT binary patch
> delta 152
> zcmX@%y3LKtCD<jzOqqd!apFcUNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga)M
> Q0I|-43#x3hiR2Vc0D`qDZ2$lO
>
> delta 24
> gcmdnycEXj*CD<k8gc1V-qv1v_Ny*I<C6{sn0Ag_mR{#J2
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.cxl b/tests/data/acpi/x86/q35/DSDT.cxl
> index 20843549f54af1cb0e6017c4cfff7463318d9eb7..0a49b62f39f1e4e00db2d03bbf34de4e20f2ed7d 100644
> GIT binary patch
> delta 152
> zcmZ3VJ~xBQCD<iI)`Wq9F=!)~q-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
> QhFIsp1y#1$M6y~60Avm-6951J
>
> delta 24
> gcmbQ6u|A#4CD<ioy)gp=<EM>Wl9HPzO7=(r0BWlU8UO$Q
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.dimmpxm b/tests/data/acpi/x86/q35/DSDT.dimmpxm
> index 664e926e90765550136242f7e3e0bdc7719c1853..1c14b91bb4d341d16527d330e2bb0515e2fafb81 100644
> GIT binary patch
> delta 152
> zcmaFocgLU0CD<k8jyeMaqy0uMUCDZb_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga&<
> Q0<q463#x3hhol-G0QRCP-v9sr
>
> delta 24
> fcmccP|IUxgCD<h-Po05*@!m!*UCGT$CC&K&Y?uek
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.ipmibt b/tests/data/acpi/x86/q35/DSDT.ipmibt
> index 4066a76d26aa380dfbecc58aa3f83ab5db2baadb..5561088d97a871f858461680d77d016f6b71d799 100644
> GIT binary patch
> delta 152
> zcmX@?w9%Q%CD<ioqap(XW6(w}Ny&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
> Q46)9G3#x3hi6lP<0GEO(^Z)<=
>
> delta 24
> fcmdn!eAtQ0CD<jzS&@N(@#97=Ny*I<B^5XTU!w;5
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.ipmismbus b/tests/data/acpi/x86/q35/DSDT.ipmismbus
> index 6d0b6b95c2a9fd01befc37b26650781ee1562e2a..cecba8c0629f89d2ccdd017791be69e5a98f52fa 100644
> GIT binary patch
> delta 152
> zcmccMw9lE#CD<iopCSVT<Kc~5l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
> Q8DgCW7gX716G<5k0P7zrnE(I)
>
> delta 24
> fcmdnze8Gv!CD<h-K#_rgF=->0q~zv_lDZrKT|fq)
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.ivrs b/tests/data/acpi/x86/q35/DSDT.ivrs
> index 072a3fe2cd17dfe06658dfd82588f69787810114..2d81bcbc781d3fc68a053d5319fbdcfa153a4653 100644
> GIT binary patch
> delta 152
> zcmeBl`tHQ#66_LEuE@Z^xNjquq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
> QhFIsp1y#1$MDi*-0Jz>N_5c6?
>
> delta 24
> fcmezF)ak_K66_MfsmQ><7`u^6QgZV|$!F{US$zim
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.memhp b/tests/data/acpi/x86/q35/DSDT.memhp
> index 4f2f9bcfceff076490cc49b8286380295a340004..056366a2c9fd535fa02d7494181e76b6a76b4cfb 100644
> GIT binary patch
> delta 152
> zcmX@^v(=Z&CD<ios~Q6X<EM>Wl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
> Q8DgCW7gX716G>rS00Y!2$N&HU
>
> delta 24
> fcmdn$d)$Z1CD<jzU5$Z(apFcUNy*I<B~^F<Ug8GH
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.mmio64 b/tests/data/acpi/x86/q35/DSDT.mmio64
> index 0fb6aab16f1bd79f3c0790cc9f644f7e52ac37b1..3ab05c9ec6afa014ad53ad246fcba7336bef3901 100644
> GIT binary patch
> delta 152
> zcmaFlb-|m<CD<k8f+_<8<K~TAl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
> Q8DgCW7gX716G=TD01g}~?*IS*
>
> delta 24
> fcmccM{m6^UCD<h-NtJ<tF=!)~q~zv_lJ-0RVyXu4
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.multi-bridge b/tests/data/acpi/x86/q35/DSDT.multi-bridge
> index f6afa6d96d2525d512cc46f17439f7a49962b730..41543787c443606ccef7191c2b0bee6737efe752 100644
> GIT binary patch
> delta 152
> zcmaExemjH9CD<h-+Ju3D(Rd@5q-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
> QhFIsp1y#1$L~^GT0Kb|l>;M1&
>
> delta 24
> gcmcbe@iv{yCD<k8tuX@w<K>N9l9HPzN}iGe0C=|u^8f$<
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.noacpihp b/tests/data/acpi/x86/q35/DSDT.noacpihp
> index 9f7261d1b06bbf5d8a3e5a7a46b247a2a21eb544..1c09aff8b5b8955730d5ca1737e4e7f6e698e401 100644
> GIT binary patch
> delta 152
> zcmaFoaL19$CD<k8jsgP%BjZM{UE=iy@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
> Q8DgCW7gX8itKu^`01GWE=Kufz
>
> delta 24
> gcmccP_|AdLCD<h-Pl17faluBeUE-UKBvx?%0BS-9?*IS*
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.nohpet b/tests/data/acpi/x86/q35/DSDT.nohpet
> index 99ad629c9171ff6ab346d6b4c519e77ca23e5b1c..86a109d6b12d38501d4353b5f8e31e9f3c15dd43 100644
> GIT binary patch
> delta 152
> zcmaFmaKn+yCD<k8h5`cv<BN@4-4gW%@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
> Q8DgCW7gX8iWfDi&0caR3kN^Mx
>
> delta 24
> fcmccN_{xFHCD<h-OM!ubv3(;~x5Q><$*b%DW~~R9
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.numamem b/tests/data/acpi/x86/q35/DSDT.numamem
> index fd1d8a79d3d9b071c8796e5e99b76698a9a8d29c..454aa65803d8da71c9d5f1a263fa0b59bb76af4f 100644
> GIT binary patch
> delta 152
> zcmez8_{NFLCD<h-N0EVnan(jHNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*E
> Q46)9G3#x3hiR3AE0OrmsI{*Lx
>
> delta 24
> gcmaFk^v{vYCD<k8p8^8|qt`|*Ny*I<C2z9>0B`3AJOBUy
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.pvpanic-isa b/tests/data/acpi/x86/q35/DSDT.pvpanic-isa
> index 89032fa0290f496be0c06c6382586541aa1118a8..8ef053f6dc2f1c3086756698c5953e857067df9d 100644
> GIT binary patch
> delta 152
> zcmccXblREACD<k8v?2oo<He0!l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
> Q8DgCW7gX716G=@D010g>+W-In
>
> delta 24
> fcmX@@eAkJ~CD<h-R*`{$v0x*Yq~zv_l2#l5VE+c<
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.thread-count b/tests/data/acpi/x86/q35/DSDT.thread-count
> index 7ebfceeb66460d0ad98471924ce224b7153e87ef..22bf4a17db1b8175db939c5159e1686c8bc54066 100644
> GIT binary patch
> delta 152
> zcmX?>x+RUvCD<jz#F&ABaoR>MNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)gaK2
> RzzDI=gA1Z=vx(#+NdT{dDyjeg
>
> delta 24
> gcmdmzb}W_4CD<k8m=Oa5quE9-Ny*I<B^OHq0BDs5v;Y7A
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.thread-count2 b/tests/data/acpi/x86/q35/DSDT.thread-count2
> index d0394558a1faa0b4ba43abab66d474d96b477ff3..69e710caba4a353d3c0805acc8faba7043bf0ff3 100644
> GIT binary patch
> delta 154
> zcmdnr!L+uMiOVI}C1h<20|VoWja-tF^#<|5PVv!An!!E+P8{(bo-RC&7kK!h8)AS0
> z@r>MzOpMWuJYbGvuoF;3z$PZ%J-}7OG~UO+oMC}pj6O5S1dw)+d;uexKwFF+OrEPj
> TptGC}VxI>WMBQc+N$zX_b$%=I
>
> delta 26
> hcmZ46$+W+NiOVI}CB(jkfq}7oBbTJ)=82Lr*#K~72iE`q
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.tis.tpm12 b/tests/data/acpi/x86/q35/DSDT.tis.tpm12
> index f2ed40ca70cb13e733e39f4bad756be8688e01fe..a36710dd89085f8ec5f173b84d4cd2a25473530e 100644
> GIT binary patch
> delta 152
> zcmccScEp{_CD<k8h%y5MqyI)ONy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
> Q46)9G3#x3hiKG%20KDHSNdN!<
>
> delta 24
> fcmX@&e$9=`CD<h-Oqqd!@!du)Ny*I<C5^cNWdH|I
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.tis.tpm2 b/tests/data/acpi/x86/q35/DSDT.tis.tpm2
> index 5c975d2162d0bfee5a3a089e79b5ba038f82b7ef..c7d737509dfd229d2dde46ea92d292039d854f79 100644
> GIT binary patch
> delta 152
> zcmez1cFCD<k8o-zXiBj-jgNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
> Q46)9G3#x3hiKGn|0K|zZYXATM
>
> delta 24
> fcmccT{=tpQCD<jTK$(Goam7Y1Ny*I<C4IR7XsQQt
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.type4-count b/tests/data/acpi/x86/q35/DSDT.type4-count
> index 3194a82b8b4f66aff1ecf7d2d60b4890181fc600..2d8b82a36ef1a8a4325817b164f77ceda78dd42e 100644
> GIT binary patch
> delta 154
> zcmew~k@3MKMlP3NmyiTc1_s8>8@VJU>kZ<Ao#LaLG=qHtoH*h=JY9GkFYxe1H^cx1
> z;u*OanHZxRdB7aUU?-r6fK5!idw{EmX}phtIl}_I7=31t2_Wqt`2t2XfwmYum^@d5
> UK+hp2h<zSh5OtePB=_k909vmsYybcN
>
> delta 26
> icmaDbiSg4!MlP3Nmyk~$3=E9H8@VJUH&2v2uMYr$`w0gC
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.viot b/tests/data/acpi/x86/q35/DSDT.viot
> index 129d43e1e561be3fd7cd71406829ab81d0a8aba0..3920d98b2501b08a4e0d57767a8c47cd57080748 100644
> GIT binary patch
> delta 152
> zcmaD^biJ6%CD<k8x+Mbx<HwC$l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
> Q8DgCW7gX716G>AA0Ch<#y8r+H
>
> delta 24
> fcmca!{IZD4CD<h-(~^OKal%F}Ny*I<CEXMNZrcaK
>
> diff --git a/tests/data/acpi/x86/q35/DSDT.xapic b/tests/data/acpi/x86/q35/DSDT.xapic
> index b37ab591110d1c8201575ad6bba83449d7b90b21..1c6c420f9edb16f2e706d2b495d6e856441de000 100644
> GIT binary patch
> delta 154
> zcmcaTo$2HZCN7s?mk`e$1_s8*8@VJU>kZ<Ao#LaLG=qHtoH*h=JY9GkFYxe1H^cx1
> z;u*OanHZxRdB7aUU?-r6fK5!idw{EmX}phtIl}_I7=31t2_Wqt`2t2XfwmYum^@d5
> UK<h^~h<zSh5OtePB$pQf0DWdH00000
>
> delta 26
> icmX>(gX#8kCN7s?myp}t3=E9T8@VJUH&2w@Q3L>kAqj5)
>
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index a1047913af..dfb8523c8b 100644
> --- a/tests/qtest/bios-tables-test-allowed-diff.h
> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> @@ -1,43 +1 @@
> /* List of comma-separated changed AML files to ignore */
> -"tests/data/acpi/x86/pc/DSDT",
> -"tests/data/acpi/x86/pc/DSDT.acpierst",
> -"tests/data/acpi/x86/pc/DSDT.acpihmat",
> -"tests/data/acpi/x86/pc/DSDT.bridge",
> -"tests/data/acpi/x86/pc/DSDT.cphp",
> -"tests/data/acpi/x86/pc/DSDT.dimmpxm",
> -"tests/data/acpi/x86/pc/DSDT.hpbridge",
> -"tests/data/acpi/x86/pc/DSDT.hpbrroot",
> -"tests/data/acpi/x86/pc/DSDT.ipmikcs",
> -"tests/data/acpi/x86/pc/DSDT.memhp",
> -"tests/data/acpi/x86/pc/DSDT.nohpet",
> -"tests/data/acpi/x86/pc/DSDT.numamem",
> -"tests/data/acpi/x86/pc/DSDT.roothp",
> -"tests/data/acpi/x86/q35/DSDT",
> -"tests/data/acpi/x86/q35/DSDT.acpierst",
> -"tests/data/acpi/x86/q35/DSDT.acpihmat",
> -"tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x",
> -"tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator",
> -"tests/data/acpi/x86/q35/DSDT.applesmc",
> -"tests/data/acpi/x86/q35/DSDT.bridge",
> -"tests/data/acpi/x86/q35/DSDT.core-count",
> -"tests/data/acpi/x86/q35/DSDT.core-count2",
> -"tests/data/acpi/x86/q35/DSDT.cphp",
> -"tests/data/acpi/x86/q35/DSDT.cxl",
> -"tests/data/acpi/x86/q35/DSDT.dimmpxm",
> -"tests/data/acpi/x86/q35/DSDT.ipmibt",
> -"tests/data/acpi/x86/q35/DSDT.ipmismbus",
> -"tests/data/acpi/x86/q35/DSDT.ivrs",
> -"tests/data/acpi/x86/q35/DSDT.memhp",
> -"tests/data/acpi/x86/q35/DSDT.mmio64",
> -"tests/data/acpi/x86/q35/DSDT.multi-bridge",
> -"tests/data/acpi/x86/q35/DSDT.noacpihp",
> -"tests/data/acpi/x86/q35/DSDT.nohpet",
> -"tests/data/acpi/x86/q35/DSDT.numamem",
> -"tests/data/acpi/x86/q35/DSDT.pvpanic-isa",
> -"tests/data/acpi/x86/q35/DSDT.thread-count",
> -"tests/data/acpi/x86/q35/DSDT.thread-count2",
> -"tests/data/acpi/x86/q35/DSDT.tis.tpm12",
> -"tests/data/acpi/x86/q35/DSDT.tis.tpm2",
> -"tests/data/acpi/x86/q35/DSDT.type4-count",
> -"tests/data/acpi/x86/q35/DSDT.viot",
> -"tests/data/acpi/x86/q35/DSDT.xapic",
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-16 6:24 ` Philippe Mathieu-Daudé
@ 2025-04-17 17:32 ` Gustavo Romero
2025-04-17 18:48 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:32 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Annie Li, Alex Bennée
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, armbru, miguel.luis
Hi Annie,
On 4/16/25 03:24, Philippe Mathieu-Daudé wrote:
> On 15/4/25 23:48, Annie Li wrote:
>>
>> On 4/15/2025 11:29 AM, Philippe Mathieu-Daudé wrote:
>>> Hi Annie,
>>>
>>> On 15/4/25 03:24, Annie Li wrote:
>>>>
>>>> On 4/14/2025 11:18 AM, Alex Bennée wrote:
>>>>> Annie Li <annie.li@oracle.com> writes:
>>>>>
>>>>>> The GPE event is triggered to notify x86 guest to suppend
>>>>>> itself. The function acpi_send_sleep_event will also
>>>>>> trigger GED events on HW-reduced systems where ACPI GED
>>>>>> sleep event is supported.
>>>>>>
>>>>>> Signed-off-by: Annie Li <annie.li@oracle.com>
>>>>>> ---
>>>>>> hw/acpi/core.c | 10 ++++++++++
>>>>>> include/hw/acpi/acpi.h | 1 +
>>>>>> include/hw/acpi/acpi_dev_interface.h | 1 +
>>>>>> 3 files changed, 12 insertions(+)
>>>>>>
>>>>>> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
>>>>>> index 58f8964e13..00a9d226f0 100644
>>>>>> --- a/hw/acpi/core.c
>>>>>> +++ b/hw/acpi/core.c
>>>>>> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
>>>>>> return -1;
>>>>>> }
>>>>>> +void acpi_send_sleep_event(void)
>>>>>> +{
>>>>>> + Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF,
>>>>>> NULL);
>>>>> Is it a fair assumption there will only ever be one QOM object that
>>>>> provides the TYPE_ACPI_DEVICE_IF interface on a system?
>>>>
>>>> I supposed it was, but I might be wrong(seeing some classes have the same interface). Please correct me if I've missed something, thank you!
>>>
>>> /**
>>> * object_resolve_path_type:
>>> * @path: the path to resolve
>>> * @typename: the type to look for.
>>> * @ambiguous: (out) (optional): location to store whether the
>>> * lookup failed because it was ambiguous, or %NULL.
>>> * Set to %false on success.
>>>
>>> Since you use ambiguous=NULL, your code will only set %obj if there
>>> is exactly ONE device implementing the ACPI_DEVICE interface created.
>>>
>>> So far IIUC nothing forbids creating multiple ones, so if you expect
>>> only one, you should add code to handle the "2 or more" case. Or at
>>> least add a comment.
>> Actually, there is only one QOM object here.
>> There are 3 classes involves with TYPE_ACPI_DEVICE_IF interface.
>> PC, Q35, GED.
>> For x86 system, the PC or Q35 machine doesn't use GED event, instead,
>> it sends the GPE event.
>> For microvm/ARM/virt system, GED device is used, its own TYPE_ACPI_DEVICE_IF
>> is involved.
>> All these objects do not exist at the same time, so it is safe to assume only one QOM
>> object exists here.
>
> I agree this is the case as of today, but I'm not sure about tomorrow.
> AFAICT nothing prohibit instanciating more than 1 type implementing
> TYPE_ACPI_DEVICE_IF.
>
> Anyway we are just trying to be more cautious here; up to the
> maintainer.
Annie, very soon probably the GPEX device will use the TYPE_ACPI_DEVICE_IF as well.
GPEX is used in Arm machines (like "virt") and due to the support for ACPI PCI hotplug,
which needs to be routed through the PCIe controller's hotplug handlers and the ACPI pcihp
device before the hotplug event is finally delivered to the OS via the GED device, it also
will use this ACPI interface.
I can think of something when adding the ACPI PCI hotplug support on machine with GPEX,
but even for future cases, could you please add at least a check for the ambiguity and
assert for no ambiguity here?
I suspect the only case we can have an ambiguity is when we have a device that
needs to do something more complex and then deliver an event via GED, so specifically
here for the sleep button I think it's ok to, in case of ambiguity, select the GED
device by default.
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 06/13] test/acpi: allow DSDT table changes for microvm
2025-04-11 20:42 ` [RFC V3 PATCH 06/13] test/acpi: allow DSDT table changes for microvm Annie Li
@ 2025-04-17 17:33 ` Gustavo Romero
2025-04-17 18:48 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:33 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Annie,
On 4/11/25 17:42, Annie Li wrote:
> list changed files in tests/qtest/bios-tables-test-allowed-diff.h
nit: List
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> tests/qtest/bios-tables-test-allowed-diff.h | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index dfb8523c8b..bb028db137 100644
> --- a/tests/qtest/bios-tables-test-allowed-diff.h
> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> @@ -1 +1,6 @@
> /* List of comma-separated changed AML files to ignore */
> +"tests/data/acpi/x86/microvm/DSDT",
> +"tests/data/acpi/x86/microvm/DSDT.ioapic2",
> +"tests/data/acpi/x86/microvm/DSDT.pcie",
> +"tests/data/acpi/x86/microvm/DSDT.rtc",
> +"tests/data/acpi/x86/microvm/DSDT.usb",
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 07/13] microvm: support control method sleep button
2025-04-11 20:42 ` [RFC V3 PATCH 07/13] microvm: support control method sleep button Annie Li
@ 2025-04-17 17:34 ` Gustavo Romero
2025-04-17 18:49 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:34 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Annie,
On 4/11/25 17:42, Annie Li wrote:
> Add the support of control method sleep button and System
> S3 Sleeping State for microvm.
I would say "... of ACPI Control Method Sleeping Button ...¨,
the important part being "ACPI" to make clear what's the
context of the support. Because such a device requires
also some plumbing in QEMU code to really be "supported".
For the title, maybe smth like: "microvm: Add ACPI sleeping button device"
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/i386/acpi-microvm.c | 11 +++++++++++
> include/hw/acpi/generic_event_device.h | 1 +
> 2 files changed, 12 insertions(+)
>
> diff --git a/hw/i386/acpi-microvm.c b/hw/i386/acpi-microvm.c
> index 279da6b4aa..57c45ea327 100644
> --- a/hw/i386/acpi-microvm.c
> +++ b/hw/i386/acpi-microvm.c
> @@ -32,6 +32,7 @@
> #include "hw/acpi/generic_event_device.h"
> #include "hw/acpi/utils.h"
> #include "hw/acpi/erst.h"
> +#include "hw/acpi/control_method_device.h"
> #include "hw/i386/fw_cfg.h"
> #include "hw/i386/microvm.h"
> #include "hw/pci/pci.h"
> @@ -123,12 +124,22 @@ build_dsdt_microvm(GArray *table_data, BIOSLinker *linker,
> build_ged_aml(sb_scope, GED_DEVICE, x86ms->acpi_dev,
> GED_MMIO_IRQ, AML_SYSTEM_MEMORY, GED_MMIO_BASE);
> acpi_dsdt_add_power_button(sb_scope);
> + acpi_dsdt_add_sleep_button(sb_scope);
> acpi_dsdt_add_virtio(sb_scope, mms);
> acpi_dsdt_add_xhci(sb_scope, mms);
> acpi_dsdt_add_pci(sb_scope, mms);
> aml_append(dsdt, sb_scope);
>
> /* ACPI 5.0: Table 7-209 System State Package */
Should this be "Table 7-205"? Or even, why not:
"ACPI 6.5, Table 7.11: System State Package" ?
Cheers,
Gustavo
> + scope = aml_scope("\\");
> + pkg = aml_package(4);
> + aml_append(pkg, aml_int(ACPI_GED_SLP_TYP_S3));
> + aml_append(pkg, aml_int(0)); /* ignored */
> + aml_append(pkg, aml_int(0)); /* reserved */
> + aml_append(pkg, aml_int(0)); /* reserved */
> + aml_append(scope, aml_name_decl("_S3", pkg));
> + aml_append(dsdt, scope);
> +
> scope = aml_scope("\\");
> pkg = aml_package(4);
> aml_append(pkg, aml_int(ACPI_GED_SLP_TYP_S5));
> diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/generic_event_device.h
> index d2dac87b4a..28c5785863 100644
> --- a/include/hw/acpi/generic_event_device.h
> +++ b/include/hw/acpi/generic_event_device.h
> @@ -85,6 +85,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(AcpiGedState, ACPI_GED)
> #define ACPI_GED_SLP_TYP_POS 0x2 /* SLP_TYPx Bit Offset */
> #define ACPI_GED_SLP_TYP_MASK 0x07 /* SLP_TYPx 3-bit mask */
> #define ACPI_GED_SLP_TYP_S5 0x05 /* System _S5 State (Soft Off) */
> +#define ACPI_GED_SLP_TYP_S3 0x03 /* System _S3 State (Sleeping State) */
> #define ACPI_GED_SLP_EN 0x20 /* SLP_EN write-only bit */
>
> #define GED_DEVICE "GED"
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 08/13] hw/acpi: Add ACPI GED support for the sleep event
2025-04-11 20:42 ` [RFC V3 PATCH 08/13] hw/acpi: Add ACPI GED support for the sleep event Annie Li
@ 2025-04-17 17:35 ` Gustavo Romero
0 siblings, 0 replies; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:35 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Annie,
On 4/11/25 17:42, Annie Li wrote:
> From: Miguel Luis <miguel.luis@oracle.com>
>
> Add support for ACPI GED sleep event on the ACPI device
> interface so that HW-reduced systems can enable guests
> to sleep.
>
> Signed-off-by: Miguel Luis <miguel.luis@oracle.com>
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/acpi/generic_event_device.c | 9 +++++++++
> include/hw/acpi/generic_event_device.h | 1 +
> 2 files changed, 10 insertions(+)
>
> diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c
> index c85d97ca37..5a1ac8e362 100644
> --- a/hw/acpi/generic_event_device.c
> +++ b/hw/acpi/generic_event_device.c
> @@ -13,6 +13,7 @@
> #include "qapi/error.h"
> #include "hw/acpi/acpi.h"
> #include "hw/acpi/generic_event_device.h"
> +#include "hw/acpi/control_method_device.h"
> #include "hw/irq.h"
> #include "hw/mem/pc-dimm.h"
> #include "hw/mem/nvdimm.h"
> @@ -26,6 +27,7 @@ static const uint32_t ged_supported_events[] = {
> ACPI_GED_PWR_DOWN_EVT,
> ACPI_GED_NVDIMM_HOTPLUG_EVT,
> ACPI_GED_CPU_HOTPLUG_EVT,
> + ACPI_GED_SLEEP_EVT,
> };
>
> /*
> @@ -121,6 +123,11 @@ void build_ged_aml(Aml *table, const char *name, HotplugHandler *hotplug_dev,
> aml_notify(aml_name("\\_SB.NVDR"),
> aml_int(0x80)));
> break;
> + case ACPI_GED_SLEEP_EVT:
> + aml_append(if_ctx,
> + aml_notify(aml_name(ACPI_SLEEP_BUTTON_DEVICE),
> + aml_int(0x80)));
> + break;
> default:
> /*
> * Please make sure all the events in ged_supported_events[]
> @@ -295,6 +302,8 @@ static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits ev)
> sel = ACPI_GED_MEM_HOTPLUG_EVT;
> } else if (ev & ACPI_POWER_DOWN_STATUS) {
> sel = ACPI_GED_PWR_DOWN_EVT;
> + } else if (ev & ACPI_SLEEP_STATUS) {
> + sel = ACPI_GED_SLEEP_EVT;
> } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) {
> sel = ACPI_GED_NVDIMM_HOTPLUG_EVT;
> } else if (ev & ACPI_CPU_HOTPLUG_STATUS) {
> diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/generic_event_device.h
> index 28c5785863..71503e0100 100644
> --- a/include/hw/acpi/generic_event_device.h
> +++ b/include/hw/acpi/generic_event_device.h
> @@ -102,6 +102,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(AcpiGedState, ACPI_GED)
> #define ACPI_GED_PWR_DOWN_EVT 0x2
> #define ACPI_GED_NVDIMM_HOTPLUG_EVT 0x4
> #define ACPI_GED_CPU_HOTPLUG_EVT 0x8
> +#define ACPI_GED_SLEEP_EVT 0x10
>
> typedef struct GEDState {
> MemoryRegion evt;
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 09/13] microvm: enable sleep GED event
2025-04-11 20:43 ` [RFC V3 PATCH 09/13] microvm: enable sleep GED event Annie Li
@ 2025-04-17 17:35 ` Gustavo Romero
2025-04-17 18:49 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:35 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Annie,
On 4/11/25 17:43, Annie Li wrote:
> The sleep GED event is enabled for MicroVM. Also, the system
> suspend is enabled when the GED register is set for sleep.
nit: in the commit messages, please stick with a single case
for microvm (or MicroVM, etc).
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/i386/microvm.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
> index d0a236c74f..eba33c4365 100644
> --- a/hw/i386/microvm.c
> +++ b/hw/i386/microvm.c
> @@ -205,7 +205,8 @@ static void microvm_devices_init(MicrovmMachineState *mms)
> /* Optional and legacy devices */
> if (x86_machine_is_acpi_enabled(x86ms)) {
> DeviceState *dev = qdev_new(TYPE_ACPI_GED);
> - qdev_prop_set_uint32(dev, "ged-event", ACPI_GED_PWR_DOWN_EVT);
> + qdev_prop_set_uint32(dev, "ged-event",
> + ACPI_GED_PWR_DOWN_EVT | ACPI_GED_SLEEP_EVT);
> sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal);
> sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, GED_MMIO_BASE);
> /* sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, GED_MMIO_BASE_MEMHP); */
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 10/13] tests/qtest/bios-table-tests: Update ACPI table binaries for microvm
2025-04-11 20:44 ` [RFC V3 PATCH 10/13] tests/qtest/bios-table-tests: Update ACPI table binaries for microvm Annie Li
@ 2025-04-17 17:36 ` Gustavo Romero
2025-04-17 18:50 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:36 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Annie,
On 4/11/25 17:44, Annie Li wrote:
> Following is the diff generated by the step 5 and 6 in
> tests/qtest/bios-tables-test.c
>
> Diff from iasl to show changes in DSDT table:
>
> --- /tmp/asl-2F0N42.dsl 2025-04-11 12:50:02.892883467 +0000
> +++ /tmp/asl-C81N42.dsl 2025-04-11 12:50:02.890883378 +0000
> @@ -1,30 +1,30 @@
> /*
> * Intel ACPI Component Architecture
> * AML/ASL+ Disassembler version 20210604 (64-bit version)
> * Copyright (c) 2000 - 2021 Intel Corporation
> *
> * Disassembling to symbolic ASL+ operators
> *
> - * Disassembly of tests/data/acpi/x86/microvm/DSDT, Fri Apr 11 12:50:02 2025
> + * Disassembly of /tmp/aml-481N42, Fri Apr 11 12:50:02 2025
Same comment from 4/13 regarding diff confusing git am and b4 and about the filename.
Otherwise:
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
Cheers,
Gustavo
> *
> * Original Table Header:
> * Signature "DSDT"
> - * Length 0x0000016D (365)
> + * Length 0x000001BA (442)
> * Revision 0x02
> - * Checksum 0x11
> + * Checksum 0xD5
> * OEM ID "BOCHS "
> * OEM Table ID "BXPC "
> * OEM Revision 0x00000001 (1)
> * Compiler ID "BXPC"
> * Compiler Version 0x00000001 (1)
> */
> DefinitionBlock ("", "DSDT", 2, "BOCHS ", "BXPC ", 0x00000001)
> {
> Scope (_SB)
> {
> Device (FWCF)
> {
> Name (_HID, "QEMU0002") // _HID: Hardware ID
> Name (_STA, 0x0B) // _STA: Status
> Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
> {
> @@ -66,56 +66,82 @@
> 0x00000009,
> }
> })
> OperationRegion (EREG, SystemMemory, 0xFEA00000, 0x04)
> Field (EREG, DWordAcc, NoLock, WriteAsZeros)
> {
> ESEL, 32
> }
>
> Method (_EVT, 1, Serialized) // _EVT: Event
> {
> Local0 = ESEL /* \_SB_.GED_.ESEL */
> If (((Local0 & 0x02) == 0x02))
> {
> Notify (PWRB, 0x80) // Status Change
> }
> +
> + If (((Local0 & 0x10) == 0x10))
> + {
> + Notify (SLPB, 0x80) // Status Change
> + }
> }
> }
>
> Device (PWRB)
> {
> Name (_HID, "PNP0C0C" /* Power Button Device */) // _HID: Hardware ID
> Name (_UID, Zero) // _UID: Unique ID
> }
>
> + Device (SLPB)
> + {
> + Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device */) // _HID: Hardware ID
> + OperationRegion (\SLP, SystemIO, 0x0201, One)
> + Field (\SLP, ByteAcc, NoLock, WriteAsZeros)
> + {
> + SBP, 1
> + }
> + }
> +
> Device (VR07)
> {
> Name (_HID, "LNRO0005") // _HID: Hardware ID
> Name (_UID, 0x07) // _UID: Unique ID
> Name (_CCA, One) // _CCA: Cache Coherency Attribute
> Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
> {
> Memory32Fixed (ReadWrite,
> 0xFEB00E00, // Address Base
> 0x00000200, // Address Length
> )
> Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
> {
> 0x00000017,
> }
> })
> }
> }
>
> Scope (\)
> {
> + Name (_S3, Package (0x04) // _S3_: S3 System State
> + {
> + 0x03,
> + Zero,
> + Zero,
> + Zero
> + })
> + }
> +
> + Scope (\)
> + {
> Name (_S5, Package (0x04) // _S5_: S5 System State
> {
> 0x05,
> Zero,
> Zero,
> Zero
> })
> }
> }
>
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> tests/data/acpi/x86/microvm/DSDT | Bin 365 -> 442 bytes
> tests/data/acpi/x86/microvm/DSDT.ioapic2 | Bin 365 -> 442 bytes
> tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 3100 bytes
> tests/data/acpi/x86/microvm/DSDT.rtc | Bin 404 -> 481 bytes
> tests/data/acpi/x86/microvm/DSDT.usb | Bin 414 -> 491 bytes
> tests/qtest/bios-tables-test-allowed-diff.h | 5 -----
> 6 files changed, 5 deletions(-)
>
> diff --git a/tests/data/acpi/x86/microvm/DSDT b/tests/data/acpi/x86/microvm/DSDT
> index f477668f2ee80241e47b340ad4a30f5480df2049..ee199a4fb65ab1a2d811f37d9b5bc67bccd34939 100644
> GIT binary patch
> delta 127
> zcmaFMw2PU`CD<io7b61$)76Pw(oD|c6V<breAy>X_GQ$Y_)vy#fxzVI1TFyvE`hdS
> zpMZ(K6f`w~v=c|Xho=jV;{_hR=!O`eKs+NiBNJnEBM+G480-WTnJmHREo~ex#LmLS
> V%)r1PAP~dA5g%*{7GMPm005{09v1)r
>
> delta 54
> zcmdnR{FaH!CD<h-myv;iNpK>UG?TmVMD;8tAGV2;eHmpZK9rfv$0$2FjM0<JG+v0E
> Kg^QJefdK$+3k%2q
>
> diff --git a/tests/data/acpi/x86/microvm/DSDT.ioapic2 b/tests/data/acpi/x86/microvm/DSDT.ioapic2
> index e5924a49962e0cff4228bcfc77ebcf48cb4a2219..7512d1527cf222d6f75a92f051f9eda402e28376 100644
> GIT binary patch
> delta 127
> zcmaFMw2PU`CD<io7b61$Q~yLRX(ng!iRxKQzU&hx`!ecHd?>@WKwxrp0+#>-mq1&v
> zPr$@q3YwZg+KD6H!_$Sw@d6KDbVCeKAfAz%k%=+7kq69i40ZyFOqO8umNt$TVrSuE
> UW?*0t5Qt&mhz~Xe3$OwO0ErwO(EtDd
>
> delta 54
> zcmdnR{FaH!CD<h-myv;i>GVV{X(o5!iRxKQK5P>w`!dQ-d?+)Sk5P7V7^5ebX}l0S
> K3l}Q`0|Nky8w`Q~
>
> diff --git a/tests/data/acpi/x86/microvm/DSDT.pcie b/tests/data/acpi/x86/microvm/DSDT.pcie
> index 8eacd21d6ecdf9a3cd3e4f03cf1b40748dcbf53e..5e3f80cbf82cab52fe310160c88d0a11ff069bf5 100644
> GIT binary patch
> delta 128
> zcmX>vK1YJfCD<iIhKGTHiDM#{G?VMziRxKQzU&hx`!ecHd?>@WKwxrp0+#>-mq1&v
> zPr$@q3YwZg+KD6H!_$Sw@d6KDbVCeKAfAz%k%=+7kq69i40ZyFY?feL%O!0bFT~Em
> W#mvCKARrLKz!4v83Kn1m3IG6dDjnGX
>
> delta 55
> zcmbOuabBFuCD<k8JU0Ualj}q-X(rE|6V<breAp&V_GOfv_)umtAEWH%FvitfT&D3t
> L>?~ZY3=9kauQ3gZ
>
> diff --git a/tests/data/acpi/x86/microvm/DSDT.rtc b/tests/data/acpi/x86/microvm/DSDT.rtc
> index e375473b5f033d374dd2a64a9f814fd16c3e262f..11258908703b64a835bd14307490c62c5ef7301f 100644
> GIT binary patch
> delta 129
> zcmbQj{E(T;CD<k8AtM6=)8dI-(o9~G6V)d&`La*k<;$oynS)V=Z-Kz%>I5zU1}=fN
> zV4r}=ii`@Hnm~pVN4$rp3y<Rk9=_;?7@$BrBR3-xV{{`AnBy4i1QeNU&*&{}952Mq
> X!o|$Mz#t$H!@v<AYzh`&1quKFJNg{0
>
> delta 79
> zcmaFJJcXIdCD<io3L^sp)BTBD(oBA$6V)d&`LIpg<;y5LnS)VAI=V?RAUw#4Bi_T)
> jg*U)2z`)tSnSmod)YFAway6qjmub8ZI|~;p0|Ns9En5;N
>
> diff --git a/tests/data/acpi/x86/microvm/DSDT.usb b/tests/data/acpi/x86/microvm/DSDT.usb
> index d63fd84620a2689120b32262f964e6a098d71632..7250d9f8ad45fca91afeda1089090eee11cd6594 100644
> GIT binary patch
> delta 127
> zcmbQo{F<4|CD<k8H6sH9)6<Du(o8N=6V<breAy>X_GQ$Y_)vy#fxzVI1TFyvE`hdS
> zpMZ(K6f`w~v=c|Xho=jV;{_hR=!O`eKs+NiBNJnEBM+G480-WTnJmFrBW)Zn#LmLS
> V%)r1PAP~dA5g%*{7GMPm006!m9&i8v
>
> delta 54
> zcmaFOJdc^nCD<io9wP$-lj1}!X(kV`iRxKQK5P>w`!dQ-d?+)Sk5P7V7-JQeX}l0S
> K3l}Q`0|NkddJG`|
>
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index bb028db137..dfb8523c8b 100644
> --- a/tests/qtest/bios-tables-test-allowed-diff.h
> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> @@ -1,6 +1 @@
> /* List of comma-separated changed AML files to ignore */
> -"tests/data/acpi/x86/microvm/DSDT",
> -"tests/data/acpi/x86/microvm/DSDT.ioapic2",
> -"tests/data/acpi/x86/microvm/DSDT.pcie",
> -"tests/data/acpi/x86/microvm/DSDT.rtc",
> -"tests/data/acpi/x86/microvm/DSDT.usb",
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 11/13] microvm: suspend the system as requested
2025-04-11 20:44 ` [RFC V3 PATCH 11/13] microvm: suspend the system as requested Annie Li
@ 2025-04-17 17:37 ` Gustavo Romero
0 siblings, 0 replies; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:37 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Annie,
On 4/11/25 17:44, Annie Li wrote:
> Once the microvm guest requests to go to sleep state and
> sets the GED register with S3 type, QEMU needs to continue
> suspending the system.
>
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/acpi/generic_event_device.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c
> index 5a1ac8e362..bc53551a45 100644
> --- a/hw/acpi/generic_event_device.c
> +++ b/hw/acpi/generic_event_device.c
> @@ -213,6 +213,9 @@ static void ged_regs_write(void *opaque, hwaddr addr, uint64_t data,
> if (slp_en && slp_typ == ACPI_GED_SLP_TYP_S5) {
> qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
> }
> + if (slp_en && slp_typ == ACPI_GED_SLP_TYP_S3) {
> + qemu_system_suspend_request();
> + }
> return;
> case ACPI_GED_REG_SLEEP_STS:
> return;
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 12/13] microvm: enable suspend
2025-04-11 20:44 ` [RFC V3 PATCH 12/13] microvm: enable suspend Annie Li
@ 2025-04-17 17:37 ` Gustavo Romero
0 siblings, 0 replies; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:37 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Annie,
On 4/11/25 17:44, Annie Li wrote:
> The function qemu_wakeup_suspend_enabled combines the suspend
> and wakeup together. However, the microvm doesn't support
> wakeup yet. Suspend is enabled here, but wakeup doesn't
> actually work for microvm now.
>
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/i386/microvm.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
> index eba33c4365..da5d4126e5 100644
> --- a/hw/i386/microvm.c
> +++ b/hw/i386/microvm.c
> @@ -489,6 +489,7 @@ static void microvm_machine_state_init(MachineState *machine)
> qemu_add_machine_init_done_notifier(&mms->machine_done);
> mms->powerdown_req.notify = microvm_powerdown_req;
> qemu_register_powerdown_notifier(&mms->powerdown_req);
> + qemu_register_wakeup_support();
>
> microvm_memory_init(mms);
>
Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep
2025-04-14 14:14 ` Annie Li
@ 2025-04-17 17:37 ` Gustavo Romero
2025-04-17 18:51 ` Annie Li
0 siblings, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:37 UTC (permalink / raw)
To: Annie Li, Markus Armbruster
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, philmd, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, miguel.luis
Hi Annie,
On 4/14/25 11:14, Annie Li wrote:
>
> On 4/14/2025 2:31 AM, Markus Armbruster wrote:
>> Annie Li <annie.li@oracle.com> writes:
>>
>>> Followng hmp/qmp commands are implemented for pressing virtual
>>> sleep button,
nit: Following
Cheers,
Gustavo
>>> hmp: system_sleep
>>> qmp: { "execute": "system_sleep" }
>>>
>>> These commands put the guest into suspend or other power states
>>> depending on the power settings inside the guest.
>>>
>>> These hmp/qmp command are in '*_*' format, it is intended to do
>>> so to align to existing 'system_*' commands.
>>>
>>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> [...]
>>
>>> diff --git a/qapi/machine.json b/qapi/machine.json
>>> index a6b8795b09..0965e78f4e 100644
>>> --- a/qapi/machine.json
>>> +++ b/qapi/machine.json
>>> @@ -361,6 +361,26 @@
>>> ##
>>> { 'command': 'system_reset' }
>>> +##
>>> +# @system_sleep:
>>> +#
>>> +# Requests that the guest perform a ACPI sleep transition by pushing
>>> +# the virtual sleep button.
>>> +#
>>> +# Since:10.0
>>> +#
>>> +# .. note:: A guest may or may not respond to this command. This
>> Two spaces between sentences for consistency, please.
>
> Didn't notice this, thanks for pointing it out.
>
> Will fix it.
>
> Thanks
>
> Annie
>
>>
>>> +# command returning does not indicate that a guest has
>>> +# accepted the request or that it has gone to sleep.
>>> +#
>>> +# .. qmp-example::
>>> +#
>>> +# -> { "execute": "system_sleep" }
>>> +# <- { "return": {} }
>>> +#
>>> +##
>>> +{ 'command': 'system_sleep' }
>>> +
>>> ##
>>> # @system_powerdown:
>>> #
>>> diff --git a/qapi/pragma.json b/qapi/pragma.json
>>> index 023a2ef7bc..285ce82e9b 100644
>>> --- a/qapi/pragma.json
>>> +++ b/qapi/pragma.json
>>> @@ -23,6 +23,7 @@
>>> 'set_password',
>>> 'system_powerdown',
>>> 'system_reset',
>>> + 'system_sleep',
>> Additions here are always sad, but inconsistency with the other
>> system_FOO commands would be worse.
>>
>>> 'system_wakeup' ],
>>> # Commands allowed to return a non-dictionary
>>> 'command-returns-exceptions': [
>> With the spacing nit touched up:
>> Acked-by: Markus Armbruster <armbru@redhat.com>
>>
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-11 20:41 ` [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup " Annie Li
2025-04-14 15:18 ` Alex Bennée
@ 2025-04-17 17:40 ` Gustavo Romero
2025-04-17 18:46 ` Annie Li
1 sibling, 1 reply; 46+ messages in thread
From: Gustavo Romero @ 2025-04-17 17:40 UTC (permalink / raw)
To: annie.li, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Annie,
Some additional comments I forgot :)
On 4/11/25 17:41, Annie Li wrote:
> The GPE event is triggered to notify x86 guest to suppend
nit ^ suspend
But I prefer to stick with "sleep" here instead.
> itself. The function acpi_send_sleep_event will also
> trigger GED events on HW-reduced systems where ACPI GED
> sleep event is supported.
The title for this patch is a bit misleading because no
x86 code is actually touched. Also, we are not generating
the AML code and field for wake up (SBW) in patch 1/13,
hence, remove "wakeup" from the title as well?
Cheers,
Gustavo
> Signed-off-by: Annie Li <annie.li@oracle.com>
> ---
> hw/acpi/core.c | 10 ++++++++++
> include/hw/acpi/acpi.h | 1 +
> include/hw/acpi/acpi_dev_interface.h | 1 +
> 3 files changed, 12 insertions(+)
>
> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
> index 58f8964e13..00a9d226f0 100644
> --- a/hw/acpi/core.c
> +++ b/hw/acpi/core.c
> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
> return -1;
> }
>
> +void acpi_send_sleep_event(void)
> +{
> + Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF, NULL);
> +
> + if (obj) {
> + /* Send sleep event */
> + acpi_send_event(DEVICE(obj), ACPI_SLEEP_STATUS);
> + }
> +}
> +
> static void acpi_notify_wakeup(Notifier *notifier, void *data)
> {
> ACPIREGS *ar = container_of(notifier, ACPIREGS, wakeup);
> diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
> index d1a4fa2af8..64d3ff78ed 100644
> --- a/include/hw/acpi/acpi.h
> +++ b/include/hw/acpi/acpi.h
> @@ -184,6 +184,7 @@ uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar, uint32_t addr);
>
> void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq,
> AcpiEventStatusBits status);
> +void acpi_send_sleep_event(void);
>
> void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq);
>
> diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_dev_interface.h
> index 68d9d15f50..1cb050cd3a 100644
> --- a/include/hw/acpi/acpi_dev_interface.h
> +++ b/include/hw/acpi/acpi_dev_interface.h
> @@ -13,6 +13,7 @@ typedef enum {
> ACPI_NVDIMM_HOTPLUG_STATUS = 16,
> ACPI_VMGENID_CHANGE_STATUS = 32,
> ACPI_POWER_DOWN_STATUS = 64,
> + ACPI_SLEEP_STATUS = 128,
> } AcpiEventStatusBits;
>
> #define TYPE_ACPI_DEVICE_IF "acpi-device-interface"
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 01/13] acpi: Implement control method sleep button
2025-04-17 17:28 ` Gustavo Romero
@ 2025-04-17 18:40 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:40 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: mst, paul, Jonathan.Cameron, git, imammedo, miguel.luis
Hi Gustavo,
On 4/17/2025 1:28 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/11/25 17:28, Annie Li wrote:
>> The fixed hardware sleep button isn't appropriate for hardware
>> reduced platform. This patch implements the control method sleep
>> button in a separate source file so that the button can be added
>> for various platforms.
>>
>> Co-developed-by: Miguel Luis <miguel.luis@oracle.com>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> hw/acpi/control_method_device.c | 33 +++++++++++++++++++++++++
>> hw/acpi/meson.build | 1 +
>> include/hw/acpi/control_method_device.h | 21 ++++++++++++++++
>> 3 files changed, 55 insertions(+)
>>
>> diff --git a/hw/acpi/control_method_device.c
>> b/hw/acpi/control_method_device.c
>> new file mode 100644
>> index 0000000000..c3b1d484c4
>> --- /dev/null
>> +++ b/hw/acpi/control_method_device.c
>> @@ -0,0 +1,33 @@
>> +/*
>> + * Control Method Device
>> + *
>> + * Copyright (c) 2023 Oracle and/or its affiliates.
>> + *
>> + *
>> + * Authors:
>> + * Annie Li <annie.li@oracle.com>
>> + *
>> + * SPDX-License-Identifier: GPL-2.0-or-later
>> + */
>> +
>> +#include "qemu/osdep.h"
>> +#include "hw/acpi/control_method_device.h"
>> +#include "hw/mem/nvdimm.h"
>
> NVDIMM is out of context here, please use:
>
> #include "hw/acpi/aml-build.h"
>
> instead for the aml_* symbols.
Nod
>
>
>> +/*
>> + * The control method sleep button[ACPI v6.5 Section 4.8.2.2.2.2]
>> + * resides in generic hardware address spaces. The sleep button
>> + * is defined as _HID("PNP0C0E") that associates with device "SLPB".
>> + */
>> +void acpi_dsdt_add_sleep_button(Aml *scope)
>> +{
>> + Aml *dev = aml_device(ACPI_SLEEP_BUTTON_DEVICE);
>> + aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0C0E")));
>
> I see that since GPE event handler L07 will be tied to the sleep button
> device there is no _PRW variable defined here. Do you mind adding a
> comment
> here about it? Something like:
>
> /* No _PRW, the sleeping button device is always tied to GPE L07 event
> handler. */
Will add comments about it.
Thanks
Annie
>
>
> Cheers,
> Gustavo
>
>> + aml_append(dev, aml_operation_region("\\SLP", AML_SYSTEM_IO,
>> + aml_int(0x201), 0x1));
>> + Aml *field = aml_field("\\SLP", AML_BYTE_ACC, AML_NOLOCK,
>> + AML_WRITE_AS_ZEROS);
>> + aml_append(field, aml_named_field("SBP", 1));
>> + aml_append(dev, field);
>> + aml_append(scope, dev);
>> +}
>> diff --git a/hw/acpi/meson.build b/hw/acpi/meson.build
>> index 73f02b9691..a62e625cef 100644
>> --- a/hw/acpi/meson.build
>> +++ b/hw/acpi/meson.build
>> @@ -17,6 +17,7 @@ acpi_ss.add(when: 'CONFIG_ACPI_CXL', if_true:
>> files('cxl.c'), if_false: files('c
>> acpi_ss.add(when: 'CONFIG_ACPI_VMGENID', if_true: files('vmgenid.c'))
>> acpi_ss.add(when: 'CONFIG_ACPI_VMCLOCK', if_true: files('vmclock.c'))
>> acpi_ss.add(when: 'CONFIG_ACPI_HW_REDUCED', if_true:
>> files('generic_event_device.c'))
>> +acpi_ss.add(when: 'CONFIG_ACPI_HW_REDUCED', if_true:
>> files('control_method_device.c'))
>> acpi_ss.add(when: 'CONFIG_ACPI_HMAT', if_true: files('hmat.c'))
>> acpi_ss.add(when: 'CONFIG_ACPI_APEI', if_true: files('ghes.c'),
>> if_false: files('ghes-stub.c'))
>> acpi_ss.add(when: 'CONFIG_ACPI_PIIX4', if_true: files('piix4.c'))
>> diff --git a/include/hw/acpi/control_method_device.h
>> b/include/hw/acpi/control_method_device.h
>> new file mode 100644
>> index 0000000000..079f1a74dd
>> --- /dev/null
>> +++ b/include/hw/acpi/control_method_device.h
>> @@ -0,0 +1,21 @@
>> +/*
>> + * Control Method Device
>> + *
>> + * Copyright (c) 2023 Oracle and/or its affiliates.
>> + *
>> + *
>> + * Authors:
>> + * Annie Li <annie.li@oracle.com>
>> + *
>> + * SPDX-License-Identifier: GPL-2.0-or-later
>> + */
>> +
>> +
>> +#ifndef HW_ACPI_CONTROL_METHOD_DEVICE_H
>> +#define HW_ACPI_CONTROL_NETHOD_DEVICE_H
>> +
>> +#define ACPI_SLEEP_BUTTON_DEVICE "SLPB"
>> +
>> +void acpi_dsdt_add_sleep_button(Aml *scope);
>> +
>> +#endif
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 02/13] test/acpi: allow DSDT table changes for x86 platform
2025-04-17 17:29 ` Gustavo Romero
@ 2025-04-17 18:42 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:42 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: mst, imammedo, alistair.francis, sunilvl, ribalda
Hi Gustavo,
On 4/17/2025 1:29 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/11/25 17:31, Annie Li wrote:
>> list changed files in tests/qtest/bios-tables-test-allowed-diff.h
>
> nit: List
Will fix it.
Thanks
Annie
>
>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> tests/qtest/bios-tables-test-allowed-diff.h | 42 +++++++++++++++++++++
>> 1 file changed, 42 insertions(+)
>>
>> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h
>> b/tests/qtest/bios-tables-test-allowed-diff.h
>> index dfb8523c8b..a1047913af 100644
>> --- a/tests/qtest/bios-tables-test-allowed-diff.h
>> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
>> @@ -1 +1,43 @@
>> /* List of comma-separated changed AML files to ignore */
>> +"tests/data/acpi/x86/pc/DSDT",
>> +"tests/data/acpi/x86/pc/DSDT.acpierst",
>> +"tests/data/acpi/x86/pc/DSDT.acpihmat",
>> +"tests/data/acpi/x86/pc/DSDT.bridge",
>> +"tests/data/acpi/x86/pc/DSDT.cphp",
>> +"tests/data/acpi/x86/pc/DSDT.dimmpxm",
>> +"tests/data/acpi/x86/pc/DSDT.hpbridge",
>> +"tests/data/acpi/x86/pc/DSDT.hpbrroot",
>> +"tests/data/acpi/x86/pc/DSDT.ipmikcs",
>> +"tests/data/acpi/x86/pc/DSDT.memhp",
>> +"tests/data/acpi/x86/pc/DSDT.nohpet",
>> +"tests/data/acpi/x86/pc/DSDT.numamem",
>> +"tests/data/acpi/x86/pc/DSDT.roothp",
>> +"tests/data/acpi/x86/q35/DSDT",
>> +"tests/data/acpi/x86/q35/DSDT.acpierst",
>> +"tests/data/acpi/x86/q35/DSDT.acpihmat",
>> +"tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x",
>> +"tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator",
>> +"tests/data/acpi/x86/q35/DSDT.applesmc",
>> +"tests/data/acpi/x86/q35/DSDT.bridge",
>> +"tests/data/acpi/x86/q35/DSDT.core-count",
>> +"tests/data/acpi/x86/q35/DSDT.core-count2",
>> +"tests/data/acpi/x86/q35/DSDT.cphp",
>> +"tests/data/acpi/x86/q35/DSDT.cxl",
>> +"tests/data/acpi/x86/q35/DSDT.dimmpxm",
>> +"tests/data/acpi/x86/q35/DSDT.ipmibt",
>> +"tests/data/acpi/x86/q35/DSDT.ipmismbus",
>> +"tests/data/acpi/x86/q35/DSDT.ivrs",
>> +"tests/data/acpi/x86/q35/DSDT.memhp",
>> +"tests/data/acpi/x86/q35/DSDT.mmio64",
>> +"tests/data/acpi/x86/q35/DSDT.multi-bridge",
>> +"tests/data/acpi/x86/q35/DSDT.noacpihp",
>> +"tests/data/acpi/x86/q35/DSDT.nohpet",
>> +"tests/data/acpi/x86/q35/DSDT.numamem",
>> +"tests/data/acpi/x86/q35/DSDT.pvpanic-isa",
>> +"tests/data/acpi/x86/q35/DSDT.thread-count",
>> +"tests/data/acpi/x86/q35/DSDT.thread-count2",
>> +"tests/data/acpi/x86/q35/DSDT.tis.tpm12",
>> +"tests/data/acpi/x86/q35/DSDT.tis.tpm2",
>> +"tests/data/acpi/x86/q35/DSDT.type4-count",
>> +"tests/data/acpi/x86/q35/DSDT.viot",
>> +"tests/data/acpi/x86/q35/DSDT.xapic",
>
> Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
>
>
> Cheers,
> Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 03/13] acpi: Support Control Method sleep button for x86
2025-04-17 17:30 ` Gustavo Romero
@ 2025-04-17 18:42 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:42 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: mst, imammedo, philmd, zhao1.liu, Jonathan.Cameron
Hi Gustavo,
On 4/17/2025 1:30 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/11/25 17:34, Annie Li wrote:
>> Add Control Method Sleep button and its GPE event handler for
>> x86 platform. The GPE event handler notifies OSPM when the
>> Sleep button event is triggered.
>>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> hw/i386/acpi-build.c | 22 +++++++++++++++++++++-
>> 1 file changed, 21 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
>> index 3fffa4a332..4be3595e5a 100644
>> --- a/hw/i386/acpi-build.c
>> +++ b/hw/i386/acpi-build.c
>> @@ -40,6 +40,7 @@
>> #include "hw/acpi/acpi_aml_interface.h"
>> #include "hw/input/i8042.h"
>> #include "hw/acpi/memory_hotplug.h"
>> +#include "hw/acpi/control_method_device.h"
>> #include "system/tpm.h"
>> #include "hw/acpi/tpm.h"
>> #include "hw/acpi/vmgenid.h"
>> @@ -1359,7 +1360,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
>> NULL);
>> Object *q35 =
>> object_resolve_type_unambiguous(TYPE_Q35_HOST_DEVICE, NULL);
>> CrsRangeEntry *entry;
>> - Aml *dsdt, *sb_scope, *scope, *dev, *method, *field, *pkg, *crs;
>> + Aml *dsdt, *sb_scope, *scope, *dev, *method, *field, *pkg, *crs,
>> *condition;
>> CrsRangeSet crs_range_set;
>> PCMachineState *pcms = PC_MACHINE(machine);
>> PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(machine);
>> @@ -1465,6 +1466,25 @@ build_dsdt(GArray *table_data, BIOSLinker
>> *linker,
>> }
>> aml_append(dsdt, scope);
>> + sb_scope = aml_scope("_SB");
>> + acpi_dsdt_add_sleep_button(sb_scope);
>> + aml_append(dsdt, sb_scope);
>> +
>> + /*
>> + * The event handler for the control method sleep button is
>> generated
>> + * for notifying OSPM[ACPI v6.5 Section 4.8.2.2.2.].
>
> Typo: Section 4.8.2.2.2.2
>
> Please use the form "... OSPM (ACPI v6.5, Section 4.8.2.2.2.2)" for
> citations.
>
Ack
>
>> + */
>> + scope = aml_scope("\\_GPE");
>> + method = aml_method("_L07", 0, AML_NOTSERIALIZED);
>> + condition = aml_if(aml_name("\\_SB.SLPB.SBP"));
>> + aml_append(condition, aml_store(aml_int(1),
>> aml_name("\\_SB.SLPB.SBP")));
>
> Why not concatenate with ACPI_SLEEP_BUTTON_DEVICE here and in the
> conditional
> above it as it's done below for the Notify()?
Make sense.
Thanks
Annie
>
>
> Cheers,
> Gustavo
>
>> + aml_append(condition,
>> + aml_notify(aml_name("\\_SB."ACPI_SLEEP_BUTTON_DEVICE),
>> + aml_int(0x80)));
>> + aml_append(method, condition);
>> + aml_append(scope, method);
>> + aml_append(dsdt, scope);
>> +
>> if (pcmc->legacy_cpu_hotplug) {
>> build_legacy_cpu_hotplug_aml(dsdt, machine,
>> pm->cpu_hp_io_base);
>> } else {
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 04/13] tests/qtest/bios-table-tests: Update ACPI table binaries for x86
2025-04-17 17:31 ` Gustavo Romero
@ 2025-04-17 18:44 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:44 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru
Hi Gustavo,
On 4/17/2025 1:31 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/11/25 17:39, Annie Li wrote:
>> Following is the diff generated by the step 5 and 6 in
>> tests/qtest/bios-tables-test.c
>>
>> Diff from iasl to show changes in DSDT table:
>>
>> --- /tmp/asl-34PV42.dsl 2025-04-09 19:04:34.846646690 +0000
>> +++ /tmp/asl-5XBW42.dsl 2025-04-09 19:04:34.839646378 +0000
>> @@ -1,30 +1,30 @@
>> /*
>> * Intel ACPI Component Architecture
>> * AML/ASL+ Disassembler version 20210604 (64-bit version)
>> * Copyright (c) 2000 - 2021 Intel Corporation
>> *
>> * Disassembling to symbolic ASL+ operators
>> *
>> - * Disassembly of tests/data/acpi/x86/q35/DSDT, Wed Apr 9 19:04:34
>> 2025
>> + * Disassembly of /tmp/aml-EMBW42, Wed Apr 9 19:04:34 2025
>
> This complete valid diff in the commit message seems to confuse git am
> and
> b4. Please remove the initial 2 lines to make it invalid, i.e. remove:
>
>> --- /tmp/asl-34PV42.dsl 2025-04-09 19:04:34.846646690 +0000
>> +++ /tmp/asl-5XBW42.dsl 2025-04-09 19:04:34.839646378 +0000
>
> Also, to me, it's simple to concat:
>
>> - * Disassembly of tests/data/acpi/x86/q35/DSDT, Wed Apr 9 19:04:34
>> 2025
>> + * Disassembly of /tmp/aml-EMBW42, Wed Apr 9 19:04:34 2025
>
> into:
>
>> * Disassembly of tests/data/acpi/x86/q35/DSDT, Wed Apr 9 19:04:34
>> 2025
>
> since /tmp/aml-EMBW42 brings no information to the commit message.
Sure, will fix comments as suggestions above.
Thanks
Annie
>
>
> Otherwise:
>
> Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
>
>
> Cheers,
> Gustavo
>
>> *
>> * Original Table Header:
>> * Signature "DSDT"
>> - * Length 0x000020F8 (8440)
>> + * Length 0x00002166 (8550)
>> * Revision 0x01 **** 32-bit table (V1), no 64-bit math
>> support
>> - * Checksum 0xBE
>> + * Checksum 0x1E
>> * OEM ID "BOCHS "
>> * OEM Table ID "BXPC "
>> * OEM Revision 0x00000001 (1)
>> * Compiler ID "BXPC"
>> * Compiler Version 0x00000001 (1)
>> */
>> DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPC ", 0x00000001)
>> {
>> Scope (\)
>> {
>> OperationRegion (DBG, SystemIO, 0x0402, One)
>> Field (DBG, ByteAcc, NoLock, Preserve)
>> {
>> DBGB, 8
>> }
>>
>> @@ -2852,32 +2852,57 @@
>> {
>> Memory32Fixed (ReadOnly,
>> 0xFED00000, // Address Base
>> 0x00000400, // Address Length
>> )
>> })
>> }
>> }
>>
>> Scope (_GPE)
>> {
>> Name (_HID, "ACPI0006" /* GPE Block Device */) // _HID:
>> Hardware ID
>> }
>>
>> Scope (_SB)
>> {
>> + Device (SLPB)
>> + {
>> + Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device
>> */) // _HID: Hardware ID
>> + OperationRegion (\SLP, SystemIO, 0x0201, One)
>> + Field (\SLP, ByteAcc, NoLock, WriteAsZeros)
>> + {
>> + SBP, 1
>> + }
>> + }
>> + }
>> +
>> + Scope (\_GPE)
>> + {
>> + Method (_L07, 0, NotSerialized) // _Lxx: Level-Triggered
>> GPE, xx=0x00-0xFF
>> + {
>> + If (\_SB.SLPB.SBP)
>> + {
>> + \_SB.SLPB.SBP = One
>> + Notify (\_SB.SLPB, 0x80) // Status Change
>> + }
>> + }
>> + }
>> +
>> + Scope (_SB)
>> + {
>> Device (\_SB.PCI0.PRES)
>> {
>> Name (_HID, EisaId ("PNP0A06") /* Generic Container
>> Device */) // _HID: Hardware ID
>> Name (_UID, "CPU Hotplug resources") // _UID: Unique ID
>> Mutex (CPLK, 0x00)
>> Name (_CRS, ResourceTemplate () // _CRS: Current
>> Resource Settings
>> {
>> IO (Decode16,
>> 0x0CD8, // Range Minimum
>> 0x0CD8, // Range Maximum
>> 0x01, // Alignment
>> 0x0C, // Length
>> )
>> })
>> OperationRegion (PRST, SystemIO, 0x0CD8, 0x0C)
>> Field (PRST, ByteAcc, NoLock, WriteAsZeros)
>>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> tests/data/acpi/x86/pc/DSDT | Bin 8611 -> 8721 bytes
>> tests/data/acpi/x86/pc/DSDT.acpierst | Bin 8522 -> 8632 bytes
>> tests/data/acpi/x86/pc/DSDT.acpihmat | Bin 9936 -> 10046
>> bytes
>> tests/data/acpi/x86/pc/DSDT.bridge | Bin 15482 -> 15592
>> bytes
>> tests/data/acpi/x86/pc/DSDT.cphp | Bin 9075 -> 9185 bytes
>> tests/data/acpi/x86/pc/DSDT.dimmpxm | Bin 10265 -> 10375
>> bytes
>> tests/data/acpi/x86/pc/DSDT.hpbridge | Bin 8562 -> 8672 bytes
>> tests/data/acpi/x86/pc/DSDT.hpbrroot | Bin 5100 -> 5210 bytes
>> tests/data/acpi/x86/pc/DSDT.ipmikcs | Bin 8683 -> 8793 bytes
>> tests/data/acpi/x86/pc/DSDT.memhp | Bin 9970 -> 10080
>> bytes
>> tests/data/acpi/x86/pc/DSDT.nohpet | Bin 8469 -> 8579 bytes
>> tests/data/acpi/x86/pc/DSDT.numamem | Bin 8617 -> 8727 bytes
>> tests/data/acpi/x86/pc/DSDT.roothp | Bin 12404 -> 12514
>> bytes
>> tests/data/acpi/x86/q35/DSDT | Bin 8440 -> 8550 bytes
>> tests/data/acpi/x86/q35/DSDT.acpierst | Bin 8457 -> 8567 bytes
>> tests/data/acpi/x86/q35/DSDT.acpihmat | Bin 9765 -> 9875 bytes
>> .../data/acpi/x86/q35/DSDT.acpihmat-generic-x | Bin 12650 -> 12760
>> bytes
>> .../acpi/x86/q35/DSDT.acpihmat-noinitiator | Bin 8719 -> 8829 bytes
>> tests/data/acpi/x86/q35/DSDT.applesmc | Bin 8486 -> 8596 bytes
>> tests/data/acpi/x86/q35/DSDT.bridge | Bin 12053 -> 12163
>> bytes
>> tests/data/acpi/x86/q35/DSDT.core-count | Bin 12998 -> 13108
>> bytes
>> tests/data/acpi/x86/q35/DSDT.core-count2 | Bin 33855 -> 33965
>> bytes
>> tests/data/acpi/x86/q35/DSDT.cphp | Bin 8904 -> 9014 bytes
>> tests/data/acpi/x86/q35/DSDT.cxl | Bin 13231 -> 13341
>> bytes
>> tests/data/acpi/x86/q35/DSDT.dimmpxm | Bin 10094 -> 10204
>> bytes
>> tests/data/acpi/x86/q35/DSDT.ipmibt | Bin 8515 -> 8625 bytes
>> tests/data/acpi/x86/q35/DSDT.ipmismbus | Bin 8528 -> 8638 bytes
>> tests/data/acpi/x86/q35/DSDT.ivrs | Bin 8457 -> 8567 bytes
>> tests/data/acpi/x86/q35/DSDT.memhp | Bin 9799 -> 9909 bytes
>> tests/data/acpi/x86/q35/DSDT.mmio64 | Bin 9570 -> 9680 bytes
>> tests/data/acpi/x86/q35/DSDT.multi-bridge | Bin 13293 -> 13403
>> bytes
>> tests/data/acpi/x86/q35/DSDT.noacpihp | Bin 8302 -> 8412 bytes
>> tests/data/acpi/x86/q35/DSDT.nohpet | Bin 8298 -> 8408 bytes
>> tests/data/acpi/x86/q35/DSDT.numamem | Bin 8446 -> 8556 bytes
>> tests/data/acpi/x86/q35/DSDT.pvpanic-isa | Bin 8541 -> 8651 bytes
>> tests/data/acpi/x86/q35/DSDT.thread-count | Bin 12998 -> 13108
>> bytes
>> tests/data/acpi/x86/q35/DSDT.thread-count2 | Bin 33855 -> 33965
>> bytes
>> tests/data/acpi/x86/q35/DSDT.tis.tpm12 | Bin 9046 -> 9156 bytes
>> tests/data/acpi/x86/q35/DSDT.tis.tpm2 | Bin 9072 -> 9182 bytes
>> tests/data/acpi/x86/q35/DSDT.type4-count | Bin 18674 -> 18784
>> bytes
>> tests/data/acpi/x86/q35/DSDT.viot | Bin 14697 -> 14807
>> bytes
>> tests/data/acpi/x86/q35/DSDT.xapic | Bin 35803 -> 35913
>> bytes
>> tests/qtest/bios-tables-test-allowed-diff.h | 42 ------------------
>> 43 files changed, 42 deletions(-)
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT b/tests/data/acpi/x86/pc/DSDT
>> index
>> 4beb5194b84a711fcb52e3e52cc2096497d18442..62bd8eae9602af4c590c6962689da54e4bff9c70
>> 100644
>> GIT binary patch
>> delta 152
>> zcmZ4NJkf>ACD<iIP>F$oF<>LtX`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
>> Q46)9G3#x4MGoHO70CXWM82|tP
>>
>> delta 24
>> gcmbQ}ve=o+CD<iou_6Nl<A;r0r+GFz^PUp{0AxW3ApigX
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.acpierst
>> b/tests/data/acpi/x86/pc/DSDT.acpierst
>> index
>> abda6863b64c5dc8ba5aba1a286cbfa76772a1e4..6c9cf3df3902fb30c704b7a657c4c08402c28837
>> 100644
>> GIT binary patch
>> delta 152
>> zcmX@*w8NRpCD<iohav+5<IIg*r+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
>> zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&3)
>> QGsHR%E~v82&v;Tq03>NE`v3p{
>>
>> delta 24
>> fcmdnte9DQ-CD<jzOOb(r(PAUlX`ao_yrm)lUH%6H
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.acpihmat
>> b/tests/data/acpi/x86/pc/DSDT.acpihmat
>> index
>> d081db26d7ba504b3344fad130d5812419291ac0..36f952d730a1d64c1babf7adf05c0ed364f559f3
>> 100644
>> GIT binary patch
>> delta 152
>> zcmccMyU&lyCD<jzPMv{)k#{54X`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*L
>> Q39-(D3#x4MGoDwH0Ih*5tpET3
>>
>> delta 24
>> gcmdnzcfps-CD<k8f*Jz@<Jyf}r+GFz^Zu3u0B*SmumAu6
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.bridge
>> b/tests/data/acpi/x86/pc/DSDT.bridge
>> index
>> e16897dc5f0fbb3f7b4de8db913884046246cc3b..da189168ffdae5817a4fe7b0e62531a333cb3d75
>> 100644
>> GIT binary patch
>> delta 152
>> zcmexW@uHH;CD<k8g$)A(WBf+0(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
>> Q8DgCW7gX8iXFOB%0jE+eBLDyZ
>>
>> delta 24
>> gcmaD+`KyA<CD<jT%7%e~@!v+S(>$A<d6((~0DNZ&D*ylh
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.cphp
>> b/tests/data/acpi/x86/pc/DSDT.cphp
>> index
>> e95711cd9cde5d50b841b701ae0fed5a4b15e872..d6f96a071f1a7d570400dffedfd10af38eee0faf
>> 100644
>> GIT binary patch
>> delta 152
>> zcmezD_RyWnCD<k8p)vyl<B^SAr+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
>> zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&34
>> Q0>nBGE~v82&v<&p0E=BL^8f$<
>>
>> delta 24
>> fcmaFp{@IPoCD<jTSeb!=F?l1`X`ao_yz|5WYLN%t
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.dimmpxm
>> b/tests/data/acpi/x86/pc/DSDT.dimmpxm
>> index
>> 90ba66b9164f9a958d5a3c4371b1eec03e922828..ee06a74106606a3725b7f6882d020cf487873771
>> 100644
>> GIT binary patch
>> delta 152
>> zcmbOk&>qO;66_MvuED^-Sh$hvK2N<te6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
>> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7p=a
>> Qfmr9k1y#2B7mvI&0NQISX8-^I
>>
>> delta 24
>> fcmZn<oEgC766_KpslmX&D6o<1KF{WGUIS?WQ{)C!
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.hpbridge
>> b/tests/data/acpi/x86/pc/DSDT.hpbridge
>> index
>> 0eafe5fbf3d73719c9c3e6e26371863bfb44ed2f..1730d2ca1d83c08eca05e35ac1691e559a618489
>> 100644
>> GIT binary patch
>> delta 152
>> zcmez5^uU?RCD<k8fg%F~W9vq)(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
>> Q8DgCW7gX8iXFNS30AG15hX4Qo
>>
>> delta 24
>> fcmaFh{K<*SCD<jTNRfeoQDr07X`ao_ymLhWXATFC
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.hpbrroot
>> b/tests/data/acpi/x86/pc/DSDT.hpbrroot
>> index
>> 077a4cc988dc417a1bc9317dddd2dbd96ff1ff50..4ae9b5586f27761f77eabc801467a343a88d84a4
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaE(eoKSPCD<h-N`!%d@$g2j9PWC9_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
>> Q46)9G3#x2$J9jDv0MnK#{Qv*}
>>
>> delta 24
>> fcmcbm@kX7?CD<k8jW7cPWAa9>9PZ6exXU;IX|o6f
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.ipmikcs
>> b/tests/data/acpi/x86/pc/DSDT.ipmikcs
>> index
>> 8d465f027772f9c59b0c328c1a099e374a6d2a90..71e2566c59b03670df98d8f3dced9b7f7df1a985
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaFueA9)?CD<h-Qi*|q@ytf9(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
>> Q8DgCW7gX8iXFRN;05ZWVwg3PC
>>
>> delta 24
>> fcmccV^4gipCD<k8wITxpW6nmd(>$A<dBsElZqf(7
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.memhp
>> b/tests/data/acpi/x86/pc/DSDT.memhp
>> index
>> e3b49757cb7abd7536ee89a6824967d2cb2485cf..5955bc2920d5327a90ae604d406496d73d543378
>> 100644
>> GIT binary patch
>> delta 152
>> zcmez5`@oOOCD<h-L7jntQDr07X`Xt6_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*E
>> Q46)9G3#x4MGaeo(0P|uiP5=M^
>>
>> delta 24
>> gcmaFh_sN&bCD<k8lNtj9<B^SAr+GFz^U6vA0CoNdPyhe`
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.nohpet
>> b/tests/data/acpi/x86/pc/DSDT.nohpet
>> index
>> 9e772c1316d0ea07c51717466c4c7e383553f345..2eef579e2fb3629b3e6a66eccb1565e2fbf2864d
>> 100644
>> GIT binary patch
>> delta 152
>> zcmbR0)a=aV66_MvtjNH?D7BHxmZ#nzKG-Qfx=AzGC%}m#-ow*{$MFIWUvxtZP#~U>
>> zn~{kzx{(LWaSV0>iU`=m#JdN$ikQax7??9G(2LP$2AKfT4w5fmL=$L>(SylzH3&F4
>> QL#*@Qf-2h_!LwHc05@AI8UO$Q
>>
>> delta 24
>> fcmZp6p6bNq66_Kps>r~=xN{?yEzjnyJm*9JRQv}a
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.numamem
>> b/tests/data/acpi/x86/pc/DSDT.numamem
>> index
>> 9bfbfc28213713c208dfc38a85abb46fb190871d..b2c8220fefd1175ff403a77f77ea2fab7675d096
>> 100644
>> GIT binary patch
>> delta 152
>> zcmZ4KJl%!MCD<iIT#12!@y<rB(>(PC@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
>> Q8DgCW7gX8iXFP{R0Lqsu!vFvP
>>
>> delta 24
>> gcmbR4veKE$CD<ior6L0ZW6egc(>$A<d9R270AVu+#Q*>R
>>
>> diff --git a/tests/data/acpi/x86/pc/DSDT.roothp
>> b/tests/data/acpi/x86/pc/DSDT.roothp
>> index
>> efbee6d8aa5c62ff4fcb83e6c5cff59542977850..287ec23844e6887a24276d21b9bdcc415796e656
>> 100644
>> GIT binary patch
>> delta 152
>> zcmey8@F<bXCD<k8kpTk(<K2y1r+MlP;)9*yqnk8?eFB^~;ypZFcpNYA@I^Po00rV1
>> zxfz)lqZ@g^9LHcMpooA?OuT!5tB7g5kAXSE0=*c0W{?RW?I8IAMl^x87(JLgSA&3)
>> QGsHR%E~v82&v^Qj0ln}oK>z>%
>>
>> delta 24
>> fcmaEq_$7hMCD<jT#DIZ;v1TLJX`ao_yz`X-aRmrT
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT b/tests/data/acpi/x86/q35/DSDT
>> index
>> e5e8d1e041e20e1b3ee56a5c93fe3d6ebd721ee6..813e489f98b6be8958d8bf9bcf1d0b2eed691a5e
>> 100644
>> GIT binary patch
>> delta 152
>> zcmez2_{@pRCD<h-O_70tQEnrbq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
>> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
>> QhFIsp1y#1$MDhqb0FYQJkpKVy
>>
>> delta 24
>> gcmaFn^uv+MCD<k8hXMlw<Gzhtl9HPzN?v6L0CM#Rm;e9(
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.acpierst
>> b/tests/data/acpi/x86/q35/DSDT.acpierst
>> index
>> 072a3fe2cd17dfe06658dfd82588f69787810114..2d81bcbc781d3fc68a053d5319fbdcfa153a4653
>> 100644
>> GIT binary patch
>> delta 152
>> zcmeBl`tHQ#66_LEuE@Z^xNjquq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
>> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
>> QhFIsp1y#1$MDi*-0Jz>N_5c6?
>>
>> delta 24
>> fcmezF)ak_K66_MfsmQ><7`u^6QgZV|$!F{US$zim
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat
>> b/tests/data/acpi/x86/q35/DSDT.acpihmat
>> index
>> 2a4f2fc1d5c5649673353186e67ff5b5e59e8d53..0b911c9425d2f59fc6e0a2aac97fe23ee0b4a18d
>> 100644
>> GIT binary patch
>> delta 152
>> zcmZ4LGufBRCD<iovKj*e<L!-Hl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klg
>> Q6JnhQ7gX716UmP}0KMcZCjbBd
>>
>> delta 24
>> fcmbR2yVQrvCD<iIRgHmxv1%iiq~zv_l1#h+Rh|Ya
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x
>> b/tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x
>> index
>> 7911c058bba5005d318b8db8d6da5c1ee381b0f1..bd0f517847bd71eb78db72010df699c1bea64d4a
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaErbR(I|CD<k8h9Lt3W5Y%+Ny&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*S
>> Q2eHnB3#x3hiKLkX03_=xHUIzs
>>
>> delta 24
>> fcmcbS{3?mdCD<h-%aDPAQGO$rq~zv_lI{`!XLtuC
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator
>> b/tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator
>> index
>> 580b4a456a20fc0cc0a832eaf74193b46d8ae8b1..3ab30d885f483c1626a9ab5a3501610923485462
>> 100644
>> GIT binary patch
>> delta 152
>> zcmeBo`Rl^v66_LEtHi*-ICUeJq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
>> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7p=Y
>> Qfmr9k1y#1$MDjKV0J0=20{{R3
>>
>> delta 24
>> fcmezC((l6M66_Mfuf)K>XtI$@QgZV|$u}GTS;PkN
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.applesmc
>> b/tests/data/acpi/x86/q35/DSDT.applesmc
>> index
>> 5e8220e38d6f88b103f6eb3eb7c78dfa466882dc..7e17c9ebb3b7d28526bd04c9af5ca05a3461ac13
>> 100644
>> GIT binary patch
>> delta 152
>> zcmZ4HG{u?ACD<ioiXsC8Bi}|YNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
>> Q46)9G3#x3hiR34C075n@I{*Lx
>>
>> delta 24
>> fcmbQ@yv&KqCD<iIO_70taqUJfNy*I<C7C$@RoDhY
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.bridge
>> b/tests/data/acpi/x86/q35/DSDT.bridge
>> index
>> ee039453af1071e00a81ee7b37cf8f417f524257..9da24d83ea7ab37c354a0cdbecbcf5129a3e1621
>> 100644
>> GIT binary patch
>> delta 152
>> zcmbOl*BsB~66_Mvtk1x}Xtj|`QnKD4KG-Qfx=AzGC%}m#-ow*{$MFIWUvxtZP#~U>
>> zn~{kzx{(LWaSV0>iU`=m#JdN$ikQax7??9G(2LP$2AKfT4w5fmL=$L>(SylzH3&F4
>> QL#*@Qf-2i=BKc4h0A%4RcK`qY
>>
>> delta 24
>> fcmZpUpBl&I66_Kps?Wf{cyl9{q~zv_lAlBYTLK4u
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.core-count
>> b/tests/data/acpi/x86/q35/DSDT.core-count
>> index
>> 7ebfceeb66460d0ad98471924ce224b7153e87ef..22bf4a17db1b8175db939c5159e1686c8bc54066
>> 100644
>> GIT binary patch
>> delta 152
>> zcmX?>x+RUvCD<jz#F&ABaoR>MNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)gaK2
>> RzzDI=gA1Z=vx(#+NdT{dDyjeg
>>
>> delta 24
>> gcmdmzb}W_4CD<k8m=Oa5quE9-Ny*I<B^OHq0BDs5v;Y7A
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.core-count2
>> b/tests/data/acpi/x86/q35/DSDT.core-count2
>> index
>> d0394558a1faa0b4ba43abab66d474d96b477ff3..69e710caba4a353d3c0805acc8faba7043bf0ff3
>> 100644
>> GIT binary patch
>> delta 154
>> zcmdnr!L+uMiOVI}C1h<20|VoWja-tF^#<|5PVv!An!!E+P8{(bo-RC&7kK!h8)AS0
>> z@r>MzOpMWuJYbGvuoF;3z$PZ%J-}7OG~UO+oMC}pj6O5S1dw)+d;uexKwFF+OrEPj
>> TptGC}VxI>WMBQc+N$zX_b$%=I
>>
>> delta 26
>> hcmZ46$+W+NiOVI}CB(jkfq}7oBbTJ)=82Lr*#K~72iE`q
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.cphp
>> b/tests/data/acpi/x86/q35/DSDT.cphp
>> index
>> a055c2e7d3c4f5a00a03be20fd73227e322283a4..0b9e315600b8665a8cb4ddfc57c4cf60968d0b4f
>> 100644
>> GIT binary patch
>> delta 152
>> zcmX@%y3LKtCD<jzOqqd!apFcUNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga)M
>> Q0I|-43#x3hiR2Vc0D`qDZ2$lO
>>
>> delta 24
>> gcmdnycEXj*CD<k8gc1V-qv1v_Ny*I<C6{sn0Ag_mR{#J2
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.cxl
>> b/tests/data/acpi/x86/q35/DSDT.cxl
>> index
>> 20843549f54af1cb0e6017c4cfff7463318d9eb7..0a49b62f39f1e4e00db2d03bbf34de4e20f2ed7d
>> 100644
>> GIT binary patch
>> delta 152
>> zcmZ3VJ~xBQCD<iI)`Wq9F=!)~q-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
>> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
>> QhFIsp1y#1$M6y~60Avm-6951J
>>
>> delta 24
>> gcmbQ6u|A#4CD<ioy)gp=<EM>Wl9HPzO7=(r0BWlU8UO$Q
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.dimmpxm
>> b/tests/data/acpi/x86/q35/DSDT.dimmpxm
>> index
>> 664e926e90765550136242f7e3e0bdc7719c1853..1c14b91bb4d341d16527d330e2bb0515e2fafb81
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaFocgLU0CD<k8jyeMaqy0uMUCDZb_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga&<
>> Q0<q463#x3hhol-G0QRCP-v9sr
>>
>> delta 24
>> fcmccP|IUxgCD<h-Po05*@!m!*UCGT$CC&K&Y?uek
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.ipmibt
>> b/tests/data/acpi/x86/q35/DSDT.ipmibt
>> index
>> 4066a76d26aa380dfbecc58aa3f83ab5db2baadb..5561088d97a871f858461680d77d016f6b71d799
>> 100644
>> GIT binary patch
>> delta 152
>> zcmX@?w9%Q%CD<ioqap(XW6(w}Ny&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
>> Q46)9G3#x3hi6lP<0GEO(^Z)<=
>>
>> delta 24
>> fcmdn!eAtQ0CD<jzS&@N(@#97=Ny*I<B^5XTU!w;5
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.ipmismbus
>> b/tests/data/acpi/x86/q35/DSDT.ipmismbus
>> index
>> 6d0b6b95c2a9fd01befc37b26650781ee1562e2a..cecba8c0629f89d2ccdd017791be69e5a98f52fa
>> 100644
>> GIT binary patch
>> delta 152
>> zcmccMw9lE#CD<iopCSVT<Kc~5l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
>> Q8DgCW7gX716G<5k0P7zrnE(I)
>>
>> delta 24
>> fcmdnze8Gv!CD<h-K#_rgF=->0q~zv_lDZrKT|fq)
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.ivrs
>> b/tests/data/acpi/x86/q35/DSDT.ivrs
>> index
>> 072a3fe2cd17dfe06658dfd82588f69787810114..2d81bcbc781d3fc68a053d5319fbdcfa153a4653
>> 100644
>> GIT binary patch
>> delta 152
>> zcmeBl`tHQ#66_LEuE@Z^xNjquq-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
>> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
>> QhFIsp1y#1$MDi*-0Jz>N_5c6?
>>
>> delta 24
>> fcmezF)ak_K66_MfsmQ><7`u^6QgZV|$!F{US$zim
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.memhp
>> b/tests/data/acpi/x86/q35/DSDT.memhp
>> index
>> 4f2f9bcfceff076490cc49b8286380295a340004..056366a2c9fd535fa02d7494181e76b6a76b4cfb
>> 100644
>> GIT binary patch
>> delta 152
>> zcmX@^v(=Z&CD<ios~Q6X<EM>Wl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
>> Q8DgCW7gX716G>rS00Y!2$N&HU
>>
>> delta 24
>> fcmdn$d)$Z1CD<jzU5$Z(apFcUNy*I<B~^F<Ug8GH
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.mmio64
>> b/tests/data/acpi/x86/q35/DSDT.mmio64
>> index
>> 0fb6aab16f1bd79f3c0790cc9f644f7e52ac37b1..3ab05c9ec6afa014ad53ad246fcba7336bef3901
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaFlb-|m<CD<k8f+_<8<K~TAl9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klS
>> Q8DgCW7gX716G=TD01g}~?*IS*
>>
>> delta 24
>> fcmccM{m6^UCD<h-NtJ<tF=!)~q~zv_lJ-0RVyXu4
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.multi-bridge
>> b/tests/data/acpi/x86/q35/DSDT.multi-bridge
>> index
>> f6afa6d96d2525d512cc46f17439f7a49962b730..41543787c443606ccef7191c2b0bee6737efe752
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaExemjH9CD<h-+Ju3D(Rd@5q-4E8e6Uk|bdzSVPk<9gyoaX?kK+X%zUYP+pg=q$
>> zHzN~cbR!R#;~4A&6cMnAiFXfh6)}zXF)(LXpckXh3^D<v9VB1Ch$he$qX(1cY7lU8
>> QhFIsp1y#1$L~^GT0Kb|l>;M1&
>>
>> delta 24
>> gcmcbe@iv{yCD<k8tuX@w<K>N9l9HPzN}iGe0C=|u^8f$<
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.noacpihp
>> b/tests/data/acpi/x86/q35/DSDT.noacpihp
>> index
>> 9f7261d1b06bbf5d8a3e5a7a46b247a2a21eb544..1c09aff8b5b8955730d5ca1737e4e7f6e698e401
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaFoaL19$CD<k8jsgP%BjZM{UE=iy@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
>> Q8DgCW7gX8itKu^`01GWE=Kufz
>>
>> delta 24
>> gcmccP_|AdLCD<h-Pl17faluBeUE-UKBvx?%0BS-9?*IS*
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.nohpet
>> b/tests/data/acpi/x86/q35/DSDT.nohpet
>> index
>> 99ad629c9171ff6ab346d6b4c519e77ca23e5b1c..86a109d6b12d38501d4353b5f8e31e9f3c15dd43
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaFmaKn+yCD<k8h5`cv<BN@4-4gW%@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
>> Q8DgCW7gX8iWfDi&0caR3kN^Mx
>>
>> delta 24
>> fcmccN_{xFHCD<h-OM!ubv3(;~x5Q><$*b%DW~~R9
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.numamem
>> b/tests/data/acpi/x86/q35/DSDT.numamem
>> index
>> fd1d8a79d3d9b071c8796e5e99b76698a9a8d29c..454aa65803d8da71c9d5f1a263fa0b59bb76af4f
>> 100644
>> GIT binary patch
>> delta 152
>> zcmez8_{NFLCD<h-N0EVnan(jHNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*E
>> Q46)9G3#x3hiR3AE0OrmsI{*Lx
>>
>> delta 24
>> gcmaFk^v{vYCD<k8p8^8|qt`|*Ny*I<C2z9>0B`3AJOBUy
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.pvpanic-isa
>> b/tests/data/acpi/x86/q35/DSDT.pvpanic-isa
>> index
>> 89032fa0290f496be0c06c6382586541aa1118a8..8ef053f6dc2f1c3086756698c5953e857067df9d
>> 100644
>> GIT binary patch
>> delta 152
>> zcmccXblREACD<k8v?2oo<He0!l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
>> Q8DgCW7gX716G=@D010g>+W-In
>>
>> delta 24
>> fcmX@@eAkJ~CD<h-R*`{$v0x*Yq~zv_l2#l5VE+c<
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.thread-count
>> b/tests/data/acpi/x86/q35/DSDT.thread-count
>> index
>> 7ebfceeb66460d0ad98471924ce224b7153e87ef..22bf4a17db1b8175db939c5159e1686c8bc54066
>> 100644
>> GIT binary patch
>> delta 152
>> zcmX?>x+RUvCD<jz#F&ABaoR>MNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)gaK2
>> RzzDI=gA1Z=vx(#+NdT{dDyjeg
>>
>> delta 24
>> gcmdmzb}W_4CD<k8m=Oa5quE9-Ny*I<B^OHq0BDs5v;Y7A
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.thread-count2
>> b/tests/data/acpi/x86/q35/DSDT.thread-count2
>> index
>> d0394558a1faa0b4ba43abab66d474d96b477ff3..69e710caba4a353d3c0805acc8faba7043bf0ff3
>> 100644
>> GIT binary patch
>> delta 154
>> zcmdnr!L+uMiOVI}C1h<20|VoWja-tF^#<|5PVv!An!!E+P8{(bo-RC&7kK!h8)AS0
>> z@r>MzOpMWuJYbGvuoF;3z$PZ%J-}7OG~UO+oMC}pj6O5S1dw)+d;uexKwFF+OrEPj
>> TptGC}VxI>WMBQc+N$zX_b$%=I
>>
>> delta 26
>> hcmZ46$+W+NiOVI}CB(jkfq}7oBbTJ)=82Lr*#K~72iE`q
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.tis.tpm12
>> b/tests/data/acpi/x86/q35/DSDT.tis.tpm12
>> index
>> f2ed40ca70cb13e733e39f4bad756be8688e01fe..a36710dd89085f8ec5f173b84d4cd2a25473530e
>> 100644
>> GIT binary patch
>> delta 152
>> zcmccScEp{_CD<k8h%y5MqyI)ONy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
>> Q46)9G3#x3hiKG%20KDHSNdN!<
>>
>> delta 24
>> fcmX@&e$9=`CD<h-Oqqd!@!du)Ny*I<C5^cNWdH|I
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.tis.tpm2
>> b/tests/data/acpi/x86/q35/DSDT.tis.tpm2
>> index
>> 5c975d2162d0bfee5a3a089e79b5ba038f82b7ef..c7d737509dfd229d2dde46ea92d292039d854f79
>> 100644
>> GIT binary patch
>> delta 152
>> zcmez1cFCD<k8o-zXiBj-jgNy&PH_+Y2_=qAlzp8zM0cn?n(9>)tje9;XtK!JEh
>> zZbl}?=tdqe$1&ImC?a4J6Yn12Dq<S%V_?p(Krcq08Ds)TJ4n8O5lx^iMh_;>)ga*H
>> Q46)9G3#x3hiKGn|0K|zZYXATM
>>
>> delta 24
>> fcmccT{=tpQCD<jTK$(Goam7Y1Ny*I<C4IR7XsQQt
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.type4-count
>> b/tests/data/acpi/x86/q35/DSDT.type4-count
>> index
>> 3194a82b8b4f66aff1ecf7d2d60b4890181fc600..2d8b82a36ef1a8a4325817b164f77ceda78dd42e
>> 100644
>> GIT binary patch
>> delta 154
>> zcmew~k@3MKMlP3NmyiTc1_s8>8@VJU>kZ<Ao#LaLG=qHtoH*h=JY9GkFYxe1H^cx1
>> z;u*OanHZxRdB7aUU?-r6fK5!idw{EmX}phtIl}_I7=31t2_Wqt`2t2XfwmYum^@d5
>> UK+hp2h<zSh5OtePB=_k909vmsYybcN
>>
>> delta 26
>> icmaDbiSg4!MlP3Nmyk~$3=E9H8@VJUH&2v2uMYr$`w0gC
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.viot
>> b/tests/data/acpi/x86/q35/DSDT.viot
>> index
>> 129d43e1e561be3fd7cd71406829ab81d0a8aba0..3920d98b2501b08a4e0d57767a8c47cd57080748
>> 100644
>> GIT binary patch
>> delta 152
>> zcmaD^biJ6%CD<k8x+Mbx<HwC$l9KfX@xe~<(M_7cJ^@Y~@gANoJdPK5_@WzPfCBN1
>> z+>A_&(TzM{j$^PBP(;8cCf+^3Rm3#j$H1InfnJP0Gspyxc947lBbq>4j2=v$t3klY
>> Q8DgCW7gX716G>AA0Ch<#y8r+H
>>
>> delta 24
>> fcmca!{IZD4CD<h-(~^OKal%F}Ny*I<CEXMNZrcaK
>>
>> diff --git a/tests/data/acpi/x86/q35/DSDT.xapic
>> b/tests/data/acpi/x86/q35/DSDT.xapic
>> index
>> b37ab591110d1c8201575ad6bba83449d7b90b21..1c6c420f9edb16f2e706d2b495d6e856441de000
>> 100644
>> GIT binary patch
>> delta 154
>> zcmcaTo$2HZCN7s?mk`e$1_s8*8@VJU>kZ<Ao#LaLG=qHtoH*h=JY9GkFYxe1H^cx1
>> z;u*OanHZxRdB7aUU?-r6fK5!idw{EmX}phtIl}_I7=31t2_Wqt`2t2XfwmYum^@d5
>> UK<h^~h<zSh5OtePB$pQf0DWdH00000
>>
>> delta 26
>> icmX>(gX#8kCN7s?myp}t3=E9T8@VJUH&2w@Q3L>kAqj5)
>>
>> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h
>> b/tests/qtest/bios-tables-test-allowed-diff.h
>> index a1047913af..dfb8523c8b 100644
>> --- a/tests/qtest/bios-tables-test-allowed-diff.h
>> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
>> @@ -1,43 +1 @@
>> /* List of comma-separated changed AML files to ignore */
>> -"tests/data/acpi/x86/pc/DSDT",
>> -"tests/data/acpi/x86/pc/DSDT.acpierst",
>> -"tests/data/acpi/x86/pc/DSDT.acpihmat",
>> -"tests/data/acpi/x86/pc/DSDT.bridge",
>> -"tests/data/acpi/x86/pc/DSDT.cphp",
>> -"tests/data/acpi/x86/pc/DSDT.dimmpxm",
>> -"tests/data/acpi/x86/pc/DSDT.hpbridge",
>> -"tests/data/acpi/x86/pc/DSDT.hpbrroot",
>> -"tests/data/acpi/x86/pc/DSDT.ipmikcs",
>> -"tests/data/acpi/x86/pc/DSDT.memhp",
>> -"tests/data/acpi/x86/pc/DSDT.nohpet",
>> -"tests/data/acpi/x86/pc/DSDT.numamem",
>> -"tests/data/acpi/x86/pc/DSDT.roothp",
>> -"tests/data/acpi/x86/q35/DSDT",
>> -"tests/data/acpi/x86/q35/DSDT.acpierst",
>> -"tests/data/acpi/x86/q35/DSDT.acpihmat",
>> -"tests/data/acpi/x86/q35/DSDT.acpihmat-generic-x",
>> -"tests/data/acpi/x86/q35/DSDT.acpihmat-noinitiator",
>> -"tests/data/acpi/x86/q35/DSDT.applesmc",
>> -"tests/data/acpi/x86/q35/DSDT.bridge",
>> -"tests/data/acpi/x86/q35/DSDT.core-count",
>> -"tests/data/acpi/x86/q35/DSDT.core-count2",
>> -"tests/data/acpi/x86/q35/DSDT.cphp",
>> -"tests/data/acpi/x86/q35/DSDT.cxl",
>> -"tests/data/acpi/x86/q35/DSDT.dimmpxm",
>> -"tests/data/acpi/x86/q35/DSDT.ipmibt",
>> -"tests/data/acpi/x86/q35/DSDT.ipmismbus",
>> -"tests/data/acpi/x86/q35/DSDT.ivrs",
>> -"tests/data/acpi/x86/q35/DSDT.memhp",
>> -"tests/data/acpi/x86/q35/DSDT.mmio64",
>> -"tests/data/acpi/x86/q35/DSDT.multi-bridge",
>> -"tests/data/acpi/x86/q35/DSDT.noacpihp",
>> -"tests/data/acpi/x86/q35/DSDT.nohpet",
>> -"tests/data/acpi/x86/q35/DSDT.numamem",
>> -"tests/data/acpi/x86/q35/DSDT.pvpanic-isa",
>> -"tests/data/acpi/x86/q35/DSDT.thread-count",
>> -"tests/data/acpi/x86/q35/DSDT.thread-count2",
>> -"tests/data/acpi/x86/q35/DSDT.tis.tpm12",
>> -"tests/data/acpi/x86/q35/DSDT.tis.tpm2",
>> -"tests/data/acpi/x86/q35/DSDT.type4-count",
>> -"tests/data/acpi/x86/q35/DSDT.viot",
>> -"tests/data/acpi/x86/q35/DSDT.xapic",
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-17 17:40 ` Gustavo Romero
@ 2025-04-17 18:46 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:46 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Gustavo,
On 4/17/2025 1:40 PM, Gustavo Romero wrote:
>
> Hi Annie,
>
> Some additional comments I forgot :)
>
> On 4/11/25 17:41, Annie Li wrote:
>> The GPE event is triggered to notify x86 guest to suppend
>
> nit ^ suspend
>
> But I prefer to stick with "sleep" here instead.
Ack
>
>
>> itself. The function acpi_send_sleep_event will also
>> trigger GED events on HW-reduced systems where ACPI GED
>> sleep event is supported.
>
> The title for this patch is a bit misleading because no
> x86 code is actually touched. Also, we are not generating
> the AML code and field for wake up (SBW) in patch 1/13,
> hence, remove "wakeup" from the title as well?
Good catch, I've removed "wakeup" from comments, but
missed this in the title :)
Thanks
Annie
>
>
> Cheers,
> Gustavo
>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> hw/acpi/core.c | 10 ++++++++++
>> include/hw/acpi/acpi.h | 1 +
>> include/hw/acpi/acpi_dev_interface.h | 1 +
>> 3 files changed, 12 insertions(+)
>>
>> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
>> index 58f8964e13..00a9d226f0 100644
>> --- a/hw/acpi/core.c
>> +++ b/hw/acpi/core.c
>> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
>> return -1;
>> }
>> +void acpi_send_sleep_event(void)
>> +{
>> + Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF,
>> NULL);
>> +
>> + if (obj) {
>> + /* Send sleep event */
>> + acpi_send_event(DEVICE(obj), ACPI_SLEEP_STATUS);
>> + }
>> +}
>> +
>> static void acpi_notify_wakeup(Notifier *notifier, void *data)
>> {
>> ACPIREGS *ar = container_of(notifier, ACPIREGS, wakeup);
>> diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
>> index d1a4fa2af8..64d3ff78ed 100644
>> --- a/include/hw/acpi/acpi.h
>> +++ b/include/hw/acpi/acpi.h
>> @@ -184,6 +184,7 @@ uint32_t acpi_gpe_ioport_readb(ACPIREGS *ar,
>> uint32_t addr);
>> void acpi_send_gpe_event(ACPIREGS *ar, qemu_irq irq,
>> AcpiEventStatusBits status);
>> +void acpi_send_sleep_event(void);
>> void acpi_update_sci(ACPIREGS *acpi_regs, qemu_irq irq);
>> diff --git a/include/hw/acpi/acpi_dev_interface.h
>> b/include/hw/acpi/acpi_dev_interface.h
>> index 68d9d15f50..1cb050cd3a 100644
>> --- a/include/hw/acpi/acpi_dev_interface.h
>> +++ b/include/hw/acpi/acpi_dev_interface.h
>> @@ -13,6 +13,7 @@ typedef enum {
>> ACPI_NVDIMM_HOTPLUG_STATUS = 16,
>> ACPI_VMGENID_CHANGE_STATUS = 32,
>> ACPI_POWER_DOWN_STATUS = 64,
>> + ACPI_SLEEP_STATUS = 128,
>> } AcpiEventStatusBits;
>> #define TYPE_ACPI_DEVICE_IF "acpi-device-interface"
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup for x86
2025-04-17 17:32 ` Gustavo Romero
@ 2025-04-17 18:48 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:48 UTC (permalink / raw)
To: Gustavo Romero, Philippe Mathieu-Daudé, Alex Bennée
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, armbru, miguel.luis
Hi Gustavo,
On 4/17/2025 1:32 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/16/25 03:24, Philippe Mathieu-Daudé wrote:
>> On 15/4/25 23:48, Annie Li wrote:
>>>
>>> On 4/15/2025 11:29 AM, Philippe Mathieu-Daudé wrote:
>>>> Hi Annie,
>>>>
>>>> On 15/4/25 03:24, Annie Li wrote:
>>>>>
>>>>> On 4/14/2025 11:18 AM, Alex Bennée wrote:
>>>>>> Annie Li <annie.li@oracle.com> writes:
>>>>>>
>>>>>>> The GPE event is triggered to notify x86 guest to suppend
>>>>>>> itself. The function acpi_send_sleep_event will also
>>>>>>> trigger GED events on HW-reduced systems where ACPI GED
>>>>>>> sleep event is supported.
>>>>>>>
>>>>>>> Signed-off-by: Annie Li <annie.li@oracle.com>
>>>>>>> ---
>>>>>>> hw/acpi/core.c | 10 ++++++++++
>>>>>>> include/hw/acpi/acpi.h | 1 +
>>>>>>> include/hw/acpi/acpi_dev_interface.h | 1 +
>>>>>>> 3 files changed, 12 insertions(+)
>>>>>>>
>>>>>>> diff --git a/hw/acpi/core.c b/hw/acpi/core.c
>>>>>>> index 58f8964e13..00a9d226f0 100644
>>>>>>> --- a/hw/acpi/core.c
>>>>>>> +++ b/hw/acpi/core.c
>>>>>>> @@ -359,6 +359,16 @@ int acpi_get_slic_oem(AcpiSlicOem *oem)
>>>>>>> return -1;
>>>>>>> }
>>>>>>> +void acpi_send_sleep_event(void)
>>>>>>> +{
>>>>>>> + Object *obj = object_resolve_path_type("",
>>>>>>> TYPE_ACPI_DEVICE_IF,
>>>>>>> NULL);
>>>>>> Is it a fair assumption there will only ever be one QOM object that
>>>>>> provides the TYPE_ACPI_DEVICE_IF interface on a system?
>>>>>
>>>>> I supposed it was, but I might be wrong(seeing some classes have
>>>>> the same interface). Please correct me if I've missed something,
>>>>> thank you!
>>>>
>>>> /**
>>>> * object_resolve_path_type:
>>>> * @path: the path to resolve
>>>> * @typename: the type to look for.
>>>> * @ambiguous: (out) (optional): location to store whether the
>>>> * lookup failed because it was ambiguous, or %NULL.
>>>> * Set to %false on success.
>>>>
>>>> Since you use ambiguous=NULL, your code will only set %obj if there
>>>> is exactly ONE device implementing the ACPI_DEVICE interface created.
>>>>
>>>> So far IIUC nothing forbids creating multiple ones, so if you expect
>>>> only one, you should add code to handle the "2 or more" case. Or at
>>>> least add a comment.
>>> Actually, there is only one QOM object here.
>>> There are 3 classes involves with TYPE_ACPI_DEVICE_IF interface.
>>> PC, Q35, GED.
>>> For x86 system, the PC or Q35 machine doesn't use GED event, instead,
>>> it sends the GPE event.
>>> For microvm/ARM/virt system, GED device is used, its own
>>> TYPE_ACPI_DEVICE_IF
>>> is involved.
>>> All these objects do not exist at the same time, so it is safe to
>>> assume only one QOM
>>> object exists here.
>>
>> I agree this is the case as of today, but I'm not sure about tomorrow.
>> AFAICT nothing prohibit instanciating more than 1 type implementing
>> TYPE_ACPI_DEVICE_IF.
>>
>> Anyway we are just trying to be more cautious here; up to the
>> maintainer.
>
> Annie, very soon probably the GPEX device will use the
> TYPE_ACPI_DEVICE_IF as well.
> GPEX is used in Arm machines (like "virt") and due to the support for
> ACPI PCI hotplug,
> which needs to be routed through the PCIe controller's hotplug
> handlers and the ACPI pcihp
> device before the hotplug event is finally delivered to the OS via the
> GED device, it also
> will use this ACPI interface.
Thanks for the info.
>
> I can think of something when adding the ACPI PCI hotplug support on
> machine with GPEX,
> but even for future cases, could you please add at least a check for
> the ambiguity and
> assert for no ambiguity here?
Sure, will do the change similar to the following,
+bool ambiguous;
+Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF,
&ambiguous);
+assert(!ambiguous);
>
> I suspect the only case we can have an ambiguity is when we have a
> device that
> needs to do something more complex and then deliver an event via GED,
> so specifically
> here for the sleep button I think it's ok to, in case of ambiguity,
> select the GED
> device by default.
Nod
Thanks
Annie
>
>
> Cheers,
> Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 06/13] test/acpi: allow DSDT table changes for microvm
2025-04-17 17:33 ` Gustavo Romero
@ 2025-04-17 18:48 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:48 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Gustavo,
On 4/17/2025 1:33 PM, Gustavo Romero wrote:
> Annie,
>
> On 4/11/25 17:42, Annie Li wrote:
>> list changed files in tests/qtest/bios-tables-test-allowed-diff.h
>
> nit: List
Good catch, will fix it.
Annie
>
>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> tests/qtest/bios-tables-test-allowed-diff.h | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h
>> b/tests/qtest/bios-tables-test-allowed-diff.h
>> index dfb8523c8b..bb028db137 100644
>> --- a/tests/qtest/bios-tables-test-allowed-diff.h
>> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
>> @@ -1 +1,6 @@
>> /* List of comma-separated changed AML files to ignore */
>> +"tests/data/acpi/x86/microvm/DSDT",
>> +"tests/data/acpi/x86/microvm/DSDT.ioapic2",
>> +"tests/data/acpi/x86/microvm/DSDT.pcie",
>> +"tests/data/acpi/x86/microvm/DSDT.rtc",
>> +"tests/data/acpi/x86/microvm/DSDT.usb",
>
> Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
>
>
> Cheers,
> Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 07/13] microvm: support control method sleep button
2025-04-17 17:34 ` Gustavo Romero
@ 2025-04-17 18:49 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:49 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Gustavo,
On 4/17/2025 1:34 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/11/25 17:42, Annie Li wrote:
>> Add the support of control method sleep button and System
>> S3 Sleeping State for microvm.
>
> I would say "... of ACPI Control Method Sleeping Button ...¨,
> the important part being "ACPI" to make clear what's the
> context of the support. Because such a device requires
> also some plumbing in QEMU code to really be "supported".
>
> For the title, maybe smth like: "microvm: Add ACPI sleeping button
> device"
Ack
>
>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> hw/i386/acpi-microvm.c | 11 +++++++++++
>> include/hw/acpi/generic_event_device.h | 1 +
>> 2 files changed, 12 insertions(+)
>>
>> diff --git a/hw/i386/acpi-microvm.c b/hw/i386/acpi-microvm.c
>> index 279da6b4aa..57c45ea327 100644
>> --- a/hw/i386/acpi-microvm.c
>> +++ b/hw/i386/acpi-microvm.c
>> @@ -32,6 +32,7 @@
>> #include "hw/acpi/generic_event_device.h"
>> #include "hw/acpi/utils.h"
>> #include "hw/acpi/erst.h"
>> +#include "hw/acpi/control_method_device.h"
>> #include "hw/i386/fw_cfg.h"
>> #include "hw/i386/microvm.h"
>> #include "hw/pci/pci.h"
>> @@ -123,12 +124,22 @@ build_dsdt_microvm(GArray *table_data,
>> BIOSLinker *linker,
>> build_ged_aml(sb_scope, GED_DEVICE, x86ms->acpi_dev,
>> GED_MMIO_IRQ, AML_SYSTEM_MEMORY, GED_MMIO_BASE);
>> acpi_dsdt_add_power_button(sb_scope);
>> + acpi_dsdt_add_sleep_button(sb_scope);
>> acpi_dsdt_add_virtio(sb_scope, mms);
>> acpi_dsdt_add_xhci(sb_scope, mms);
>> acpi_dsdt_add_pci(sb_scope, mms);
>> aml_append(dsdt, sb_scope);
>> /* ACPI 5.0: Table 7-209 System State Package */
>
> Should this be "Table 7-205"? Or even, why not:
>
> "ACPI 6.5, Table 7.11: System State Package" ?
Agree. I should have updated the comments here also, this was kept
from the existing code. Since the ACPI spec has been updated, the
comments here should be updated also.
Thanks
Annie
>
>
> Cheers,
> Gustavo
>
>> + scope = aml_scope("\\");
>> + pkg = aml_package(4);
>> + aml_append(pkg, aml_int(ACPI_GED_SLP_TYP_S3));
>> + aml_append(pkg, aml_int(0)); /* ignored */
>> + aml_append(pkg, aml_int(0)); /* reserved */
>> + aml_append(pkg, aml_int(0)); /* reserved */
>> + aml_append(scope, aml_name_decl("_S3", pkg));
>> + aml_append(dsdt, scope);
>> +
>> scope = aml_scope("\\");
>> pkg = aml_package(4);
>> aml_append(pkg, aml_int(ACPI_GED_SLP_TYP_S5));
>> diff --git a/include/hw/acpi/generic_event_device.h
>> b/include/hw/acpi/generic_event_device.h
>> index d2dac87b4a..28c5785863 100644
>> --- a/include/hw/acpi/generic_event_device.h
>> +++ b/include/hw/acpi/generic_event_device.h
>> @@ -85,6 +85,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(AcpiGedState, ACPI_GED)
>> #define ACPI_GED_SLP_TYP_POS 0x2 /* SLP_TYPx Bit Offset */
>> #define ACPI_GED_SLP_TYP_MASK 0x07 /* SLP_TYPx 3-bit mask */
>> #define ACPI_GED_SLP_TYP_S5 0x05 /* System _S5 State (Soft
>> Off) */
>> +#define ACPI_GED_SLP_TYP_S3 0x03 /* System _S3 State
>> (Sleeping State) */
>> #define ACPI_GED_SLP_EN 0x20 /* SLP_EN write-only bit */
>> #define GED_DEVICE "GED"
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 09/13] microvm: enable sleep GED event
2025-04-17 17:35 ` Gustavo Romero
@ 2025-04-17 18:49 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:49 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Gustavo,
On 4/17/2025 1:35 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/11/25 17:43, Annie Li wrote:
>> The sleep GED event is enabled for MicroVM. Also, the system
>> suspend is enabled when the GED register is set for sleep.
>
> nit: in the commit messages, please stick with a single case
> for microvm (or MicroVM, etc).
Will fix this.
Thanks for the review.
Annie
>
>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> hw/i386/microvm.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
>> index d0a236c74f..eba33c4365 100644
>> --- a/hw/i386/microvm.c
>> +++ b/hw/i386/microvm.c
>> @@ -205,7 +205,8 @@ static void
>> microvm_devices_init(MicrovmMachineState *mms)
>> /* Optional and legacy devices */
>> if (x86_machine_is_acpi_enabled(x86ms)) {
>> DeviceState *dev = qdev_new(TYPE_ACPI_GED);
>> - qdev_prop_set_uint32(dev, "ged-event", ACPI_GED_PWR_DOWN_EVT);
>> + qdev_prop_set_uint32(dev, "ged-event",
>> + ACPI_GED_PWR_DOWN_EVT |
>> ACPI_GED_SLEEP_EVT);
>> sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal);
>> sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, GED_MMIO_BASE);
>> /* sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1,
>> GED_MMIO_BASE_MEMHP); */
>
> Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
>
>
> Cheers,
> Gustavo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 10/13] tests/qtest/bios-table-tests: Update ACPI table binaries for microvm
2025-04-17 17:36 ` Gustavo Romero
@ 2025-04-17 18:50 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:50 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel
Cc: dave, mst, imammedo, anisinha, eduardo, marcel.apfelbaum, philmd,
wangyanan55, zhao1.liu, pbonzini, richard.henderson, slp, eblake,
armbru, miguel.luis
Hi Gustavo,
On 4/17/2025 1:36 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/11/25 17:44, Annie Li wrote:
>> Following is the diff generated by the step 5 and 6 in
>> tests/qtest/bios-tables-test.c
>>
>> Diff from iasl to show changes in DSDT table:
>>
>> --- /tmp/asl-2F0N42.dsl 2025-04-11 12:50:02.892883467 +0000
>> +++ /tmp/asl-C81N42.dsl 2025-04-11 12:50:02.890883378 +0000
>> @@ -1,30 +1,30 @@
>> /*
>> * Intel ACPI Component Architecture
>> * AML/ASL+ Disassembler version 20210604 (64-bit version)
>> * Copyright (c) 2000 - 2021 Intel Corporation
>> *
>> * Disassembling to symbolic ASL+ operators
>> *
>> - * Disassembly of tests/data/acpi/x86/microvm/DSDT, Fri Apr 11
>> 12:50:02 2025
>> + * Disassembly of /tmp/aml-481N42, Fri Apr 11 12:50:02 2025
>
> Same comment from 4/13 regarding diff confusing git am and b4 and
> about the filename.
Nod, will fix it.
Thanks
Annie
>
> Otherwise:
>
> Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
>
>
> Cheers,
> Gustavo
>
>> *
>> * Original Table Header:
>> * Signature "DSDT"
>> - * Length 0x0000016D (365)
>> + * Length 0x000001BA (442)
>> * Revision 0x02
>> - * Checksum 0x11
>> + * Checksum 0xD5
>> * OEM ID "BOCHS "
>> * OEM Table ID "BXPC "
>> * OEM Revision 0x00000001 (1)
>> * Compiler ID "BXPC"
>> * Compiler Version 0x00000001 (1)
>> */
>> DefinitionBlock ("", "DSDT", 2, "BOCHS ", "BXPC ", 0x00000001)
>> {
>> Scope (_SB)
>> {
>> Device (FWCF)
>> {
>> Name (_HID, "QEMU0002") // _HID: Hardware ID
>> Name (_STA, 0x0B) // _STA: Status
>> Name (_CRS, ResourceTemplate () // _CRS: Current
>> Resource Settings
>> {
>> @@ -66,56 +66,82 @@
>> 0x00000009,
>> }
>> })
>> OperationRegion (EREG, SystemMemory, 0xFEA00000, 0x04)
>> Field (EREG, DWordAcc, NoLock, WriteAsZeros)
>> {
>> ESEL, 32
>> }
>>
>> Method (_EVT, 1, Serialized) // _EVT: Event
>> {
>> Local0 = ESEL /* \_SB_.GED_.ESEL */
>> If (((Local0 & 0x02) == 0x02))
>> {
>> Notify (PWRB, 0x80) // Status Change
>> }
>> +
>> + If (((Local0 & 0x10) == 0x10))
>> + {
>> + Notify (SLPB, 0x80) // Status Change
>> + }
>> }
>> }
>>
>> Device (PWRB)
>> {
>> Name (_HID, "PNP0C0C" /* Power Button Device */) //
>> _HID: Hardware ID
>> Name (_UID, Zero) // _UID: Unique ID
>> }
>>
>> + Device (SLPB)
>> + {
>> + Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device
>> */) // _HID: Hardware ID
>> + OperationRegion (\SLP, SystemIO, 0x0201, One)
>> + Field (\SLP, ByteAcc, NoLock, WriteAsZeros)
>> + {
>> + SBP, 1
>> + }
>> + }
>> +
>> Device (VR07)
>> {
>> Name (_HID, "LNRO0005") // _HID: Hardware ID
>> Name (_UID, 0x07) // _UID: Unique ID
>> Name (_CCA, One) // _CCA: Cache Coherency Attribute
>> Name (_CRS, ResourceTemplate () // _CRS: Current
>> Resource Settings
>> {
>> Memory32Fixed (ReadWrite,
>> 0xFEB00E00, // Address Base
>> 0x00000200, // Address Length
>> )
>> Interrupt (ResourceConsumer, Level, ActiveHigh,
>> Exclusive, ,, )
>> {
>> 0x00000017,
>> }
>> })
>> }
>> }
>>
>> Scope (\)
>> {
>> + Name (_S3, Package (0x04) // _S3_: S3 System State
>> + {
>> + 0x03,
>> + Zero,
>> + Zero,
>> + Zero
>> + })
>> + }
>> +
>> + Scope (\)
>> + {
>> Name (_S5, Package (0x04) // _S5_: S5 System State
>> {
>> 0x05,
>> Zero,
>> Zero,
>> Zero
>> })
>> }
>> }
>>
>> Signed-off-by: Annie Li <annie.li@oracle.com>
>> ---
>> tests/data/acpi/x86/microvm/DSDT | Bin 365 -> 442 bytes
>> tests/data/acpi/x86/microvm/DSDT.ioapic2 | Bin 365 -> 442 bytes
>> tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 3100 bytes
>> tests/data/acpi/x86/microvm/DSDT.rtc | Bin 404 -> 481 bytes
>> tests/data/acpi/x86/microvm/DSDT.usb | Bin 414 -> 491 bytes
>> tests/qtest/bios-tables-test-allowed-diff.h | 5 -----
>> 6 files changed, 5 deletions(-)
>>
>> diff --git a/tests/data/acpi/x86/microvm/DSDT
>> b/tests/data/acpi/x86/microvm/DSDT
>> index
>> f477668f2ee80241e47b340ad4a30f5480df2049..ee199a4fb65ab1a2d811f37d9b5bc67bccd34939
>> 100644
>> GIT binary patch
>> delta 127
>> zcmaFMw2PU`CD<io7b61$)76Pw(oD|c6V<breAy>X_GQ$Y_)vy#fxzVI1TFyvE`hdS
>> zpMZ(K6f`w~v=c|Xho=jV;{_hR=!O`eKs+NiBNJnEBM+G480-WTnJmHREo~ex#LmLS
>> V%)r1PAP~dA5g%*{7GMPm005{09v1)r
>>
>> delta 54
>> zcmdnR{FaH!CD<h-myv;iNpK>UG?TmVMD;8tAGV2;eHmpZK9rfv$0$2FjM0<JG+v0E
>> Kg^QJefdK$+3k%2q
>>
>> diff --git a/tests/data/acpi/x86/microvm/DSDT.ioapic2
>> b/tests/data/acpi/x86/microvm/DSDT.ioapic2
>> index
>> e5924a49962e0cff4228bcfc77ebcf48cb4a2219..7512d1527cf222d6f75a92f051f9eda402e28376
>> 100644
>> GIT binary patch
>> delta 127
>> zcmaFMw2PU`CD<io7b61$Q~yLRX(ng!iRxKQzU&hx`!ecHd?>@WKwxrp0+#>-mq1&v
>> zPr$@q3YwZg+KD6H!_$Sw@d6KDbVCeKAfAz%k%=+7kq69i40ZyFOqO8umNt$TVrSuE
>> UW?*0t5Qt&mhz~Xe3$OwO0ErwO(EtDd
>>
>> delta 54
>> zcmdnR{FaH!CD<h-myv;i>GVV{X(o5!iRxKQK5P>w`!dQ-d?+)Sk5P7V7^5ebX}l0S
>> K3l}Q`0|Nky8w`Q~
>>
>> diff --git a/tests/data/acpi/x86/microvm/DSDT.pcie
>> b/tests/data/acpi/x86/microvm/DSDT.pcie
>> index
>> 8eacd21d6ecdf9a3cd3e4f03cf1b40748dcbf53e..5e3f80cbf82cab52fe310160c88d0a11ff069bf5
>> 100644
>> GIT binary patch
>> delta 128
>> zcmX>vK1YJfCD<iIhKGTHiDM#{G?VMziRxKQzU&hx`!ecHd?>@WKwxrp0+#>-mq1&v
>> zPr$@q3YwZg+KD6H!_$Sw@d6KDbVCeKAfAz%k%=+7kq69i40ZyFY?feL%O!0bFT~Em
>> W#mvCKARrLKz!4v83Kn1m3IG6dDjnGX
>>
>> delta 55
>> zcmbOuabBFuCD<k8JU0Ualj}q-X(rE|6V<breAp&V_GOfv_)umtAEWH%FvitfT&D3t
>> L>?~ZY3=9kauQ3gZ
>>
>> diff --git a/tests/data/acpi/x86/microvm/DSDT.rtc
>> b/tests/data/acpi/x86/microvm/DSDT.rtc
>> index
>> e375473b5f033d374dd2a64a9f814fd16c3e262f..11258908703b64a835bd14307490c62c5ef7301f
>> 100644
>> GIT binary patch
>> delta 129
>> zcmbQj{E(T;CD<k8AtM6=)8dI-(o9~G6V)d&`La*k<;$oynS)V=Z-Kz%>I5zU1}=fN
>> zV4r}=ii`@Hnm~pVN4$rp3y<Rk9=_;?7@$BrBR3-xV{{`AnBy4i1QeNU&*&{}952Mq
>> X!o|$Mz#t$H!@v<AYzh`&1quKFJNg{0
>>
>> delta 79
>> zcmaFJJcXIdCD<io3L^sp)BTBD(oBA$6V)d&`LIpg<;y5LnS)VAI=V?RAUw#4Bi_T)
>> jg*U)2z`)tSnSmod)YFAway6qjmub8ZI|~;p0|Ns9En5;N
>>
>> diff --git a/tests/data/acpi/x86/microvm/DSDT.usb
>> b/tests/data/acpi/x86/microvm/DSDT.usb
>> index
>> d63fd84620a2689120b32262f964e6a098d71632..7250d9f8ad45fca91afeda1089090eee11cd6594
>> 100644
>> GIT binary patch
>> delta 127
>> zcmbQo{F<4|CD<k8H6sH9)6<Du(o8N=6V<breAy>X_GQ$Y_)vy#fxzVI1TFyvE`hdS
>> zpMZ(K6f`w~v=c|Xho=jV;{_hR=!O`eKs+NiBNJnEBM+G480-WTnJmFrBW)Zn#LmLS
>> V%)r1PAP~dA5g%*{7GMPm006!m9&i8v
>>
>> delta 54
>> zcmaFOJdc^nCD<io9wP$-lj1}!X(kV`iRxKQK5P>w`!dQ-d?+)Sk5P7V7-JQeX}l0S
>> K3l}Q`0|NkddJG`|
>>
>> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h
>> b/tests/qtest/bios-tables-test-allowed-diff.h
>> index bb028db137..dfb8523c8b 100644
>> --- a/tests/qtest/bios-tables-test-allowed-diff.h
>> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
>> @@ -1,6 +1 @@
>> /* List of comma-separated changed AML files to ignore */
>> -"tests/data/acpi/x86/microvm/DSDT",
>> -"tests/data/acpi/x86/microvm/DSDT.ioapic2",
>> -"tests/data/acpi/x86/microvm/DSDT.pcie",
>> -"tests/data/acpi/x86/microvm/DSDT.rtc",
>> -"tests/data/acpi/x86/microvm/DSDT.usb",
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep
2025-04-17 17:37 ` Gustavo Romero
@ 2025-04-17 18:51 ` Annie Li
0 siblings, 0 replies; 46+ messages in thread
From: Annie Li @ 2025-04-17 18:51 UTC (permalink / raw)
To: Gustavo Romero, Markus Armbruster
Cc: qemu-devel, dave, mst, imammedo, anisinha, eduardo,
marcel.apfelbaum, philmd, wangyanan55, zhao1.liu, pbonzini,
richard.henderson, slp, eblake, miguel.luis
Hi Gustavo,
On 4/17/2025 1:37 PM, Gustavo Romero wrote:
> Hi Annie,
>
> On 4/14/25 11:14, Annie Li wrote:
>>
>> On 4/14/2025 2:31 AM, Markus Armbruster wrote:
>>> Annie Li <annie.li@oracle.com> writes:
>>>
>>>> Followng hmp/qmp commands are implemented for pressing virtual
>>>> sleep button,
>
> nit: Following
Oops! will fix it.
Thanks for the catch.
Annie
>
>
> Cheers,
> Gustavo
>
>>>> hmp: system_sleep
>>>> qmp: { "execute": "system_sleep" }
>>>>
>>>> These commands put the guest into suspend or other power states
>>>> depending on the power settings inside the guest.
>>>>
>>>> These hmp/qmp command are in '*_*' format, it is intended to do
>>>> so to align to existing 'system_*' commands.
>>>>
>>>> Signed-off-by: Annie Li <annie.li@oracle.com>
>>> [...]
>>>
>>>> diff --git a/qapi/machine.json b/qapi/machine.json
>>>> index a6b8795b09..0965e78f4e 100644
>>>> --- a/qapi/machine.json
>>>> +++ b/qapi/machine.json
>>>> @@ -361,6 +361,26 @@
>>>> ##
>>>> { 'command': 'system_reset' }
>>>> +##
>>>> +# @system_sleep:
>>>> +#
>>>> +# Requests that the guest perform a ACPI sleep transition by pushing
>>>> +# the virtual sleep button.
>>>> +#
>>>> +# Since:10.0
>>>> +#
>>>> +# .. note:: A guest may or may not respond to this command. This
>>> Two spaces between sentences for consistency, please.
>>
>> Didn't notice this, thanks for pointing it out.
>>
>> Will fix it.
>>
>> Thanks
>>
>> Annie
>>
>>>
>>>> +# command returning does not indicate that a guest has
>>>> +# accepted the request or that it has gone to sleep.
>>>> +#
>>>> +# .. qmp-example::
>>>> +#
>>>> +# -> { "execute": "system_sleep" }
>>>> +# <- { "return": {} }
>>>> +#
>>>> +##
>>>> +{ 'command': 'system_sleep' }
>>>> +
>>>> ##
>>>> # @system_powerdown:
>>>> #
>>>> diff --git a/qapi/pragma.json b/qapi/pragma.json
>>>> index 023a2ef7bc..285ce82e9b 100644
>>>> --- a/qapi/pragma.json
>>>> +++ b/qapi/pragma.json
>>>> @@ -23,6 +23,7 @@
>>>> 'set_password',
>>>> 'system_powerdown',
>>>> 'system_reset',
>>>> + 'system_sleep',
>>> Additions here are always sad, but inconsistency with the other
>>> system_FOO commands would be worse.
>>>
>>>> 'system_wakeup' ],
>>>> # Commands allowed to return a non-dictionary
>>>> 'command-returns-exceptions': [
>>> With the spacing nit touched up:
>>> Acked-by: Markus Armbruster <armbru@redhat.com>
>>>
>>
>
^ permalink raw reply [flat|nested] 46+ messages in thread
end of thread, other threads:[~2025-04-17 18:52 UTC | newest]
Thread overview: 46+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-11 20:19 [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button Annie Li
2025-04-11 20:28 ` [RFC V3 PATCH 01/13] acpi: Implement control method sleep button Annie Li
2025-04-17 17:28 ` Gustavo Romero
2025-04-17 18:40 ` Annie Li
2025-04-11 20:31 ` [RFC V3 PATCH 02/13] test/acpi: allow DSDT table changes for x86 platform Annie Li
2025-04-17 17:29 ` Gustavo Romero
2025-04-17 18:42 ` Annie Li
2025-04-11 20:34 ` [RFC V3 PATCH 03/13] acpi: Support Control Method sleep button for x86 Annie Li
2025-04-17 17:30 ` Gustavo Romero
2025-04-17 18:42 ` Annie Li
2025-04-11 20:39 ` [RFC V3 PATCH 04/13] tests/qtest/bios-table-tests: Update ACPI table binaries " Annie Li
2025-04-17 17:31 ` Gustavo Romero
2025-04-17 18:44 ` Annie Li
2025-04-11 20:41 ` [RFC V3 PATCH 05/13] acpi: Send the GPE event of suspend and wakeup " Annie Li
2025-04-14 15:18 ` Alex Bennée
2025-04-15 1:24 ` Annie Li
2025-04-15 15:29 ` Philippe Mathieu-Daudé
2025-04-15 21:48 ` Annie Li
2025-04-16 6:24 ` Philippe Mathieu-Daudé
2025-04-17 17:32 ` Gustavo Romero
2025-04-17 18:48 ` Annie Li
2025-04-17 17:40 ` Gustavo Romero
2025-04-17 18:46 ` Annie Li
2025-04-11 20:42 ` [RFC V3 PATCH 06/13] test/acpi: allow DSDT table changes for microvm Annie Li
2025-04-17 17:33 ` Gustavo Romero
2025-04-17 18:48 ` Annie Li
2025-04-11 20:42 ` [RFC V3 PATCH 07/13] microvm: support control method sleep button Annie Li
2025-04-17 17:34 ` Gustavo Romero
2025-04-17 18:49 ` Annie Li
2025-04-11 20:42 ` [RFC V3 PATCH 08/13] hw/acpi: Add ACPI GED support for the sleep event Annie Li
2025-04-17 17:35 ` Gustavo Romero
2025-04-11 20:43 ` [RFC V3 PATCH 09/13] microvm: enable sleep GED event Annie Li
2025-04-17 17:35 ` Gustavo Romero
2025-04-17 18:49 ` Annie Li
2025-04-11 20:44 ` [RFC V3 PATCH 10/13] tests/qtest/bios-table-tests: Update ACPI table binaries for microvm Annie Li
2025-04-17 17:36 ` Gustavo Romero
2025-04-17 18:50 ` Annie Li
2025-04-11 20:44 ` [RFC V3 PATCH 11/13] microvm: suspend the system as requested Annie Li
2025-04-17 17:37 ` Gustavo Romero
2025-04-11 20:44 ` [RFC V3 PATCH 12/13] microvm: enable suspend Annie Li
2025-04-17 17:37 ` Gustavo Romero
2025-04-11 20:45 ` [RFC V3 PATCH 13/13] acpi: hmp/qmp: Add hmp/qmp support for system_sleep Annie Li
2025-04-14 6:31 ` Markus Armbruster
2025-04-14 14:14 ` Annie Li
2025-04-17 17:37 ` Gustavo Romero
2025-04-17 18:51 ` Annie Li
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).