From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v2 1/4] SVM: use VMCB accessors Date: Wed, 07 Jun 2017 08:04:12 -0600 Message-ID: <593823FC02000078001606C0@prv-mh.provo.novell.com> References: <593822A3020000780016069F@prv-mh.provo.novell.com> <593822A3020000780016069F@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__PartC2FAAECC.2__=" Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dIbZL-0004y3-9e for xen-devel@lists.xenproject.org; Wed, 07 Jun 2017 14:04:19 +0000 In-Reply-To: <593822A3020000780016069F@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel Cc: Andrew Cooper , Boris Ostrovsky , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__PartC2FAAECC.2__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline This is particularly relevant for the SET form, to ensure proper clean bits tracking (albeit in the case here it's benign as CPL and other segment register attributes share a clean bit). Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- unstable.orig/xen/arch/x86/hvm/svm/svm.c 2017-05-24 11:52:44.9762844= 14 +0200 +++ unstable/xen/arch/x86/hvm/svm/svm.c 2017-04-18 11:25:44.000000000 = +0200 @@ -653,7 +653,7 @@ static void svm_get_segment_register(str break; case x86_seg_ss: *reg =3D vmcb->ss; - reg->attr.fields.dpl =3D vmcb->_cpl; + reg->attr.fields.dpl =3D vmcb_get_cpl(vmcb); break; case x86_seg_tr: svm_sync_vmcb(v); @@ -726,7 +726,7 @@ static void svm_set_segment_register(str break; case x86_seg_ss: vmcb->ss =3D *reg; - vmcb->_cpl =3D vmcb->ss.attr.fields.dpl; + vmcb_set_cpl(vmcb, reg->attr.fields.dpl); break; case x86_seg_tr: vmcb->tr =3D *reg; @@ -1442,7 +1442,7 @@ static void svm_inject_event(const struc * If injecting an event outside of 64bit mode, zero the upper bits = of the * %eip and nextrip after the adjustments above. */ - if ( !((vmcb->_efer & EFER_LMA) && vmcb->cs.attr.fields.l) ) + if ( !((vmcb_get_efer(vmcb) & EFER_LMA) && vmcb->cs.attr.fields.l) ) { regs->rip =3D regs->eip; vmcb->nextrip =3D (uint32_t)vmcb->nextrip; --=__PartC2FAAECC.2__= Content-Type: text/plain; name="SVM-use-accessors.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="SVM-use-accessors.patch" SVM: use VMCB accessors=0A=0AThis is particularly relevant for the SET = form, to ensure proper clean=0Abits tracking (albeit in the case here it's = benign as CPL and other=0Asegment register attributes share a clean = bit).=0A=0ASigned-off-by: Jan Beulich =0AReviewed-by: = Andrew Cooper =0A=0A--- unstable.orig/xen/arch/x= 86/hvm/svm/svm.c 2017-05-24 11:52:44.976284414 +0200=0A+++ = unstable/xen/arch/x86/hvm/svm/svm.c 2017-04-18 11:25:44.000000000 = +0200=0A@@ -653,7 +653,7 @@ static void svm_get_segment_register(str=0A = break;=0A case x86_seg_ss:=0A *reg =3D vmcb->ss;=0A- = reg->attr.fields.dpl =3D vmcb->_cpl;=0A+ reg->attr.fields.dpl =3D = vmcb_get_cpl(vmcb);=0A break;=0A case x86_seg_tr:=0A = svm_sync_vmcb(v);=0A@@ -726,7 +726,7 @@ static void svm_set_segment_registe= r(str=0A break;=0A case x86_seg_ss:=0A vmcb->ss =3D = *reg;=0A- vmcb->_cpl =3D vmcb->ss.attr.fields.dpl;=0A+ = vmcb_set_cpl(vmcb, reg->attr.fields.dpl);=0A break;=0A case = x86_seg_tr:=0A vmcb->tr =3D *reg;=0A@@ -1442,7 +1442,7 @@ static = void svm_inject_event(const struc=0A * If injecting an event outside = of 64bit mode, zero the upper bits of the=0A * %eip and nextrip after = the adjustments above.=0A */=0A- if ( !((vmcb->_efer & EFER_LMA) = && vmcb->cs.attr.fields.l) )=0A+ if ( !((vmcb_get_efer(vmcb) & = EFER_LMA) && vmcb->cs.attr.fields.l) )=0A {=0A regs->rip =3D = regs->eip;=0A vmcb->nextrip =3D (uint32_t)vmcb->nextrip;=0A --=__PartC2FAAECC.2__= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --=__PartC2FAAECC.2__=--