From: Annie Li <annie.li@oracle.com>
To: qemu-devel@nongnu.org
Cc: dave@treblig.org, mst@redhat.com, imammedo@redhat.com,
anisinha@redhat.com, eduardo@habkost.net,
marcel.apfelbaum@gmail.com, philmd@linaro.org,
wangyanan55@huawei.com, zhao1.liu@intel.com, pbonzini@redhat.com,
richard.henderson@linaro.org, slp@redhat.com, eblake@redhat.com,
armbru@redhat.com, annie.li@oracle.com, miguel.luis@oracle.com
Subject: [RFC V3 PATCH 00/13] Support ACPI Control Method Sleep button
Date: Fri, 11 Apr 2025 16:19:12 -0400 [thread overview]
Message-ID: <20250411201912.2872-1-annie.li@oracle.com> (raw)
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
next reply other threads:[~2025-04-11 20:20 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-11 20:19 Annie Li [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250411201912.2872-1-annie.li@oracle.com \
--to=annie.li@oracle.com \
--cc=anisinha@redhat.com \
--cc=armbru@redhat.com \
--cc=dave@treblig.org \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=miguel.luis@oracle.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=slp@redhat.com \
--cc=wangyanan55@huawei.com \
--cc=zhao1.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).