On 04/24/2014 03:37 AM, Mel Gorman wrote:
On Mon, Apr 21, 2014 at 11:24:26AM -0700, Dave Hansen wrote:<snip>
+This will cause us to do the global flush for more cases.
+Lowering it to 0 will disable the use of the individual flushes.
+Setting it to 1 is a very conservative setting and it should
+never need to be 0 under normal circumstances.
+
+Despite the fact that a single individual flush on x86 is
+guaranteed to flush a full 2MB, hugetlbfs always uses the full
+flushes. THP is treated exactly the same as normal memory.
+
You are the second person that told me this and I felt the manual was
unclear on this subject. I was told that it might be a documentation bug
but because this discussion was in a bar I completely failed to follow up
on it. Specifically this part in 4.10.2.3 caused me problems when I last
looked at the area.
My understanding comes from "4.10.4.2 Recommended Invalidation":
â If software modifies a paging-structure entry that identifies
the final page frame for a page number (either a PTE or a
paging-structure entry in which the PS flag is 1), it should
execute INVLPG for any linear address with a page number whose
translation uses that PTE. 2
and especially the footnote:
2. One execution of INVLPG is sufficient even for a page with
size greater than 4 KBytes.
I do agree that it's ambiguous at best. I'll go see if anybody cares to
update that bit.