Message ID | 20210316101312.102925-7-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:08AM +0000, Marc Zyngier wrote: > When running on nVHE, and that the vcpu supports SVE, map the > SVE state at EL2 so that KVM can access it. > > Signed-off-by: Marc Zyngier <maz@kernel.org> > --- > arch/arm64/kvm/fpsimd.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/arch/arm64/kvm/fpsimd.c b/arch/arm64/kvm/fpsimd.c > index b7e36a506d3d..84afca5ed6f2 100644 > --- a/arch/arm64/kvm/fpsimd.c > +++ b/arch/arm64/kvm/fpsimd.c > @@ -43,6 +43,17 @@ int kvm_arch_vcpu_run_map_fp(struct kvm_vcpu *vcpu) > if (ret) > goto error; > > + if (vcpu->arch.sve_state) { > + void *sve_end; > + > + sve_end = vcpu->arch.sve_state + vcpu_sve_state_size(vcpu) + 1; Why do you need the '+ 1' here? Will
On Wed, 17 Mar 2021 16:01:12 +0000, Will Deacon <will@kernel.org> wrote: > > On Tue, Mar 16, 2021 at 10:13:08AM +0000, Marc Zyngier wrote: > > When running on nVHE, and that the vcpu supports SVE, map the > > SVE state at EL2 so that KVM can access it. > > > > Signed-off-by: Marc Zyngier <maz@kernel.org> > > --- > > arch/arm64/kvm/fpsimd.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/arch/arm64/kvm/fpsimd.c b/arch/arm64/kvm/fpsimd.c > > index b7e36a506d3d..84afca5ed6f2 100644 > > --- a/arch/arm64/kvm/fpsimd.c > > +++ b/arch/arm64/kvm/fpsimd.c > > @@ -43,6 +43,17 @@ int kvm_arch_vcpu_run_map_fp(struct kvm_vcpu *vcpu) > > if (ret) > > goto error; > > > > + if (vcpu->arch.sve_state) { > > + void *sve_end; > > + > > + sve_end = vcpu->arch.sve_state + vcpu_sve_state_size(vcpu) + 1; > > Why do you need the '+ 1' here? Only the need to add off-by-one bugs once in a while. I'll fix that in the next round. Thanks, M.
diff --git a/arch/arm64/kvm/fpsimd.c b/arch/arm64/kvm/fpsimd.c index b7e36a506d3d..84afca5ed6f2 100644 --- a/arch/arm64/kvm/fpsimd.c +++ b/arch/arm64/kvm/fpsimd.c @@ -43,6 +43,17 @@ int kvm_arch_vcpu_run_map_fp(struct kvm_vcpu *vcpu) if (ret) goto error; + if (vcpu->arch.sve_state) { + void *sve_end; + + sve_end = vcpu->arch.sve_state + vcpu_sve_state_size(vcpu) + 1; + + ret = create_hyp_mappings(vcpu->arch.sve_state, sve_end, + PAGE_HYP); + if (ret) + goto error; + } + vcpu->arch.host_thread_info = kern_hyp_va(ti); vcpu->arch.host_fpsimd_state = kern_hyp_va(fpsimd); error:
When running on nVHE, and that the vcpu supports SVE, map the SVE state at EL2 so that KVM can access it. Signed-off-by: Marc Zyngier <maz@kernel.org> --- arch/arm64/kvm/fpsimd.c | 11 +++++++++++ 1 file changed, 11 insertions(+)