diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2008-10-30 18:28:41 +0100 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-11-06 08:41:56 +0100 |
commit | 561920a0d2bb6d63343e83acfd784c0a77bd28d1 (patch) | |
tree | 7b87d9d867296d4a14e9b287129fcfd0b2cd1b47 /kernel/workqueue.c | |
parent | e78042e5b83936b1d12a4b5bbb492bdd88ad76c6 (diff) |
generic-ipi: fix the smp_mb() placement
smp_mb() is needed (to make the memory operations visible globally) before
sending the ipi on the sender and the receiver (on Alpha atleast) needs
smp_read_barrier_depends() in the handler before reading the call_single_queue
list in a lock-free fashion.
On x86, x2apic mode register accesses for sending IPI's don't have serializing
semantics. So the need for smp_mb() before sending the IPI becomes more
critical in x2apic mode.
Remove the unnecessary smp_mb() in csd_flag_wait(), as the presence of that
smp_mb() doesn't mean anything on the sender, when the ipi receiver is not
doing any thing special (like memory fence) after clearing the CSD_FLAG_WAIT.
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'kernel/workqueue.c')
0 files changed, 0 insertions, 0 deletions