From: Jan Beulich Date: Fri, 9 Jun 2017 12:13:24 +0000 (+0200) Subject: SVM: use VMCB accessors X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~2064 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a3f83d98d397563eef04bbc64179f961d67f66b3;p=xen.git SVM: use VMCB accessors 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 Reviewed-by: Boris Ostrovsky --- diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 178adc56b4..402e815143 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -653,7 +653,7 @@ static void svm_get_segment_register(struct vcpu *v, enum x86_segment seg, break; case x86_seg_ss: *reg = vmcb->ss; - reg->attr.fields.dpl = vmcb->_cpl; + reg->attr.fields.dpl = vmcb_get_cpl(vmcb); break; case x86_seg_tr: svm_sync_vmcb(v); @@ -726,7 +726,7 @@ static void svm_set_segment_register(struct vcpu *v, enum x86_segment seg, break; case x86_seg_ss: vmcb->ss = *reg; - vmcb->_cpl = vmcb->ss.attr.fields.dpl; + vmcb_set_cpl(vmcb, reg->attr.fields.dpl); break; case x86_seg_tr: vmcb->tr = *reg; @@ -1442,7 +1442,7 @@ static void svm_inject_event(const struct x86_event *event) * 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 = regs->eip; vmcb->nextrip = (uint32_t)vmcb->nextrip;