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

[Xen-changelog] [xen-unstable] x86 iommu: Better synchronisation on dirq_mask.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1208861201 -3600
# Node ID ee2f56063f5c6442b60de439b8a204076409b461
# Parent  1cc4df5c7fe8b34de2a3258f1cafec94540d1712
x86 iommu: Better synchronisation on dirq_mask.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 xen/arch/x86/hvm/svm/intr.c |    4 +++-
 xen/arch/x86/hvm/vmx/intr.c |    4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff -r 1cc4df5c7fe8 -r ee2f56063f5c xen/arch/x86/hvm/svm/intr.c
--- a/xen/arch/x86/hvm/svm/intr.c       Tue Apr 22 11:44:56 2008 +0100
+++ b/xen/arch/x86/hvm/svm/intr.c       Tue Apr 22 11:46:41 2008 +0100
@@ -109,8 +109,10 @@ static void svm_dirq_assist(struct vcpu 
           irq < NR_IRQS;
           irq = find_next_bit(hvm_irq_dpci->dirq_mask, NR_IRQS, irq + 1) )
     {
+        if ( !test_and_clear_bit(irq, &hvm_irq_dpci->dirq_mask) )
+            continue;
+
         stop_timer(&hvm_irq_dpci->hvm_timer[irq_to_vector(irq)]);
-        clear_bit(irq, &hvm_irq_dpci->dirq_mask);
 
         list_for_each_entry ( digl, &hvm_irq_dpci->mirq[irq].digl_list, list )
         {
diff -r 1cc4df5c7fe8 -r ee2f56063f5c xen/arch/x86/hvm/vmx/intr.c
--- a/xen/arch/x86/hvm/vmx/intr.c       Tue Apr 22 11:44:56 2008 +0100
+++ b/xen/arch/x86/hvm/vmx/intr.c       Tue Apr 22 11:46:41 2008 +0100
@@ -118,8 +118,10 @@ static void vmx_dirq_assist(struct vcpu 
           irq < NR_IRQS;
           irq = find_next_bit(hvm_irq_dpci->dirq_mask, NR_IRQS, irq + 1) )
     {
+        if ( !test_and_clear_bit(irq, &hvm_irq_dpci->dirq_mask) )
+            continue;
+
         stop_timer(&hvm_irq_dpci->hvm_timer[irq_to_vector(irq)]);
-        clear_bit(irq, &hvm_irq_dpci->dirq_mask);
 
         list_for_each_entry ( digl, &hvm_irq_dpci->mirq[irq].digl_list, list )
         {

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


 


Rackspace

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