KVM: arm64: Add generic check for system-supported vCPU features
authorOliver Upton <oliver.upton@linux.dev>
Wed, 20 Sep 2023 19:50:29 +0000 (19:50 +0000)
committerOliver Upton <oliver.upton@linux.dev>
Thu, 21 Sep 2023 18:13:28 +0000 (18:13 +0000)
commitef150908b6bd80a54126dbec324bd63a24a5628a
tree37e1e706dd81baa3d1e81c3a9433a80622ecc1f9
parentce9ecca0238b140b88f43859b211c9fdfd8e5b70
KVM: arm64: Add generic check for system-supported vCPU features

To date KVM has relied on kvm_reset_vcpu() failing when the vCPU feature
flags are unsupported by the system. This is a bit messy since
kvm_reset_vcpu() is called at runtime outside of the KVM_ARM_VCPU_INIT
ioctl when it is expected to succeed. Further complicating the matter is
that kvm_reset_vcpu() must tolerate be idemptotent to the config_lock,
as it isn't consistently called with the lock held.

Prepare to move feature compatibility checks out of kvm_reset_vcpu() with
a 'generic' check that compares the user-provided flags with a computed
maximum feature set for the system.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Link: https://lore.kernel.org/r/20230920195036.1169791-2-oliver.upton@linux.dev
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/arm.c