The Intel(R) Xeon Phi(TM) Processor x200 Family (codename: Knights Landing) has an erratum where a processor thread setting the Accessed or Dirty bits may not do so atomically against its checks for the Present bit. This may cause a thread (which is about to page fault) to set A and/or D, even though the Present bit had already been atomically cleared. If the PTE is used for storing a swap index or a NUMA migration index, the A bit could be misinterpreted as part of the swap type. The stray bits being set cause a software-cleared PTE to be interpreted as a swap entry. In some cases (like when the swap index ends up being for a non-existent swapfile), the kernel detects the stray value and WARN()s about it, but there is no guarantee that the kernel can always detect it. This patch causes the page unmap path in vmscan/direct reclaim to flush remote TLBs after clearing each page, and also clears the PTE again after the flush. For reclaim, this brings the behavior (and associated reclaim performance) back to what it was before Mel's changes that increased TLB flush batching. For the unmap path, this patch may force some additional flushes, but they are limited to a maximum of one per PTE page. This patch clears these stray A/D bits before releasing the pagetable lock which prevents other parts of the kernel from observing the stray bits. Andi Kleen wrote the original version of this patch, and Dave Hansen added the batching. The original version was much simpler but it did too many extra TLB flushes which killed performance. v3: huge rework to keep batching working in unmap case v2: out of line. avoid single thread flush. cover more clear cases Cc: Minchan Kim <minchan@xxxxxxxxxx> -- 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=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>