From: Keir Fraser Date: Tue, 29 Jan 2008 15:27:44 +0000 (+0000) Subject: x86: Fix HVM hypercall preemption causing guest crash. X-Git-Tag: 3.1.3-rc3~5 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=1a0dd9293fd3caa661beea80e38340fec3e12edd;p=people%2Fvhanquez%2Fxen.git x86: Fix HVM hypercall preemption causing guest crash. Signed-off-by: Yu Zhao xen-unstable changeset: 16929:128f7bc0a277375571b4817fc65bfcd14e00a7ec xen-unstable date: Tue Jan 29 11:47:42 2008 +0000 --- diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index b90079688..b4170cc2b 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1388,7 +1388,12 @@ unsigned long hypercall_create_continuation( { regs = guest_cpu_user_regs(); regs->eax = op; - regs->eip -= 2; /* re-execute 'syscall' / 'int 0x82' */ + /* + * For PV guest, we update EIP to re-execute 'syscall' / 'int 0x82'; + * HVM does not need this since 'vmcall' / 'vmmcall' is fault-like. + */ + if ( !is_hvm_vcpu(current) ) + regs->eip -= 2; /* re-execute 'syscall' / 'int 0x82' */ #ifdef __x86_64__ if ( !is_hvm_vcpu(current) ?