Keir: This patch is used to remove redundant call to vmx_intr_assit when a domain switch happen due to VM_EXIT. Thx,eddie # HG changeset patch # User root@vt-build.sh.intel.com # Node ID 2db140c256195ae15b98d2ca38e20e768418eef4 # Parent 99914b54f7bffc8c27757a1ac2bc7a0d97597ac8 remove dual invoke of vmx_intr_assit when VM_EXIT cause domain switch. signed-off-by Eddie (eddie.dong@intel.com) signed-off-by Edwin (edwin.zhai@intel.com) diff -r 99914b54f7bf -r 2db140c25619 xen/arch/x86/vmx.c --- a/xen/arch/x86/vmx.c Thu Aug 18 18:40:02 2005 +++ b/xen/arch/x86/vmx.c Mon Aug 22 08:09:17 2005 @@ -1713,7 +1713,6 @@ __vmx_bug(®s); /* should not happen */ } - vmx_intr_assist(v); return; } diff -r 99914b54f7bf -r 2db140c25619 xen/arch/x86/vmx_io.c --- a/xen/arch/x86/vmx_io.c Thu Aug 18 18:40:02 2005 +++ b/xen/arch/x86/vmx_io.c Mon Aug 22 08:09:17 2005 @@ -631,12 +631,14 @@ return ((eflags & X86_EFLAGS_IF) == 0); } -void vmx_intr_assist(struct vcpu *v) +asmlinkage void vmx_intr_assist() { int intr_type = 0; - int highest_vector = find_highest_pending_irq(v, &intr_type); + int highest_vector; unsigned long intr_fields, eflags, interruptibility, cpu_exec_control; - + struct vcpu *v = current; + + highest_vector = find_highest_pending_irq(v, &intr_type); __vmread(CPU_BASED_VM_EXEC_CONTROL, &cpu_exec_control); if (highest_vector == -1) { @@ -714,7 +716,6 @@ ASSERT(!test_bit(ARCH_VMX_IO_WAIT, &d->arch.arch_vmx.flags)); /* We always check for interrupts before resuming guest */ - vmx_intr_assist(d); } #endif /* CONFIG_VMX */ diff -r 99914b54f7bf -r 2db140c25619 xen/arch/x86/x86_32/entry.S --- a/xen/arch/x86/x86_32/entry.S Thu Aug 18 18:40:02 2005 +++ b/xen/arch/x86/x86_32/entry.S Mon Aug 22 08:09:17 2005 @@ -140,6 +140,7 @@ jnz 2f /* vmx_restore_all_guest */ + call vmx_intr_assist call load_cr2 .endif VMX_RESTORE_ALL_NOSEGREGS diff -r 99914b54f7bf -r 2db140c25619 xen/arch/x86/x86_64/entry.S --- a/xen/arch/x86/x86_64/entry.S Thu Aug 18 18:40:02 2005 +++ b/xen/arch/x86/x86_64/entry.S Mon Aug 22 08:09:17 2005 @@ -233,6 +233,7 @@ jnz 2f /* vmx_restore_all_guest */ + call vmx_intr_assist call load_cr2 .endif /* diff -r 99914b54f7bf -r 2db140c25619 xen/include/asm-x86/vmx.h --- a/xen/include/asm-x86/vmx.h Thu Aug 18 18:40:02 2005 +++ b/xen/include/asm-x86/vmx.h Mon Aug 22 08:09:17 2005 @@ -31,7 +31,7 @@ extern void vmx_asm_vmexit_handler(struct cpu_user_regs); extern void vmx_asm_do_resume(void); extern void vmx_asm_do_launch(void); -extern void vmx_intr_assist(struct vcpu *d); +extern void vmx_intr_assist(); extern void arch_vmx_do_launch(struct vcpu *); extern void arch_vmx_do_resume(struct vcpu *); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
David Hopwood
2005-Aug-23 05:05 UTC
Re: [Xen-devel] remove redundant call to vmx_intr_assit
Dong, Eddie wrote:> @@ -714,7 +716,6 @@ > ASSERT(!test_bit(ARCH_VMX_IO_WAIT, &d->arch.arch_vmx.flags)); > > /* We always check for interrupts before resuming guest */ > - vmx_intr_assist(d); > }The comment here should also be removed. -- David Hopwood <david.nospam.hopwood@blueyonder.co.uk> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
David Hopwood wrote:> Dong, Eddie wrote: >> @@ -714,7 +716,6 @@ >> ASSERT(!test_bit(ARCH_VMX_IO_WAIT, &d->arch.arch_vmx.flags)); >> >> /* We always check for interrupts before resuming guest */ - >> vmx_intr_assist(d); } > > The comment here should also be removed.Sure! _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel