]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: arm64: Remove PtrAuth guest vcpu flag
authorFuad Tabba <tabba@google.com>
Mon, 16 Dec 2024 10:50:55 +0000 (10:50 +0000)
committerMarc Zyngier <maz@kernel.org>
Fri, 20 Dec 2024 13:54:06 +0000 (13:54 +0000)
The vcpu flag GUEST_HAS_PTRAUTH is always associated with the
vcpu PtrAuth features, which are defined per vm rather than per
vcpu.

Remove the flag, and replace it with checks for the features
instead.

Signed-off-by: Fuad Tabba <tabba@google.com>
Link: https://lore.kernel.org/r/20241216105057.579031-16-tabba@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/kvm_emulate.h
arch/arm64/include/asm/kvm_host.h
arch/arm64/kvm/hyp/nvhe/pkvm.c
arch/arm64/kvm/reset.c

index 6602a4c091ac2131c7fb9961f3f6b7bda69afb6c..406e99a452bf59e470f8d51631495e45086ded4a 100644 (file)
@@ -691,9 +691,4 @@ static inline bool guest_hyp_sve_traps_enabled(const struct kvm_vcpu *vcpu)
 {
        return __guest_hyp_cptr_xen_trap_enabled(vcpu, ZEN);
 }
-
-static inline void kvm_vcpu_enable_ptrauth(struct kvm_vcpu *vcpu)
-{
-       vcpu_set_flag(vcpu, GUEST_HAS_PTRAUTH);
-}
 #endif /* __ARM64_KVM_EMULATE_H__ */
index ba9536c3076d23d7cbeb6432b2cdd18e828a20b8..86fb40d35051269938bca5b226913b698ce018ac 100644 (file)
@@ -866,10 +866,8 @@ struct kvm_vcpu_arch {
 #define GUEST_HAS_SVE          __vcpu_single_flag(cflags, BIT(0))
 /* SVE config completed */
 #define VCPU_SVE_FINALIZED     __vcpu_single_flag(cflags, BIT(1))
-/* PTRAUTH exposed to guest */
-#define GUEST_HAS_PTRAUTH      __vcpu_single_flag(cflags, BIT(2))
 /* KVM_ARM_VCPU_INIT completed */
-#define VCPU_INITIALIZED       __vcpu_single_flag(cflags, BIT(3))
+#define VCPU_INITIALIZED       __vcpu_single_flag(cflags, BIT(2))
 
 /* Exception pending */
 #define PENDING_EXCEPTION      __vcpu_single_flag(iflags, BIT(0))
@@ -965,7 +963,8 @@ struct kvm_vcpu_arch {
 #define vcpu_has_ptrauth(vcpu)                                         \
        ((cpus_have_final_cap(ARM64_HAS_ADDRESS_AUTH) ||                \
          cpus_have_final_cap(ARM64_HAS_GENERIC_AUTH)) &&               \
-         vcpu_get_flag(vcpu, GUEST_HAS_PTRAUTH))
+        (vcpu_has_feature(vcpu, KVM_ARM_VCPU_PTRAUTH_ADDRESS) ||       \
+         vcpu_has_feature(vcpu, KVM_ARM_VCPU_PTRAUTH_GENERIC)))
 #else
 #define vcpu_has_ptrauth(vcpu)         false
 #endif
index 4ef08fb3bca444c5de7e85909c543fe2457fcf35..5ad271d91cacb4125bb43889ca846c17169db6c3 100644 (file)
@@ -278,18 +278,6 @@ static void pkvm_init_features_from_host(struct pkvm_hyp_vm *hyp_vm, const struc
                   allowed_features, KVM_VCPU_MAX_FEATURES);
 }
 
-static void pkvm_vcpu_init_ptrauth(struct pkvm_hyp_vcpu *hyp_vcpu)
-{
-       struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
-
-       if (vcpu_has_feature(vcpu, KVM_ARM_VCPU_PTRAUTH_ADDRESS) ||
-           vcpu_has_feature(vcpu, KVM_ARM_VCPU_PTRAUTH_GENERIC)) {
-               kvm_vcpu_enable_ptrauth(vcpu);
-       } else {
-               vcpu_clear_flag(&hyp_vcpu->vcpu, GUEST_HAS_PTRAUTH);
-       }
-}
-
 static void unpin_host_vcpu(struct kvm_vcpu *host_vcpu)
 {
        if (host_vcpu)
@@ -359,7 +347,6 @@ static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu,
                goto done;
 
        pkvm_vcpu_init_sve(hyp_vcpu, host_vcpu);
-       pkvm_vcpu_init_ptrauth(hyp_vcpu);
 done:
        if (ret)
                unpin_host_vcpu(host_vcpu);
index 470524b31951ec065dfd4a18929505280a182942..1cfab6a5d8a59f147590de3761e8f1fbdb86a9a4 100644 (file)
@@ -211,10 +211,6 @@ void kvm_reset_vcpu(struct kvm_vcpu *vcpu)
                kvm_vcpu_reset_sve(vcpu);
        }
 
-       if (vcpu_has_feature(vcpu, KVM_ARM_VCPU_PTRAUTH_ADDRESS) ||
-           vcpu_has_feature(vcpu, KVM_ARM_VCPU_PTRAUTH_GENERIC))
-               kvm_vcpu_enable_ptrauth(vcpu);
-
        if (vcpu_el1_is_32bit(vcpu))
                pstate = VCPU_RESET_PSTATE_SVC;
        else if (vcpu_has_nv(vcpu))