]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
LoongArch: KVM: Move feature detection in kvm_vm_init_features()
authorBibo Mao <maobibo@loongson.cn>
Fri, 6 Feb 2026 01:27:46 +0000 (09:27 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Fri, 6 Feb 2026 01:27:46 +0000 (09:27 +0800)
VM feature detection is sparsed in function kvm_vm_init_features() and
kvm_vm_feature_has_attr(). Here move all the features detection in
function kvm_vm_init_features(), and there is only feature checking in
function kvm_vm_feature_has_attr().

Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/kvm/vm.c

index 194ccbcdc3b3830c794c25e252128a3244729ef2..d3ff6d6966f8803abb51082e6fcafe4d1832e5a7 100644 (file)
@@ -29,6 +29,21 @@ static void kvm_vm_init_features(struct kvm *kvm)
 {
        unsigned long val;
 
+       if (cpu_has_lsx)
+               kvm->arch.kvm_features |= BIT(KVM_LOONGARCH_VM_FEAT_LSX);
+       if (cpu_has_lasx)
+               kvm->arch.kvm_features |= BIT(KVM_LOONGARCH_VM_FEAT_LASX);
+       if (cpu_has_lbt_x86)
+               kvm->arch.kvm_features |= BIT(KVM_LOONGARCH_VM_FEAT_X86BT);
+       if (cpu_has_lbt_arm)
+               kvm->arch.kvm_features |= BIT(KVM_LOONGARCH_VM_FEAT_ARMBT);
+       if (cpu_has_lbt_mips)
+               kvm->arch.kvm_features |= BIT(KVM_LOONGARCH_VM_FEAT_MIPSBT);
+       if (cpu_has_ptw)
+               kvm->arch.kvm_features |= BIT(KVM_LOONGARCH_VM_FEAT_PTW);
+       if (cpu_has_msgint)
+               kvm->arch.kvm_features |= BIT(KVM_LOONGARCH_VM_FEAT_MSGINT);
+
        val = read_csr_gcfg();
        if (val & CSR_GCFG_GPMP)
                kvm->arch.kvm_features |= BIT(KVM_LOONGARCH_VM_FEAT_PMU);
@@ -131,33 +146,12 @@ static int kvm_vm_feature_has_attr(struct kvm *kvm, struct kvm_device_attr *attr
 {
        switch (attr->attr) {
        case KVM_LOONGARCH_VM_FEAT_LSX:
-               if (cpu_has_lsx)
-                       return 0;
-               return -ENXIO;
        case KVM_LOONGARCH_VM_FEAT_LASX:
-               if (cpu_has_lasx)
-                       return 0;
-               return -ENXIO;
        case KVM_LOONGARCH_VM_FEAT_X86BT:
-               if (cpu_has_lbt_x86)
-                       return 0;
-               return -ENXIO;
        case KVM_LOONGARCH_VM_FEAT_ARMBT:
-               if (cpu_has_lbt_arm)
-                       return 0;
-               return -ENXIO;
        case KVM_LOONGARCH_VM_FEAT_MIPSBT:
-               if (cpu_has_lbt_mips)
-                       return 0;
-               return -ENXIO;
        case KVM_LOONGARCH_VM_FEAT_PTW:
-               if (cpu_has_ptw)
-                       return 0;
-               return -ENXIO;
        case KVM_LOONGARCH_VM_FEAT_MSGINT:
-               if (cpu_has_msgint)
-                       return 0;
-               return -ENXIO;
        case KVM_LOONGARCH_VM_FEAT_PMU:
        case KVM_LOONGARCH_VM_FEAT_PV_IPI:
        case KVM_LOONGARCH_VM_FEAT_PV_STEALTIME: