All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wanpeng Li <wanpeng.li@linux.intel.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Gleb Natapov <gleb@kernel.org>,
	hpa@zytor.com, x86@kernel.org, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/5] KVM: x86: #GP when attempts to write reserved bits of Variable Range MTRRs
Date: Mon, 18 Aug 2014 20:27:29 +0800	[thread overview]
Message-ID: <20140818122729.GA1001@kernel> (raw)
In-Reply-To: <1408355431-115633-5-git-send-email-wanpeng.li@linux.intel.com>

Hi Paolo,
On Mon, Aug 18, 2014 at 05:50:31PM +0800, Wanpeng Li wrote:
>Section 11.11.2.3 of the SDM mentions "All other bits in the IA32_MTRR_PHYSBASEn 
>and IA32_MTRR_PHYSMASKn registers are reserved; the processor generates a 
>general-protection exception(#GP) if software attempts to write to them". This 
>patch do it in kvm.
>

How about this one?

Regards,
Wanpeng Li 

>Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
>---
> arch/x86/kvm/x86.c | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
>diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
>index caaffeb..aa64c70 100644
>--- a/arch/x86/kvm/x86.c
>+++ b/arch/x86/kvm/x86.c
>@@ -1769,11 +1769,22 @@ static bool mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data)
> 	/* variable MTRRs */
> 	if (msr >= 0x200 && msr < 0x200 + 2 * KVM_NR_VAR_MTRR) {
> 		int idx, is_mtrr_mask;
>+		u64 mask = 0;
> 
> 		idx = (msr - 0x200) / 2;
> 		is_mtrr_mask = msr - 0x200 - 2 * idx;
>-		if (!is_mtrr_mask)
>-			return valid_mtrr_type(data & 0xff);
>+		for (i = 63; i > boot_cpu_data.x86_phys_bits; i--)
>+			mask |= (1ULL << i);
>+		if (!is_mtrr_mask) {
>+			if (!valid_mtrr_type(data & 0xff))
>+				return false;
>+			mask |= 0xf00;
>+		} else
>+			mask |= 0x7ff;
>+		if (data & mask) {
>+			kvm_inject_gp(vcpu, 0);
>+			return false;
>+		}
> 	}
> 	return true;
> }
>-- 
>1.9.1

  reply	other threads:[~2014-08-18 12:27 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-18  9:50 [PATCH 1/5] KVM: vmx: fix ept reserved bits for 1-GByte page Wanpeng Li
2014-08-18  9:50 ` [PATCH 2/5] KVM: x86: drop fpu_activate hook Wanpeng Li
2014-08-18 10:20   ` Paolo Bonzini
2014-08-18 10:26     ` Avi Kivity
2014-08-18 10:51       ` Paolo Bonzini
2014-08-18 11:15         ` Avi Kivity
2014-08-18 10:52   ` Paolo Bonzini
2014-08-18  9:50 ` [PATCH 3/5] KVM: vmx: don't vmx_segment_cache_clear twice in enter_pmode Wanpeng Li
2014-08-18 10:24   ` Paolo Bonzini
2014-08-18  9:50 ` [PATCH 4/5] KVM: x86: fix check legal type of Variable Range MTRRs Wanpeng Li
2014-08-18 10:28   ` Paolo Bonzini
2014-08-18  9:50 ` [PATCH 5/5] KVM: x86: #GP when attempts to write reserved bits " Wanpeng Li
2014-08-18 12:27   ` Wanpeng Li [this message]
2014-08-18 12:49     ` Paolo Bonzini
2014-08-18 10:18 ` [PATCH 1/5] KVM: vmx: fix ept reserved bits for 1-GByte page Paolo Bonzini
2014-08-19  2:17   ` Wanpeng Li
2014-08-19  6:11     ` Paolo Bonzini
2014-08-18 10:52 ` Xiao Guangrong
2014-08-18 11:18   ` Paolo Bonzini

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=20140818122729.GA1001@kernel \
    --to=wanpeng.li@linux.intel.com \
    --cc=gleb@kernel.org \
    --cc=hpa@zytor.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=x86@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.