Hi Igor,
On 6/3/2025 8:18 AM, Igor Mammedov wrote:
> On Wed, 28 May 2025 12:35:45 -0400
> Annie Li <annie.li@oracle.com> wrote:
>
>> 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 RFC V1 patch set was posted previously here 3). We
>> rebase all the patches on QEMU9.1.0 and re-post RFC V2 here 4). The
>> RFC V3 patch is based on QEMU 10.0.0-rc3 at 5). This patch set here
>> is rebased on QEMU 10.0.1. 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.
> here we probably need a pointer to these efforts, or some kind of description
> about what's wrong with ARM/firmare
will add more details.
>
>> 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, as mentioned earlier, the
>> implementation for ARM platform has been removed since RFC V3 patch
>> set. Tests have been run 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.
> ditto (aka what's wrong with wakeup)
See the details in patch 12.
Thanks
Annie
>
>> 1) https://urldefense.com/v3/__https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg06478.html__;!!ACWV5N9M2RV99hQ!NOUIn6Z6j3yl9_QWhIIz2b2X6I8pLEHf1biRwOvcRv2_K6VTcVq2KGJmuUE7rcF1VuVjTtLPBvCHid0$
>> 2) https://urldefense.com/v3/__https://lore.kernel.org/all/20210920095316.2dd133be@redhat.com/T/*mfe24f89778020deeacfe45083f3eea3cf9f55961__;Iw!!ACWV5N9M2RV99hQ!NOUIn6Z6j3yl9_QWhIIz2b2X6I8pLEHf1biRwOvcRv2_K6VTcVq2KGJmuUE7rcF1VuVjTtLP4wjsOfs$
>> 3) https://urldefense.com/v3/__https://lore.kernel.org/all/20231205002143.562-1-annie.li@oracle.com/T/__;!!ACWV5N9M2RV99hQ!NOUIn6Z6j3yl9_QWhIIz2b2X6I8pLEHf1biRwOvcRv2_K6VTcVq2KGJmuUE7rcF1VuVjTtLPVmyXvjo$
>> 4) https://urldefense.com/v3/__https://patchwork.kernel.org/project/qemu-devel/cover/20240927183906.1248-1-annie.li@oracle.com/__;!!ACWV5N9M2RV99hQ!NOUIn6Z6j3yl9_QWhIIz2b2X6I8pLEHf1biRwOvcRv2_K6VTcVq2KGJmuUE7rcF1VuVjTtLPuuktbj8$
>> 5) https://urldefense.com/v3/__https://lore.kernel.org/all/20250411201912.2872-1-annie.li@oracle.com/__;!!ACWV5N9M2RV99hQ!NOUIn6Z6j3yl9_QWhIIz2b2X6I8pLEHf1biRwOvcRv2_K6VTcVq2KGJmuUE7rcF1VuVjTtLP7brAOZg$
>>
>> ----Changes from RFC V3----
>> Improve source code and comment based on comments on RFC V3
>> ---------------------------
>>
>> 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 sleep for x86
>> test/acpi: allow DSDT table changes for microvm
>> microvm: Add ACPI 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 | 38 ++++++++++++++++++
>> hw/acpi/core.c | 12 ++++++
>> 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 | 24 ++++++++++-
>> hw/i386/acpi-microvm.c | 13 +++++-
>> 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, 178 insertions(+), 3 deletions(-)
>> create mode 100644 hw/acpi/control_method_device.c
>> create mode 100644 include/hw/acpi/control_method_device.h
>>