Message ID | 20210316101312.102925-11-maz@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: arm64: Enable SVE support on nVHE systems | expand |
On Tue, Mar 16, 2021 at 10:13:12AM +0000, Marc Zyngier wrote: > From: Daniel Kiss <daniel.kiss@arm.com> > > Now that KVM is equipped to deal with SVE on nVHE, remove the code > preventing it from being used as well as the bits of documentation > that were mentioning the incompatibility. > > Signed-off-by: Daniel Kiss <daniel.kiss@arm.com> > Signed-off-by: Marc Zyngier <maz@kernel.org> > --- > arch/arm64/Kconfig | 7 ------- > arch/arm64/include/asm/kvm_host.h | 13 ------------- > arch/arm64/kvm/arm.c | 5 ----- > arch/arm64/kvm/reset.c | 4 ---- > 4 files changed, 29 deletions(-) Acked-by: Will Deacon <will@kernel.org> I thought we might need to update the documentation too, but I couldn't actually find anywhere that needed it when I looked. Will
On Wed, 17 Mar 2021 18:00:17 +0000, Will Deacon <will@kernel.org> wrote: > > On Tue, Mar 16, 2021 at 10:13:12AM +0000, Marc Zyngier wrote: > > From: Daniel Kiss <daniel.kiss@arm.com> > > > > Now that KVM is equipped to deal with SVE on nVHE, remove the code > > preventing it from being used as well as the bits of documentation > > that were mentioning the incompatibility. > > > > Signed-off-by: Daniel Kiss <daniel.kiss@arm.com> > > Signed-off-by: Marc Zyngier <maz@kernel.org> > > --- > > arch/arm64/Kconfig | 7 ------- > > arch/arm64/include/asm/kvm_host.h | 13 ------------- > > arch/arm64/kvm/arm.c | 5 ----- > > arch/arm64/kvm/reset.c | 4 ---- > > 4 files changed, 29 deletions(-) > > Acked-by: Will Deacon <will@kernel.org> > > I thought we might need to update the documentation too, but I couldn't > actually find anywhere that needed it when I looked. I though as well we had something either in api.rst or sve.rst, but couldn't find anything either. Thanks, M.
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 1f212b47a48a..2690543799fb 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -1686,7 +1686,6 @@ endmenu config ARM64_SVE bool "ARM Scalable Vector Extension support" default y - depends on !KVM || ARM64_VHE help The Scalable Vector Extension (SVE) is an extension to the AArch64 execution state which complements and extends the SIMD functionality @@ -1715,12 +1714,6 @@ config ARM64_SVE booting the kernel. If unsure and you are not observing these symptoms, you should assume that it is safe to say Y. - CPUs that support SVE are architecturally required to support the - Virtualization Host Extensions (VHE), so the kernel makes no - provision for supporting SVE alongside KVM without VHE enabled. - Thus, you will need to enable CONFIG_ARM64_VHE if you want to support - KVM in the same kernel image. - config ARM64_MODULE_PLTS bool "Use PLTs to allow module memory to spill over into vmalloc area" depends on MODULES diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h index 9108ccc80653..62a5f14dde36 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -696,19 +696,6 @@ static inline void kvm_init_host_cpu_context(struct kvm_cpu_context *cpu_ctxt) ctxt_sys_reg(cpu_ctxt, MPIDR_EL1) = read_cpuid_mpidr(); } -static inline bool kvm_arch_requires_vhe(void) -{ - /* - * The Arm architecture specifies that implementation of SVE - * requires VHE also to be implemented. The KVM code for arm64 - * relies on this when SVE is present: - */ - if (system_supports_sve()) - return true; - - return false; -} - void kvm_arm_vcpu_ptrauth_trap(struct kvm_vcpu *vcpu); static inline void kvm_arch_hardware_unsetup(void) {} diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index fc4c95dd2d26..ef92b7d32ebd 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -1889,11 +1889,6 @@ int kvm_arch_init(void *opaque) in_hyp_mode = is_kernel_in_hyp_mode(); - if (!in_hyp_mode && kvm_arch_requires_vhe()) { - kvm_pr_unimpl("CPU unsupported in non-VHE mode, not initializing\n"); - return -ENODEV; - } - if (cpus_have_final_cap(ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE) || cpus_have_final_cap(ARM64_WORKAROUND_1508412)) kvm_info("Guests without required CPU erratum workarounds can deadlock system!\n" \ diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c index 47f3f035f3ea..f08b1e7ebf68 100644 --- a/arch/arm64/kvm/reset.c +++ b/arch/arm64/kvm/reset.c @@ -74,10 +74,6 @@ static int kvm_vcpu_enable_sve(struct kvm_vcpu *vcpu) if (!system_supports_sve()) return -EINVAL; - /* Verify that KVM startup enforced this when SVE was detected: */ - if (WARN_ON(!has_vhe())) - return -EINVAL; - vcpu->arch.sve_max_vl = kvm_sve_max_vl; /*