kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Xiao Guangrong <guangrong.xiao@linux.intel.com>
To: Markus Trippelsdorf <markus@trippelsdorf.de>
Cc: Ingo Molnar <mingo@kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	linux-kernel@vger.kernel.org,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Thomas Gleixner <tglx@linutronix.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Mike Galbraith <efault@gmx.de>, Joerg Roedel <jroedel@suse.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	kvm@vger.kernel.org
Subject: Re: commit 3c2e7f7de3 (KVM use NPT page attributes) causes boot failures
Date: Wed, 2 Sep 2015 17:17:37 +0800	[thread overview]
Message-ID: <55E6BEB1.6080106@linux.intel.com> (raw)
In-Reply-To: <20150902035040.GA420@x4>



On 09/02/2015 11:50 AM, Markus Trippelsdorf wrote:
> On 2015.09.02 at 06:31 +0800, Xiao Guangrong wrote:
>>
>>
>> On 09/01/2015 09:56 PM, Markus Trippelsdorf wrote:
>>> On 2015.09.01 at 21:00 +0800, Xiao Guangrong wrote:
>>>>
>>>> Did it trigger the BUG()/BUG_ON() in mtrr2protval()/fallback_mtrr_type()?
>>>> If yes, could you please print the actual value out?
>>>
>>> It is the BUG() in fallback_mtrr_type(). I changed it to a printk and
>>> it prints 1 for the value of mtrr.
>>>
>>>    MTRR_TYPE_WRCOMB     1
>>>
>>
>> Then I suspect pat is not enabled in your box, could you please check
>> CONFIG_X86_PAT is selected in your .config file, pat is shown in
>> /proc/cpuid, "nopat" kernel parameter is used, and dmesg | grep PAT.
>
> 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?

diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 189e464..d9d3a30 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -884,6 +884,7 @@ static u8 fallback_mtrr_type(int mtrr)
         case MTRR_TYPE_WRPROT:
                 return MTRR_TYPE_UC_MINUS;
         default:
+               printk("BUG in %s, mtrr = %d.\n", __FUNCTION__, mtrr);
                 BUG();
         }
  }
@@ -907,6 +908,8 @@ static void build_mtrr2protval(void)
          * guest.
          */
         rdmsrl(MSR_IA32_CR_PAT, pat);
+       printk("KVM PAT: 0x%llx.\n", pat);
+
         for (i = 0; i < 8; i++) {
                 u8 mtrr = pat >> (8 * i);

@@ -914,10 +917,17 @@ static void build_mtrr2protval(void)
                         mtrr2protval[mtrr] = __cm_idx2pte(i);
         }

+       for (i = 0; i < 8; i++)
+               printk("mtrr2protval[%d]:%x.\n", i, mtrr2protval[i]);
+
+
         for (i = 0; i < 8; i++) {
                 if (mtrr2protval[i] == MTRR2PROTVAL_INVALID) {
                         u8 fallback = fallback_mtrr_type(i);
                         mtrr2protval[i] = mtrr2protval[fallback];
+                       if (mtrr2protval[i] == MTRR2PROTVAL_INVALID)
+                               printk("BUG in %s, mtrr2protval[%d] = %x.\n", __FUNCTION__, i, 
mtrr2protval[i]);
+
                         BUG_ON(mtrr2protval[i] == MTRR2PROTVAL_INVALID);
                 }
         }

  reply	other threads:[~2015-09-02  9:17 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20150831172453.GA5429@gmail.com>
     [not found] ` <20150901070856.GA430@x4>
     [not found]   ` <20150901072741.GB20383@gmail.com>
     [not found]     ` <20150901074449.GB430@x4>
     [not found]       ` <20150901083856.GD25398@gmail.com>
     [not found]         ` <20150901084444.GB421@x4>
     [not found]           ` <20150901085627.GF6315@gmail.com>
2015-09-01 10:04             ` commit 3c2e7f7de3 (KVM use NPT page attributes) causes boot failures Markus Trippelsdorf
2015-09-01 13:00               ` Xiao Guangrong
2015-09-01 13:56                 ` Markus Trippelsdorf
2015-09-01 22:31                   ` Xiao Guangrong
2015-09-02  3:50                     ` Markus Trippelsdorf
2015-09-02  9:17                       ` Xiao Guangrong [this message]
2015-09-02  9:38                         ` Markus Trippelsdorf
2015-09-02 10:27                           ` Xiao Guangrong
2015-09-02 10:54                             ` Markus Trippelsdorf
2015-09-02 10:57                               ` Xiao Guangrong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55E6BEB1.6080106@linux.intel.com \
    --to=guangrong.xiao@linux.intel.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=efault@gmx.de \
    --cc=jroedel@suse.de \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markus@trippelsdorf.de \
    --cc=mingo@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).