From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Date: Sun, 26 Nov 2017 21:57:24 +0000 Subject: Re: [PATCH v2 10/11] powerpc/kvm: Store the MMU mode in the PACA on KVM exit Message-Id: <1511733444.2466.65.camel@kernel.crashing.org> List-Id: References: <20171123043619.15301-1-benh@kernel.crashing.org> <20171123043619.15301-10-benh@kernel.crashing.org> <20171125050317.GB10920@fergus.ozlabs.ibm.com> In-Reply-To: <20171125050317.GB10920@fergus.ozlabs.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Paul Mackerras Cc: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org On Sat, 2017-11-25 at 16:03 +1100, Paul Mackerras wrote: > On Thu, Nov 23, 2017 at 03:36:18PM +1100, Benjamin Herrenschmidt wrote: > > This stores the MMU mode (real vs. virt) in the PACA on exceptions > > that do a KVM test. > > > > At the moment, we do this unconditionally in those exceptions due > > to how the macro system is put together. In the future we could > > find a way to only do it when actually exiting a guest. > > > > This will avoid a pile of mfmsr in the KVM exit path > > Comments below... > > > diff --git a/arch/powerpc/include/asm/kvm_book3s_asm.h b/arch/powerpc/include/asm/kvm_book3s_asm.h > > index 83596f32f50b..7775a278e56e 100644 > > --- a/arch/powerpc/include/asm/kvm_book3s_asm.h > > +++ b/arch/powerpc/include/asm/kvm_book3s_asm.h > > @@ -118,6 +118,7 @@ struct kvmppc_host_state { > > void __iomem *xive_tima_phys; > > void __iomem *xive_tima_virt; > > u32 saved_xirr; > > + u8 exit_virt; /* MMU mode on exception exit */ > > This is being added in the #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE > section of this struct, but as far as I can see we will need the new > field in the case where only PR and not HV is configured. Did you try > compiling a PR-only config? Nope. There is another problem is that it causes the fixed handler to be to big for at least one interrupt (haven't check which one, it's the build bot who notified me). I need to re-think that. I might have to either do separate do_* entry points or something like that too... Ben. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: Re: [PATCH v2 10/11] powerpc/kvm: Store the MMU mode in the PACA on KVM exit Date: Mon, 27 Nov 2017 08:57:24 +1100 Message-ID: <1511733444.2466.65.camel@kernel.crashing.org> References: <20171123043619.15301-1-benh@kernel.crashing.org> <20171123043619.15301-10-benh@kernel.crashing.org> <20171125050317.GB10920@fergus.ozlabs.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org To: Paul Mackerras Return-path: Received: from gate.crashing.org ([63.228.1.57]:60255 "EHLO gate.crashing.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751816AbdKZV5b (ORCPT ); Sun, 26 Nov 2017 16:57:31 -0500 In-Reply-To: <20171125050317.GB10920@fergus.ozlabs.ibm.com> Sender: kvm-owner@vger.kernel.org List-ID: On Sat, 2017-11-25 at 16:03 +1100, Paul Mackerras wrote: > On Thu, Nov 23, 2017 at 03:36:18PM +1100, Benjamin Herrenschmidt wrote: > > This stores the MMU mode (real vs. virt) in the PACA on exceptions > > that do a KVM test. > > > > At the moment, we do this unconditionally in those exceptions due > > to how the macro system is put together. In the future we could > > find a way to only do it when actually exiting a guest. > > > > This will avoid a pile of mfmsr in the KVM exit path > > Comments below... > > > diff --git a/arch/powerpc/include/asm/kvm_book3s_asm.h b/arch/powerpc/include/asm/kvm_book3s_asm.h > > index 83596f32f50b..7775a278e56e 100644 > > --- a/arch/powerpc/include/asm/kvm_book3s_asm.h > > +++ b/arch/powerpc/include/asm/kvm_book3s_asm.h > > @@ -118,6 +118,7 @@ struct kvmppc_host_state { > > void __iomem *xive_tima_phys; > > void __iomem *xive_tima_virt; > > u32 saved_xirr; > > + u8 exit_virt; /* MMU mode on exception exit */ > > This is being added in the #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE > section of this struct, but as far as I can see we will need the new > field in the case where only PR and not HV is configured. Did you try > compiling a PR-only config? Nope. There is another problem is that it causes the fixed handler to be to big for at least one interrupt (haven't check which one, it's the build bot who notified me). I need to re-think that. I might have to either do separate do_* entry points or something like that too... Ben.