virtio: remove bogus barriers from DEBUG version of virtio_ring.c
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 24 Feb 2010 20:22:22 +0000 (14:22 -0600)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 24 Feb 2010 03:52:24 +0000 (14:22 +1030)
With DEBUG defined, we add an ->in_use flag to detect if the caller
invokes two virtio methods in parallel.  The barriers attempt to ensure
timely update of the ->in_use flag.

But they're voodoo: if we need these barriers it implies that the
calling code doesn't have sufficient synchronization to ensure the
code paths aren't invoked at the same time anyway, and we want to
detect it.

Also, adding barriers changes timing, so turning on debug has more
chance of hiding real problems.

Thanks to MST for drawing my attention to this code...

CC: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/virtio/virtio_ring.c

index fbd2ecde93e409ea9287d068d3f2322297c910cc..1ee97d402a48e1d39079760a4571fc1a1d549d98 100644 (file)
                        panic("%s:in_use = %i\n",               \
                              (_vq)->vq.name, (_vq)->in_use);   \
                (_vq)->in_use = __LINE__;                       \
-               mb();                                           \
        } while (0)
 #define END_USE(_vq) \
-       do { BUG_ON(!(_vq)->in_use); (_vq)->in_use = 0; mb(); } while(0)
+       do { BUG_ON(!(_vq)->in_use); (_vq)->in_use = 0; } while(0)
 #else
 #define BAD_RING(_vq, fmt, args...)                            \
        do {                                                    \