From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH v7 10/15] nEPT: Add nEPT violation/misconfigration support Date: Tue, 06 Aug 2013 10:01:55 +0200 Message-ID: <5200AD73.90402@web.de> References: <1375690040-5764-1-git-send-email-gleb@redhat.com> <1375690040-5764-11-git-send-email-gleb@redhat.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="9pSX9iF0SnTlToi9Oqu5f136XlCifjmHW" Cc: kvm@vger.kernel.org, Xiao Guangrong , Jun Nakajima , Yang Zhang , pbonzini@redhat.com To: Gleb Natapov Return-path: Received: from mout.web.de ([212.227.15.4]:53986 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752706Ab3HFIB7 (ORCPT ); Tue, 6 Aug 2013 04:01:59 -0400 Received: from mchn199C.mchp.siemens.de ([95.157.58.223]) by smtp.web.de (mrweb003) with ESMTPSA (Nemesis) id 0LzbAA-1WB4rO3Rdi-014m1Y for ; Tue, 06 Aug 2013 10:01:57 +0200 In-Reply-To: <1375690040-5764-11-git-send-email-gleb@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --9pSX9iF0SnTlToi9Oqu5f136XlCifjmHW Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable On 2013-08-05 10:07, Gleb Natapov wrote: > From: Yang Zhang >=20 > Inject nEPT fault to L1 guest. This patch is original from Xinhao. >=20 > Reviewed-by: Xiao Guangrong > Signed-off-by: Jun Nakajima > Signed-off-by: Xinhao Xu > Signed-off-by: Yang Zhang > Signed-off-by: Gleb Natapov > --- > arch/x86/include/asm/kvm_host.h | 4 +++ > arch/x86/kvm/mmu.c | 61 +++++++++++++++++++++++++++++++= +------- > arch/x86/kvm/paging_tmpl.h | 25 ++++++++++++++-- > arch/x86/kvm/vmx.c | 19 ++++++++++++ > 4 files changed, 95 insertions(+), 14 deletions(-) >=20 > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm= _host.h > index 531f47c..58a17c0 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -286,6 +286,7 @@ struct kvm_mmu { > u64 *pae_root; > u64 *lm_root; > u64 rsvd_bits_mask[2][4]; > + u64 bad_mt_xwr; > =20 > /* > * Bitmap: bit set =3D last pte in walk > @@ -512,6 +513,9 @@ struct kvm_vcpu_arch { > * instruction. > */ > bool write_fault_to_shadow_pgtable; > + > + /* set at EPT violation at this point */ > + unsigned long exit_qualification; > }; > =20 > struct kvm_lpage_info { > diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c > index a512ecf..f2d982d 100644 > --- a/arch/x86/kvm/mmu.c > +++ b/arch/x86/kvm/mmu.c > @@ -3519,6 +3519,8 @@ static void reset_rsvds_bits_mask(struct kvm_vcpu= *vcpu, > int maxphyaddr =3D cpuid_maxphyaddr(vcpu); > u64 exb_bit_rsvd =3D 0; > =20 > + context->bad_mt_xwr =3D 0; > + > if (!context->nx) > exb_bit_rsvd =3D rsvd_bits(63, 63); > switch (context->root_level) { > @@ -3574,7 +3576,40 @@ static void reset_rsvds_bits_mask(struct kvm_vcp= u *vcpu, > } > } > =20 > -static void update_permission_bitmask(struct kvm_vcpu *vcpu, struct kv= m_mmu *mmu) > +static void reset_rsvds_bits_mask_ept(struct kvm_vcpu *vcpu, > + struct kvm_mmu *context, bool execonly) > +{ > + int maxphyaddr =3D cpuid_maxphyaddr(vcpu); > + int pte; > + > + context->rsvd_bits_mask[0][3] =3D > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(3, 7); > + context->rsvd_bits_mask[0][2] =3D > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(3, 6); > + context->rsvd_bits_mask[0][1] =3D > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(3, 6); > + context->rsvd_bits_mask[0][0] =3D rsvd_bits(maxphyaddr, 51); > + > + /* large page */ > + context->rsvd_bits_mask[1][3] =3D context->rsvd_bits_mask[0][3]; > + context->rsvd_bits_mask[1][2] =3D > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(12, 29); > + context->rsvd_bits_mask[1][1] =3D > + rsvd_bits(maxphyaddr, 51) | rsvd_bits(12, 20); > + context->rsvd_bits_mask[1][0] =3D context->rsvd_bits_mask[0][0]; > +=09 Here is a whitespace error (says git am). Jan --9pSX9iF0SnTlToi9Oqu5f136XlCifjmHW Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlIArXMACgkQitSsb3rl5xR3FwCgwJBao9Ff/0S5i5+t5Yp+3JQX kAsAoNCd8D4VrhvNY7VPBzmoleJUZQux =OYyW -----END PGP SIGNATURE----- --9pSX9iF0SnTlToi9Oqu5f136XlCifjmHW--