KVM: arm64: Add PSCI v1.3 SYSTEM_OFF2 function for hibernation
authorDavid Woodhouse <dwmw@amazon.co.uk>
Sat, 19 Oct 2024 17:15:43 +0000 (18:15 +0100)
committerOliver Upton <oliver.upton@linux.dev>
Thu, 24 Oct 2024 23:36:51 +0000 (16:36 -0700)
commit97413cea1c48cc05d33db442d1c41d71c56c730e
tree3d02f280a45cab5922f3cadbb1144a3d95280bdf
parent2f2d46959808e9b039ecb241ff13d50be2d6e231
KVM: arm64: Add PSCI v1.3 SYSTEM_OFF2 function for hibernation

The PSCI v1.3 specification adds support for a SYSTEM_OFF2 function
which is analogous to ACPI S4 state. This will allow hosting
environments to determine that a guest is hibernated rather than just
powered off, and ensure that they preserve the virtual environment
appropriately to allow the guest to resume safely (or bump the
hardware_signature in the FACS to trigger a clean reboot instead).

This feature is safe to enable unconditionally (in a subsequent commit)
because it is exposed to userspace through the existing
KVM_SYSTEM_EVENT_SHUTDOWN event, just with an additional flag which
userspace can use to know that the instance intended hibernation instead
of a plain power-off.

As with SYSTEM_RESET2, there is only one type available (in this case
HIBERNATE_OFF), and it is not explicitly reported to userspace through
the event; userspace can get it from the registers if it cares).

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Miguel Luis <miguel.luis@oracle.com>
Link: https://lore.kernel.org/r/20241019172459.2241939-3-dwmw2@infradead.org
[oliver: slight cleanup of comments]
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
Documentation/virt/kvm/api.rst
arch/arm64/include/uapi/asm/kvm.h
arch/arm64/kvm/psci.c