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

[Xen-changelog] Need a little more serialisation in pciback_do_op().



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 1ad06bd6832d478b18b1c1aed9886079c272aeaa
# Parent  e0f2ec5e8358ffa2ed217fa193a981aef6a47724
Need a little more serialisation in pciback_do_op().
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>

diff -r e0f2ec5e8358 -r 1ad06bd6832d 
linux-2.6-xen-sparse/drivers/xen/pciback/pciback_ops.c
--- a/linux-2.6-xen-sparse/drivers/xen/pciback/pciback_ops.c    Tue Apr 25 
18:13:39 2006 +0100
+++ b/linux-2.6-xen-sparse/drivers/xen/pciback/pciback_ops.c    Tue Apr 25 
18:22:11 2006 +0100
@@ -77,12 +77,13 @@ void pciback_do_op(void *data)
        clear_bit(_XEN_PCIF_active, (unsigned long *)&pdev->sh_info->flags);
        notify_remote_via_irq(pdev->evtchn_irq);
 
-       /* Mark that we're done */
-       wmb();
+       /* Mark that we're done. */
+       smp_mb__before_clear_bit(); /* /after/ clearing PCIF_active */
        clear_bit(_PDEVF_op_active, &pdev->flags);
+       smp_mb__after_clear_bit(); /* /before/ final check for work */
 
-       /* Check to see if the driver domain tried to start another request
-        * in between clearing _XEN_PCIF_active and clearing _PDEVF_op_active */
+       /* Check to see if the driver domain tried to start another request in
+        * between clearing _XEN_PCIF_active and clearing _PDEVF_op_active. */
        test_and_schedule_op(pdev);
 }
 

_______________________________________________
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®.