From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiao Guangrong Subject: Re: commit 3c2e7f7de3 (KVM use NPT page attributes) causes boot failures Date: Wed, 2 Sep 2015 18:27:31 +0800 Message-ID: <55E6CF13.1060806@linux.intel.com> References: <20150901074449.GB430@x4> <20150901083856.GD25398@gmail.com> <20150901084444.GB421@x4> <20150901085627.GF6315@gmail.com> <20150901100417.GA424@x4> <55E5A157.5040403@linux.intel.com> <20150901135636.GA423@x4> <55E6273D.6080701@linux.intel.com> <20150902035040.GA420@x4> <55E6BEB1.6080106@linux.intel.com> <20150902093818.GA422@x4> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Ingo Molnar , Linus Torvalds , linux-kernel@vger.kernel.org, Peter Zijlstra , Thomas Gleixner , Andrew Morton , Mike Galbraith , Joerg Roedel , Paolo Bonzini , kvm@vger.kernel.org To: Markus Trippelsdorf Return-path: In-Reply-To: <20150902093818.GA422@x4> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 09/02/2015 05:38 PM, Markus Trippelsdorf wrote: > On 2015.09.02 at 17:17 +0800, Xiao Guangrong wrote: >>> >>> No. PAT is of course enabled and booting is successful sometimes even >>> with the BUG() in allback_mtrr_type(). I suspect a setup (timing) issue. >> >> Thanks for your confirmation. >> >>> >>> markus@x4 linux % cat .config | grep X86_PAT >>> CONFIG_X86_PAT=y >>> markus@x4 linux % dmesg | grep PAT >>> [ 0.000000] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT >> >> Strange, BP processor has already set WC to PAT1, however KVM does not read it out >> from PAT MSR on its local CPU. >> >> Hmm... PAT default values do not include WC, it seems initing PAT on SP has not >> finished after module_init()? >> >> Could please apply this diff and test it again? > > (Your patch was malformed.) > > [ 2.138098] kvm: Nested Virtualization enabled > [ 2.138153] kvm: Nested Paging enabled > [ 2.138204] KVM PAT: 0x7040600070406. So the PAT is the value after CPU reset, it's likely PAT is not initialized on the local CPU. Maybe something is escaped from stop_machine() called in native_smp_cpus_done(), Ingo?