The way we do vCPU feature flag checks is a bit of a scattered mess between the KVM_ARM_VCPU_INIT ioctl handler and kvm_reset_vcpu(). Let's move all the feature flag checks up into the ioctl() handler to eliminate failure paths from kvm_reset_vcpu(), as other usage of this function no not handle returned errors. Nobody screamed about the VM-wide feature flag change, so its also a good time to rip out the vestiges of the vCPU-scoped bitmap. I also spotted a bug with the NV feature flag where we allow it regardless of system support. Oliver Upton (8): KVM: arm64: Add generic check for system-supported vCPU features KVM: arm64: Hoist PMUv3 check into KVM_ARM_VCPU_INIT ioctl handler KVM: arm64: Hoist SVE check into KVM_ARM_VCPU_INIT ioctl handler KVM: arm64: Hoist PAuth checks into KVM_ARM_VCPU_INIT ioctl KVM: arm64: Prevent NV feature flag on systems w/o nested virt KVM: arm64: Hoist NV+SVE check into KVM_ARM_VCPU_INIT ioctl handler KVM: arm64: Remove unused return value from kvm_reset_vcpu() KVM: arm64: Get rid of vCPU-scoped feature bitmap arch/arm64/include/asm/kvm_emulate.h | 13 +++--- arch/arm64/include/asm/kvm_host.h | 5 +-- arch/arm64/include/asm/kvm_nested.h | 3 +- arch/arm64/kvm/arch_timer.c | 4 +- arch/arm64/kvm/arm.c | 62 +++++++++++++++++++++------- arch/arm64/kvm/hypercalls.c | 2 +- arch/arm64/kvm/reset.c | 56 +++++-------------------- include/kvm/arm_arch_timer.h | 2 +- include/kvm/arm_pmu.h | 2 +- include/kvm/arm_psci.h | 2 +- 10 files changed, 72 insertions(+), 79 deletions(-) base-commit: ce9ecca0238b140b88f43859b211c9fdfd8e5b70 -- 2.42.0.515.g380fc7ccd1-goog