Messages in this thread | | | Subject | thp and memory barrier assumptions | From | Peter Zijlstra <> | Date | Thu, 26 Jul 2012 22:31:38 +0200 |
| |
__do_huge_pmd_anonymous_page() contains:
/* * The spinlocking to take the lru_lock inside * page_add_new_anon_rmap() acts as a full memory * barrier to be sure clear_huge_page writes become * visible after the set_pmd_at() write. */ page_add_new_anon_rmap(page, vma, haddr);
page_add_new_anon_rmap() doesn't look to actually do a LOCK+UNLOCK except for unevictable pages.
But even if it did do an unconditional LOCK+UNLOCK that doesn't make a full memory barrier, see Documentation/memory-barriers.txt.
In particular:
*A = a; LOCK UNLOCK *B = b;
may occur as:
LOCK, STORE *B, STORE *A, UNLOCK
| |