[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] remove redundant call to vmx_intr_assit


  • To: "Keir Fraser" <Keir.Fraser@xxxxxxxxxxxx>
  • From: "Dong, Eddie" <eddie.dong@xxxxxxxxx>
  • Date: Tue, 23 Aug 2005 12:39:34 +0800
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
  • Delivery-date: Tue, 23 Aug 2005 04:38:42 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: AcWhh6HyLORJbijURVSsfaTZS/DCcwGFIIWA
  • Thread-topic: remove redundant call to vmx_intr_assit

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@xxxxxxxxxxxxxxxxxxxxx
# Node ID 2db140c256195ae15b98d2ca38e20e768418eef4
# Parent  99914b54f7bffc8c27757a1ac2bc7a0d97597ac8
remove dual invoke of vmx_intr_assit when VM_EXIT cause domain switch.
signed-off-by    Eddie (eddie.dong@xxxxxxxxx)
signed-off-by    Edwin (edwin.zhai@xxxxxxxxx)

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(&regs);       /* 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 *);

Attachment: remove_intr_dual_invoke.patch
Description: remove_intr_dual_invoke.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.