From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott Wood Subject: Re: [PATCH 2/2 v2] kvm: powerpc: set cache coherency only for kernel managed pages Date: Mon, 22 Jul 2013 13:47:43 -0500 Message-ID: <1374518863.15592.10@snotra> References: <6A3DF150A5B70D4F9B66A25E3F7C888D070DA34F@039-SN2MPN1-013.039d.mgd.msft.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; delsp=Yes; format=Flowed Content-Transfer-Encoding: 8BIT Cc: Wood Scott-B07421 , Alexander Graf , "kvm-ppc@vger.kernel.org" , "kvm@vger.kernel.org" To: Bhushan Bharat-R65777 Return-path: In-Reply-To: <6A3DF150A5B70D4F9B66A25E3F7C888D070DA34F@039-SN2MPN1-013.039d.mgd.msft.net> (from R65777@freescale.com on Sun Jul 21 23:39:45 2013) Content-Disposition: inline Sender: kvm-ppc-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 07/21/2013 11:39:45 PM, Bhushan Bharat-R65777 wrote: > > > > -----Original Message----- > > From: Wood Scott-B07421 > > Sent: Thursday, July 18, 2013 11:09 PM > > To: Alexander Graf > > Cc: Bhushan Bharat-R65777; kvm-ppc@vger.kernel.org; > kvm@vger.kernel.org; Bhushan > > Bharat-R65777 > > Subject: Re: [PATCH 2/2 v2] kvm: powerpc: set cache coherency only > for kernel > > managed pages > > > > On 07/18/2013 12:32:18 PM, Alexander Graf wrote: > > > > > > On 18.07.2013, at 19:17, Scott Wood wrote: > > > > > > > On 07/18/2013 08:19:03 AM, Bharat Bhushan wrote: > > > > Likewise, we want to make sure this matches the host entry. > > > Unfortunately, this is a bit of a mess already. 64-bit booke > appears > > > to always set MAS2_M for TLB0 mappings. The initial KERNELBASE > > > mapping on boot uses M_IF_SMP, and the settlbcam() that (IIRC) > > > replaces it uses _PAGE_COHERENT. 32-bit always uses > _PAGE_COHERENT, > > > except that initial KERNELBASE mapping. _PAGE_COHERENT appears > to be > > > set based on CONFIG_SMP || CONFIG_PPC_STD_MMU (the latter config > > > clears _PAGE_COHERENT in the non-CPU_FTR_NEED_COHERENT case). > > > > > > > > As for what we actually want to happen, there are cases when we > > > want M to be set for non-SMP. One such case is AMP, where CPUs > may be > > > sharing memory even if the Linux instance only runs on one CPU > (this > > > is not hypothetical, BTW). It's also possible that we encounter a > > > hardware bug that requires MAS2_M, similar to what some of our > > > non-booke chips require. > > > > > > How about we always set M then for RAM? > > > > M is like I in that bad things happen if you mix them. > > I am trying to list the invalid mixing of WIMG: > > 1) I & M > 2) W & I > 3) W & M (Scott mentioned that he observed issues when mixing these > two) > 4) is there any other? That's not what I was talking about (and I don't think I mentioned W at all, though it is also potentially problematic). I'm talking about mixing I with not-I (on two different virtual addresses pointing to the same physical), M with not-M, etc. > > So we really want to > > match exactly what the rest of the kernel is doing. > > How the rest of kernel is doing is a bit complex. IIUC, if we forget > about the boot state then this is how kernel set WIMG bits: > 1) For Memory always set M if CONFIG_SMP set. > - So KVM can do same. "M" will not be mixed with "W" and "I". G > and E are guest control. I don't think this is accurate for 64-bit. And what about the AMP case? -Scott