summaryrefslogtreecommitdiffstats
path: root/kernel/power
diff options
context:
space:
mode:
authorRoland Dreier <rolandd@cisco.com>2008-04-23 11:55:45 -0700
committerRoland Dreier <rolandd@cisco.com>2008-04-23 11:55:45 -0700
commit31d1e340f0e8d53804d737571b2f2bb28a74ecc5 (patch)
tree4a6c6c4dc67950e4218fded511b939e148f857d1 /kernel/power
parentf5b3a096b138940f283907debe9bde6c6f40ebf3 (diff)
downloadkernel-crypto-31d1e340f0e8d53804d737571b2f2bb28a74ecc5.tar.gz
kernel-crypto-31d1e340f0e8d53804d737571b2f2bb28a74ecc5.tar.xz
kernel-crypto-31d1e340f0e8d53804d737571b2f2bb28a74ecc5.zip
RDMA/nes: Remove volatile qualifier from struct nes_hw_cq.cq_vbase
Remove the volatile qualifier from the cq_vbase member of struct nes_hw_cq, and add an rmb() in the one place where it looks like access order might make a difference. As usual, removing a volatile qualifier in a declaration is actually a bug fix, since a volatile qualifier is not sufficient to make sure that aggressively out-of-order CPUs don't reorder things and cause incorrect results. For example, a CPU might speculatively execute reads of other cqe fields before the NIC hardware has written those fields and before it has set the NES_CQE_VALID bit (even though those reads come after the test of the NES_CQE_VALID bit in program order), but then when the CPU actually executes the conditional test of the NES_CQE_VALID, the bit has been set, and the CPU will proceed with the results of the earlier speculative execution and end up using bogus data. This also gets rid of the warning: drivers/infiniband/hw/nes/nes_verbs.c: In function 'nes_destroy_cq': drivers/infiniband/hw/nes/nes_verbs.c:1978: warning: passing argument 3 of 'pci_free_consistent' discards qualifiers from pointer target type Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'kernel/power')
0 files changed, 0 insertions, 0 deletions