diff options
author | nwhitehorn <nwhitehorn@FreeBSD.org> | 2012-04-24 13:36:41 +0000 |
---|---|---|
committer | nwhitehorn <nwhitehorn@FreeBSD.org> | 2012-04-24 13:36:41 +0000 |
commit | d5494b21d8777f15bcd6c25eb7badcf146b45713 (patch) | |
tree | 1e99781690252ae8f46a6d50d93f554fd6aabe24 /sys/powerpc/aim | |
parent | 9377bab13ff8998d97abdb55ba71997295190b87 (diff) | |
download | FreeBSD-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.c | 4 |
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); |