WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] remove redundant call to vmx_intr_assit

To: "Keir Fraser" <Keir.Fraser@xxxxxxxxxxxx>
Subject: [Xen-devel] remove redundant call to vmx_intr_assit
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
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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
<Prev in Thread] Current Thread [Next in Thread>