From: Andrew Cooper Date: Tue, 27 Sep 2016 17:21:20 +0000 (+0100) Subject: x86/vmx: Use hvm_{get,set}_segment_register() rather than vmx_{get,set}_segment_regis... X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~3354 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e4d0bc1e8bccb987fb70471704f4605a20bf6ecc;p=xen.git x86/vmx: Use hvm_{get,set}_segment_register() rather than vmx_{get,set}_segment_register() No functional change at this point, but this is a prerequisite for forthcoming functional changes. Make vmx_get_segment_register() private to vmx.c like all the other Vendor get/set functions. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Reviewed-by: George Dunlap Acked-by: Kevin Tian --- diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index d4a5027714..06dd46b73f 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -940,8 +940,8 @@ static void vmx_ctxt_switch_to(struct vcpu *v) .fields = { .type = 0xb, .s = 0, .dpl = 0, .p = 1, .avl = 0, \ .l = 0, .db = 0, .g = 0, .pad = 0 } }).bytes) -void vmx_get_segment_register(struct vcpu *v, enum x86_segment seg, - struct segment_register *reg) +static void vmx_get_segment_register(struct vcpu *v, enum x86_segment seg, + struct segment_register *reg) { unsigned long attr = 0, sel = 0, limit; @@ -1444,19 +1444,19 @@ static void vmx_update_guest_cr(struct vcpu *v, unsigned int cr) * Need to read them all either way, as realmode reads can update * the saved values we'll use when returning to prot mode. */ for ( s = 0; s < ARRAY_SIZE(reg); s++ ) - vmx_get_segment_register(v, s, ®[s]); + hvm_get_segment_register(v, s, ®[s]); v->arch.hvm_vmx.vmx_realmode = realmode; if ( realmode ) { for ( s = 0; s < ARRAY_SIZE(reg); s++ ) - vmx_set_segment_register(v, s, ®[s]); + hvm_set_segment_register(v, s, ®[s]); } else { for ( s = 0; s < ARRAY_SIZE(reg); s++ ) if ( !(v->arch.hvm_vmx.vm86_segment_mask & (1<arch.hvm_vmx.vm86_saved_seg[s]); } @@ -3847,7 +3847,7 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) gdprintk(XENLOG_WARNING, "Bad vmexit (reason %#lx)\n", exit_reason); - vmx_get_segment_register(v, x86_seg_ss, &ss); + hvm_get_segment_register(v, x86_seg_ss, &ss); if ( ss.attr.fields.dpl ) hvm_inject_hw_exception(TRAP_invalid_op, X86_EVENT_NO_EC); @@ -3879,7 +3879,7 @@ out: gprintk(XENLOG_WARNING, "Bad rIP %lx for mode %u\n", regs->rip, mode); - vmx_get_segment_register(v, x86_seg_ss, &ss); + hvm_get_segment_register(v, x86_seg_ss, &ss); if ( ss.attr.fields.dpl ) { __vmread(VM_ENTRY_INTR_INFO, &intr_info); diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index efaf54c37e..bcc4a97322 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -360,7 +360,7 @@ static int vmx_inst_check_privilege(struct cpu_user_regs *regs, int vmxop_check) else if ( !vcpu_2_nvmx(v).vmxon_region_pa ) goto invalid_op; - vmx_get_segment_register(v, x86_seg_cs, &cs); + hvm_get_segment_register(v, x86_seg_cs, &cs); if ( (regs->eflags & X86_EFLAGS_VM) || (hvm_long_mode_enabled(v) && cs.attr.fields.l == 0) ) @@ -419,13 +419,13 @@ static int decode_vmx_inst(struct cpu_user_regs *regs, if ( hvm_long_mode_enabled(v) ) { - vmx_get_segment_register(v, x86_seg_cs, &seg); + hvm_get_segment_register(v, x86_seg_cs, &seg); mode_64bit = seg.attr.fields.l; } if ( info.fields.segment > VMX_SREG_GS ) goto gp_fault; - vmx_get_segment_register(v, sreg_to_index[info.fields.segment], &seg); + hvm_get_segment_register(v, sreg_to_index[info.fields.segment], &seg); seg_base = seg.base; base = info.fields.base_reg_invalid ? 0 : diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h b/xen/include/asm-x86/hvm/vmx/vmx.h index 4cdd9b1d9f..0e5902d10b 100644 --- a/xen/include/asm-x86/hvm/vmx/vmx.h +++ b/xen/include/asm-x86/hvm/vmx/vmx.h @@ -550,8 +550,6 @@ static inline int __vmxon(u64 addr) return rc; } -void vmx_get_segment_register(struct vcpu *, enum x86_segment, - struct segment_register *); void vmx_inject_extint(int trap, uint8_t source); void vmx_inject_nmi(void);