qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC V2 PATCH 00/11] Support ACPI Control Method Sleep button


From: Igor Mammedov
Subject: Re: [RFC V2 PATCH 00/11] Support ACPI Control Method Sleep button
Date: Mon, 7 Oct 2024 15:41:50 +0200

On Fri, 27 Sep 2024 14:38:55 -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 ARM platform.(The patch set was posted previously here 3). We
> rebase all the patches on QEMU9.1.0 and re-post it).
> 
> 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,
> the sleep button works as expected.
> 
> For ARM, a GED event is triggered to notify the OSPM. With proper
> debug knobs it is possible to see the guest OSPM acknowledges the
> sleep event:

Series also missed 'microvm', that uses GED
(it's likely the same amount of work as for arm/virt board)

also test all boards you are touching, to make sure you
didn't break them.

Note: commit messages should be more verbose explaining why and what
patches are doing.

PS:
Also keep  changelog in cover letter, for a short list of changes
between series revisions,
see '[PATCH v3 0/1] hw/nvme: add atomic write support' for an example

> 
> (qemu) system_sleep
> (qemu) [6.744138] exregion-0179 ex_system_memory_space: System-Memory (width 
> 32) R/W 0 Address=0000000009080000
> [6.746003] evmisc-0132 ev_queue_notify_reques: Dispatching Notify on [SLPB] 
> (Device) Value 0x80 (Status Change) Node 00000000f0e6819e
> [6.802873] PM: suspend entry (s2idle)
> [6.806201] Filesystems sync: 0.002 seconds
> [6.807580] Freezing user space processes
> [6.809478] Freezing user space processes completed (elapsed 0.001 seconds)
> [6.810602] OOM killer disabled.
> [6.811111] Freezing remaining freezable tasks
> [6.812953] Freezing remaining freezable tasks completed (elapsed 0.001 
> seconds)
> [6.814126] printk: Suspending console(s) (use no_console_suspend to debug)
> 
> But that seems to be all, depicting that sleep/wakeup for ARM is broken
> and there are still missing some pieces of the puzzle.
> 
> Nonetheless, we would like to take this RFC as an opportunity for updates
> on this subject as possible roadmaps.
> 
> 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/
> 
> 
> Annie Li (6):
>   acpi: hmp/qmp: Add hmp/qmp support for system_sleep
>   acpi: Implement control method sleep button
>   test/acpi: allow DSDT table changes
>   acpi: Support Control Method sleep button for x86
>   tests/acpi: Update DSDT tables for Control method sleep button
>   acpi: Send the GPE event of suspend and wakeup for x86
> 
> Miguel Luis (5):
>   hw/acpi: Add ACPI GED support for the sleep event
>   tests/acpi: allow FACP and DSDT table changes for arm/virt
>   hw/arm: enable sleep support for arm/virt
>   tests/acpi: Update FACP and DSDT tables for sleep button
>   arm/virt: enable sleep support
> 
>  hmp-commands.hx                               |  14 +++++
>  hw/acpi/control_method_device.c               |  54 ++++++++++++++++++
>  hw/acpi/core.c                                |  17 ++++--
>  hw/acpi/generic_event_device.c                |   9 +++
>  hw/acpi/meson.build                           |   1 +
>  hw/arm/virt-acpi-build.c                      |  13 +++++
>  hw/arm/virt.c                                 |  14 ++++-
>  hw/core/machine-hmp-cmds.c                    |   5 ++
>  hw/core/machine-qmp-cmds.c                    |  11 ++++
>  hw/i386/acpi-build.c                          |   9 +++
>  include/hw/acpi/acpi.h                        |   1 +
>  include/hw/acpi/acpi_dev_interface.h          |   1 +
>  include/hw/acpi/control_method_device.h       |  25 ++++++++
>  include/hw/acpi/generic_event_device.h        |   1 +
>  include/hw/arm/virt.h                         |   1 +
>  include/monitor/hmp.h                         |   1 +
>  qapi/machine.json                             |  18 ++++++
>  qapi/pragma.json                              |   1 +
>  tests/data/acpi/aarch64/virt/DSDT             | Bin 5196 -> 5278 bytes
>  .../data/acpi/aarch64/virt/DSDT.acpihmatvirt  | Bin 5282 -> 5364 bytes
>  tests/data/acpi/aarch64/virt/DSDT.memhp       | Bin 6557 -> 6639 bytes
>  tests/data/acpi/aarch64/virt/DSDT.pxb         | Bin 7679 -> 7761 bytes
>  tests/data/acpi/aarch64/virt/DSDT.topology    | Bin 5398 -> 5480 bytes
>  tests/data/acpi/aarch64/virt/FACP             | Bin 276 -> 276 bytes
>  tests/data/acpi/x86/pc/DSDT                   | Bin 6830 -> 7012 bytes
>  tests/data/acpi/x86/pc/DSDT.acpierst          | Bin 6741 -> 6923 bytes
>  tests/data/acpi/x86/pc/DSDT.acpihmat          | Bin 8155 -> 8337 bytes
>  tests/data/acpi/x86/pc/DSDT.bridge            | Bin 13701 -> 13883 bytes
>  tests/data/acpi/x86/pc/DSDT.cphp              | Bin 7294 -> 7476 bytes
>  tests/data/acpi/x86/pc/DSDT.dimmpxm           | Bin 8484 -> 8666 bytes
>  tests/data/acpi/x86/pc/DSDT.hpbridge          | Bin 6781 -> 6963 bytes
>  tests/data/acpi/x86/pc/DSDT.hpbrroot          | Bin 3337 -> 3519 bytes
>  tests/data/acpi/x86/pc/DSDT.ipmikcs           | Bin 6902 -> 7084 bytes
>  tests/data/acpi/x86/pc/DSDT.memhp             | Bin 8189 -> 8371 bytes
>  tests/data/acpi/x86/pc/DSDT.nohpet            | Bin 6688 -> 6870 bytes
>  tests/data/acpi/x86/pc/DSDT.numamem           | Bin 6836 -> 7018 bytes
>  tests/data/acpi/x86/pc/DSDT.roothp            | Bin 10623 -> 10805 bytes
>  tests/data/acpi/x86/q35/DSDT                  | Bin 8355 -> 8537 bytes
>  tests/data/acpi/x86/q35/DSDT.acpierst         | Bin 8372 -> 8554 bytes
>  tests/data/acpi/x86/q35/DSDT.acpihmat         | Bin 9680 -> 9862 bytes
>  .../acpi/x86/q35/DSDT.acpihmat-noinitiator    | Bin 8634 -> 8816 bytes
>  tests/data/acpi/x86/q35/DSDT.applesmc         | Bin 8401 -> 8583 bytes
>  tests/data/acpi/x86/q35/DSDT.bridge           | Bin 11968 -> 12150 bytes
>  tests/data/acpi/x86/q35/DSDT.core-count       | Bin 12913 -> 13095 bytes
>  tests/data/acpi/x86/q35/DSDT.core-count2      | Bin 33770 -> 33952 bytes
>  tests/data/acpi/x86/q35/DSDT.cphp             | Bin 8819 -> 9001 bytes
>  tests/data/acpi/x86/q35/DSDT.cxl              | Bin 9714 -> 9896 bytes
>  tests/data/acpi/x86/q35/DSDT.dimmpxm          | Bin 10009 -> 10191 bytes
>  tests/data/acpi/x86/q35/DSDT.ipmibt           | Bin 8430 -> 8612 bytes
>  tests/data/acpi/x86/q35/DSDT.ipmismbus        | Bin 8443 -> 8625 bytes
>  tests/data/acpi/x86/q35/DSDT.ivrs             | Bin 8372 -> 8554 bytes
>  tests/data/acpi/x86/q35/DSDT.memhp            | Bin 9714 -> 9896 bytes
>  tests/data/acpi/x86/q35/DSDT.mmio64           | Bin 9485 -> 9667 bytes
>  tests/data/acpi/x86/q35/DSDT.multi-bridge     | Bin 13208 -> 13390 bytes
>  tests/data/acpi/x86/q35/DSDT.noacpihp         | Bin 8235 -> 8417 bytes
>  tests/data/acpi/x86/q35/DSDT.nohpet           | Bin 8213 -> 8395 bytes
>  tests/data/acpi/x86/q35/DSDT.numamem          | Bin 8361 -> 8543 bytes
>  tests/data/acpi/x86/q35/DSDT.pvpanic-isa      | Bin 8456 -> 8638 bytes
>  tests/data/acpi/x86/q35/DSDT.thread-count     | Bin 12913 -> 13095 bytes
>  tests/data/acpi/x86/q35/DSDT.thread-count2    | Bin 33770 -> 33952 bytes
>  tests/data/acpi/x86/q35/DSDT.tis.tpm12        | Bin 8961 -> 9143 bytes
>  tests/data/acpi/x86/q35/DSDT.tis.tpm2         | Bin 8987 -> 9169 bytes
>  tests/data/acpi/x86/q35/DSDT.type4-count      | Bin 18589 -> 18771 bytes
>  tests/data/acpi/x86/q35/DSDT.viot             | Bin 9464 -> 9646 bytes
>  tests/data/acpi/x86/q35/DSDT.xapic            | Bin 35718 -> 35900 bytes
>  65 files changed, 191 insertions(+), 5 deletions(-)
>  create mode 100644 hw/acpi/control_method_device.c
>  create mode 100644 include/hw/acpi/control_method_device.h
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]