summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/aim
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2012-04-24 13:36:41 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2012-04-24 13:36:41 +0000
commitd5494b21d8777f15bcd6c25eb7badcf146b45713 (patch)
tree1e99781690252ae8f46a6d50d93f554fd6aabe24 /sys/powerpc/aim
parent9377bab13ff8998d97abdb55ba71997295190b87 (diff)
downloadFreeBSD-src-d5494b21d8777f15bcd6c25eb7badcf146b45713.zip
FreeBSD-src-d5494b21d8777f15bcd6c25eb7badcf146b45713.tar.gz
Revert r234581 for this file. The lockless SLB tree code does in fact need
a heavyweight sync instead of a lightweight sync to function properly. Thanks to mdf for the clarification.
Diffstat (limited to 'sys/powerpc/aim')
-rw-r--r--sys/powerpc/aim/slb.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/powerpc/aim/slb.c b/sys/powerpc/aim/slb.c
index 162c7fb..7f4b2ef 100644
--- a/sys/powerpc/aim/slb.c
+++ b/sys/powerpc/aim/slb.c
@@ -139,7 +139,7 @@ make_new_leaf(uint64_t esid, uint64_t slbv, struct slbtnode *parent)
* that a lockless searcher always sees a valid path through
* the tree.
*/
- mb();
+ powerpc_sync();
idx = esid2idx(esid, parent->ua_level);
parent->u.ua_child[idx] = child;
@@ -187,7 +187,7 @@ make_intermediate(uint64_t esid, struct slbtnode *parent)
idx = esid2idx(child->ua_base, inter->ua_level);
inter->u.ua_child[idx] = child;
setbit(&inter->ua_alloc, idx);
- mb();
+ powerpc_sync();
/* Set up parent to point to intermediate node ... */
idx = esid2idx(inter->ua_base, parent->ua_level);
OpenPOWER on IntegriCloud