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...@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"