[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240312135958.727765-1-dwmw2@infradead.org>
Date: Tue, 12 Mar 2024 13:51:27 +0000
From: David Woodhouse <dwmw2@...radead.org>
To: linux-arm-kernel@...ts.infradead.org,
kvm@...r.kernel.org
Cc: Paolo Bonzini <pbonzini@...hat.com>,
Jonathan Corbet <corbet@....net>,
Marc Zyngier <maz@...nel.org>,
Oliver Upton <oliver.upton@...ux.dev>,
James Morse <james.morse@....com>,
Suzuki K Poulose <suzuki.poulose@....com>,
Zenghui Yu <yuzenghui@...wei.com>,
Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Lorenzo Pieralisi <lpieralisi@...nel.org>,
"Rafael J. Wysocki" <rafael@...nel.org>,
Len Brown <len.brown@...el.com>,
Pavel Machek <pavel@....cz>,
David Woodhouse <dwmw@...zon.co.uk>,
Mostafa Saleh <smostafa@...gle.com>,
Jean-Philippe Brucker <jean-philippe@...aro.org>,
linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org,
kvmarm@...ts.linux.dev,
linux-pm@...r.kernel.org
Subject: [RFC PATCH 0/2] Add PSCI v1.3 SYSTEM_OFF2 support for hibernation
The upcoming 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 adds support for it to KVM, and to the guest hibernate code.
Strictly, we should perhaps also allow the guest to detect PSCI v1.3,
but when v1.1 was added in commit 512865d83fd9 it was done
unconditionally, which seems wrong. Shouldn't we have a way for
userspace to control what gets exposed, rather than silently changing
the guest behaviour with newer host kernels? Should I add a
KVM_CAP_ARM_PSCI_VERSION?
For the guest side, this adds a new SYS_OFF_MODE_POWER_OFF with higher
priority than the EFI one, but which *only* triggers when there's a
hibernation in progress. That seemed like the simplest option, but see
the commit message for alternative possilities. I told Rafael I'd post a
straw man for bikeshedding, and here it is.
Documentation/virt/kvm/api.rst | 11 +++++++++++
arch/arm64/include/asm/kvm_host.h | 2 ++
arch/arm64/include/uapi/asm/kvm.h | 6 ++++++
arch/arm64/kvm/arm.c | 5 +++++
arch/arm64/kvm/hyp/nvhe/psci-relay.c | 2 ++
arch/arm64/kvm/psci.c | 37 ++++++++++++++++++++++++++++++++++++
drivers/firmware/psci/psci.c | 35 ++++++++++++++++++++++++++++++++++
include/uapi/linux/kvm.h | 1 +
include/uapi/linux/psci.h | 5 +++++
kernel/power/hibernate.c | 5 ++++-
10 files changed, 108 insertions(+), 1 deletion(-)
Powered by blists - more mailing lists