KVM: arm64: Pass PSCI calls to userspace
When the KVM_CAP_ARM_PSCI_TO_USER capability is available, userspace can request to handle PSCI calls. This is required for virtual CPU hotplug to allow the VMM to enforce the online/offline policy it has advertised via ACPI. By managing PSCI in user-space, the VMM is able to return PSCI_DENIED when the guest attempts to bring a disabled vCPU online. Without this, the VMM is only able to not-run the vCPU, the kernel will have already returned PSCI_SUCCESS to the guest. This results in timeouts during boot as the OS must wait for the secondary vCPU. SMCCC probe requires PSCI v1.x. If userspace only implements PSCI v0.2, the guest won't query SMCCC support through PSCI and won't use the spectre workarounds. We could hijack PSCI_VERSION and pretend to support v1.0 if userspace does not, then handle all v1.0 calls ourselves (including guessing the PSCI feature set implemented by the guest), but that seems unnecessary. After all the API already allows userspace to force a version lower than v1.0 using the firmware pseudo-registers. The KVM_REG_ARM_PSCI_VERSION pseudo-register currently resets to either v0.1 if userspace doesn't set KVM_ARM_VCPU_PSCI_0_2, or KVM_ARM_PSCI_LATEST (1.0). Suggested-by:James Morse <james.morse@arm.com> Signed-off-by:
Jean-Philippe Brucker <jean-philippe@linaro.org> [morse: Added description of why this is required] Signed-off-by:
James Morse <james.morse@arm.com>
Loading
Please register or sign in to comment