Message ID | 20211201170411.1561936-2-qperret@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: arm64: Introduce kvm_share_hyp() | expand |
On Wed, Dec 01, 2021 at 05:03:55PM +0000, Quentin Perret wrote: > The kvm_host_owns_hyp_mappings() function should return true if and only > if the host kernel is responsible for creating the hypervisor stage-1 > mappings. That is only possible in standard non-VHE mode, or during boot > in protected nVHE mode. But either way, non of this makes sense in VHE, > so make sure to catch this case as well, hence making the function > return sensible values in any context (VHE or not). > > Suggested-by: Marc Zyngier <maz@kernel.org> > Signed-off-by: Quentin Perret <qperret@google.com> > --- > arch/arm64/kvm/mmu.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c > index 326cdfec74a1..f8f1096a297f 100644 > --- a/arch/arm64/kvm/mmu.c > +++ b/arch/arm64/kvm/mmu.c > @@ -239,6 +239,9 @@ void free_hyp_pgds(void) > > static bool kvm_host_owns_hyp_mappings(void) > { > + if (is_kernel_in_hyp_mode()) > + return false; This looks identical to: https://lore.kernel.org/r/20211208152300.2478542-7-qperret@google.com Will
On Thursday 09 Dec 2021 at 10:10:54 (+0000), Will Deacon wrote: > On Wed, Dec 01, 2021 at 05:03:55PM +0000, Quentin Perret wrote: > > The kvm_host_owns_hyp_mappings() function should return true if and only > > if the host kernel is responsible for creating the hypervisor stage-1 > > mappings. That is only possible in standard non-VHE mode, or during boot > > in protected nVHE mode. But either way, non of this makes sense in VHE, > > so make sure to catch this case as well, hence making the function > > return sensible values in any context (VHE or not). > > > > Suggested-by: Marc Zyngier <maz@kernel.org> > > Signed-off-by: Quentin Perret <qperret@google.com> > > --- > > arch/arm64/kvm/mmu.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c > > index 326cdfec74a1..f8f1096a297f 100644 > > --- a/arch/arm64/kvm/mmu.c > > +++ b/arch/arm64/kvm/mmu.c > > @@ -239,6 +239,9 @@ void free_hyp_pgds(void) > > > > static bool kvm_host_owns_hyp_mappings(void) > > { > > + if (is_kernel_in_hyp_mode()) > > + return false; > > This looks identical to: > > https://lore.kernel.org/r/20211208152300.2478542-7-qperret@google.com Yep, I figured it made more sense in the other series as it's not strictly related to this one, so ... :) Cheers, Quentin
diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index 326cdfec74a1..f8f1096a297f 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -239,6 +239,9 @@ void free_hyp_pgds(void) static bool kvm_host_owns_hyp_mappings(void) { + if (is_kernel_in_hyp_mode()) + return false; + if (static_branch_likely(&kvm_protected_mode_initialized)) return false;
The kvm_host_owns_hyp_mappings() function should return true if and only if the host kernel is responsible for creating the hypervisor stage-1 mappings. That is only possible in standard non-VHE mode, or during boot in protected nVHE mode. But either way, non of this makes sense in VHE, so make sure to catch this case as well, hence making the function return sensible values in any context (VHE or not). Suggested-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Quentin Perret <qperret@google.com> --- arch/arm64/kvm/mmu.c | 3 +++ 1 file changed, 3 insertions(+)