Loading arch/arm64/include/asm/kvm_host.h +6 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,12 @@ #include <asm/kvm_asm.h> #include <asm/kvm_mmio.h> #define KVM_MAX_VCPUS 4 #if defined(CONFIG_KVM_ARM_MAX_VCPUS) #define KVM_MAX_VCPUS CONFIG_KVM_ARM_MAX_VCPUS #else #define KVM_MAX_VCPUS 0 #endif #define KVM_USER_MEM_SLOTS 32 #define KVM_PRIVATE_MEM_SLOTS 4 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 Loading arch/arm64/include/uapi/asm/kvm.h +2 −1 Original line number Diff line number Diff line Loading @@ -55,8 +55,9 @@ struct kvm_regs { #define KVM_ARM_TARGET_AEM_V8 0 #define KVM_ARM_TARGET_FOUNDATION_V8 1 #define KVM_ARM_TARGET_CORTEX_A57 2 #define KVM_ARM_TARGET_XGENE_POTENZA 3 #define KVM_ARM_NUM_TARGETS 3 #define KVM_ARM_NUM_TARGETS 4 /* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */ #define KVM_ARM_DEVICE_TYPE_SHIFT 0 Loading arch/arm64/kvm/Kconfig +11 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,17 @@ config KVM_ARM_HOST ---help--- Provides host support for ARM processors. config KVM_ARM_MAX_VCPUS int "Number maximum supported virtual CPUs per VM" depends on KVM_ARM_HOST default 4 help Static number of max supported virtual CPUs per VM. If you choose a high number, the vcpu structures will be quite large, so only choose a reasonable number that you expect to actually use. config KVM_ARM_VGIC bool depends on KVM_ARM_HOST && OF Loading arch/arm64/kvm/guest.c +19 −13 Original line number Diff line number Diff line Loading @@ -207,21 +207,27 @@ int __attribute_const__ kvm_target_cpu(void) unsigned long implementor = read_cpuid_implementor(); unsigned long part_number = read_cpuid_part_number(); if (implementor != ARM_CPU_IMP_ARM) return -EINVAL; switch (implementor) { case ARM_CPU_IMP_ARM: switch (part_number) { case ARM_CPU_PART_AEM_V8: return KVM_ARM_TARGET_AEM_V8; case ARM_CPU_PART_FOUNDATION: return KVM_ARM_TARGET_FOUNDATION_V8; case ARM_CPU_PART_CORTEX_A57: /* Currently handled by the generic backend */ return KVM_ARM_TARGET_CORTEX_A57; default: }; break; case ARM_CPU_IMP_APM: switch (part_number) { case APM_CPU_PART_POTENZA: return KVM_ARM_TARGET_XGENE_POTENZA; }; break; }; return -EINVAL; } } int kvm_vcpu_set_target(struct kvm_vcpu *vcpu, const struct kvm_vcpu_init *init) Loading arch/arm64/kvm/handle_exit.c +0 −3 Original line number Diff line number Diff line Loading @@ -39,9 +39,6 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) { if (kvm_psci_call(vcpu)) return 1; kvm_inject_undefined(vcpu); return 1; } Loading Loading
arch/arm64/include/asm/kvm_host.h +6 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,12 @@ #include <asm/kvm_asm.h> #include <asm/kvm_mmio.h> #define KVM_MAX_VCPUS 4 #if defined(CONFIG_KVM_ARM_MAX_VCPUS) #define KVM_MAX_VCPUS CONFIG_KVM_ARM_MAX_VCPUS #else #define KVM_MAX_VCPUS 0 #endif #define KVM_USER_MEM_SLOTS 32 #define KVM_PRIVATE_MEM_SLOTS 4 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 Loading
arch/arm64/include/uapi/asm/kvm.h +2 −1 Original line number Diff line number Diff line Loading @@ -55,8 +55,9 @@ struct kvm_regs { #define KVM_ARM_TARGET_AEM_V8 0 #define KVM_ARM_TARGET_FOUNDATION_V8 1 #define KVM_ARM_TARGET_CORTEX_A57 2 #define KVM_ARM_TARGET_XGENE_POTENZA 3 #define KVM_ARM_NUM_TARGETS 3 #define KVM_ARM_NUM_TARGETS 4 /* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */ #define KVM_ARM_DEVICE_TYPE_SHIFT 0 Loading
arch/arm64/kvm/Kconfig +11 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,17 @@ config KVM_ARM_HOST ---help--- Provides host support for ARM processors. config KVM_ARM_MAX_VCPUS int "Number maximum supported virtual CPUs per VM" depends on KVM_ARM_HOST default 4 help Static number of max supported virtual CPUs per VM. If you choose a high number, the vcpu structures will be quite large, so only choose a reasonable number that you expect to actually use. config KVM_ARM_VGIC bool depends on KVM_ARM_HOST && OF Loading
arch/arm64/kvm/guest.c +19 −13 Original line number Diff line number Diff line Loading @@ -207,21 +207,27 @@ int __attribute_const__ kvm_target_cpu(void) unsigned long implementor = read_cpuid_implementor(); unsigned long part_number = read_cpuid_part_number(); if (implementor != ARM_CPU_IMP_ARM) return -EINVAL; switch (implementor) { case ARM_CPU_IMP_ARM: switch (part_number) { case ARM_CPU_PART_AEM_V8: return KVM_ARM_TARGET_AEM_V8; case ARM_CPU_PART_FOUNDATION: return KVM_ARM_TARGET_FOUNDATION_V8; case ARM_CPU_PART_CORTEX_A57: /* Currently handled by the generic backend */ return KVM_ARM_TARGET_CORTEX_A57; default: }; break; case ARM_CPU_IMP_APM: switch (part_number) { case APM_CPU_PART_POTENZA: return KVM_ARM_TARGET_XGENE_POTENZA; }; break; }; return -EINVAL; } } int kvm_vcpu_set_target(struct kvm_vcpu *vcpu, const struct kvm_vcpu_init *init) Loading
arch/arm64/kvm/handle_exit.c +0 −3 Original line number Diff line number Diff line Loading @@ -39,9 +39,6 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) { if (kvm_psci_call(vcpu)) return 1; kvm_inject_undefined(vcpu); return 1; } Loading