Marc, On Thu, Aug 19, 2021 at 3:36 PM Oliver Upton <oupton@xxxxxxxxxx> wrote: > > Certain VMMs/operators may wish to give their guests the ability to > initiate a system suspend that could result in the VM being saved to > persistent storage to be resumed at a later time. The PSCI v1.0 > specification describes an SMC, SYSTEM_SUSPEND, that allows a kernel to > request a system suspend. This call is optional for v1.0, and KVM > elected to not support the call in its v1.0 implementation. > > This series adds support for the SYSTEM_SUSPEND PSCI call to KVM/arm64. > Since this is a system-scoped event, KVM cannot quiesce the VM on its > own. We add a new system exit type in this series to clue in userspace > that a suspend was requested. Per the KVM_EXIT_SYSTEM_EVENT ABI, a VMM > that doesn't care about this event can simply resume the guest without > issue (we set up the calling vCPU to come out of reset correctly on next > KVM_RUN). > > Patch 1 is unrelated, and is a fix for "KVM: arm64: Enforce reserved > bits for PSCI target affinities" on the kvmarm/next branch. Nothing > particularly hairy, just an unused param. Title line may not have been clear on this series, Patch 1 is a fix for the PSCI CPU_ON series that's in kvmarm/next to suppress a compiler warning. > Patch 2 simplifies the function to check if KVM allows a particular PSCI > function. We can generally disallow any PSCI function that sets the > SMC64 bit in the PSCI function ID. > > Patch 3 wraps up the PSCI reset logic used for CPU_ON, which will be > needed later to queue up a reset on the vCPU that requested the system > suspend. > > Patch 4 brings in the new UAPI and PSCI call, guarded behind a VM > capability for backwards compatibility. > > Patch 5 is indirectly related to this series, and avoids compiler > reordering on PSCI calls in the selftest introduced by "selftests: KVM: > Introduce psci_cpu_on_test". This too is a fix for the PSCI CPU_ON series. Just wanted to raise it to your attention beyond the new feature I'm working on here. -- Thanks, Oliver > Finally, patch 6 extends the PSCI selftest to verify the > SYSTEM_SUSPEND PSCI call behaves as intended. > > These patches apply cleanly to kvmarm/next at the following commit: > > f2267b87ecd5 ("Merge branch kvm-arm64/misc-5.15 into kvmarm-master/next") > > The series is intentionally based on kvmarm/next for the sake of fixing > patches only present there in [1/6] and [5/6]. Tested on QEMU (ick) > since my Mt. Jade box is out to lunch at the moment and for some unknown > reason the toolchain on my work computer doesn't play nice with the FVP. > > Oliver Upton (6): > KVM: arm64: Drop unused vcpu param to kvm_psci_valid_affinity() > KVM: arm64: Clean up SMC64 PSCI filtering for AArch32 guests > KVM: arm64: Encapsulate reset request logic in a helper function > KVM: arm64: Add support for SYSTEM_SUSPEND PSCI call > selftests: KVM: Promote PSCI hypercalls to asm volatile > selftests: KVM: Test SYSTEM_SUSPEND PSCI call > > arch/arm64/include/asm/kvm_host.h | 3 + > arch/arm64/kvm/arm.c | 5 + > arch/arm64/kvm/psci.c | 134 +++++++++++++----- > include/uapi/linux/kvm.h | 2 + > .../selftests/kvm/aarch64/psci_cpu_on_test.c | 126 +++++++++++----- > 5 files changed, 202 insertions(+), 68 deletions(-) > > -- > 2.33.0.rc2.250.ged5fa647cd-goog >