Can someone please explain why it is ok for native_set_pte to assign the PTE without WRITE_ONCE() ? Couldn’t a PTE write be torn, and the PTE be prefetched in between (or even used for translation by another core)? I did not encounter this case, but it seems to me possible according to the documentation: Intel SDM 4.10.2.3 “Detail of TLB Use": "The processor may cache translations required for prefetches and for accesses ... that would never actually occur in the executed code path.” Documentation/memory-barriers.txt: "The compiler is within its rights to invent stores to a variable”. Thanks, Nadav -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href