diff options
| author | Zhang, Yanmin <[email protected]> | 2006-03-22 00:08:50 -0800 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2006-03-22 07:54:03 -0800 |
| commit | 8f860591ffb29738cf5539b6fbf27f50dcdeb380 (patch) | |
| tree | 4265e45c4a79d86a16cd5175a836e8c531be8117 /scripts | |
| parent | aed75ff3caafce404d9be7f0c088716375be5279 (diff) | |
[PATCH] Enable mprotect on huge pages
2.6.16-rc3 uses hugetlb on-demand paging, but it doesn_t support hugetlb
mprotect.
From: David Gibson <[email protected]>
Remove a test from the mprotect() path which checks that the mprotect()ed
range on a hugepage VMA is hugepage aligned (yes, really, the sense of
is_aligned_hugepage_range() is the opposite of what you'd guess :-/).
In fact, we don't need this test. If the given addresses match the
beginning/end of a hugepage VMA they must already be suitably aligned. If
they don't, then mprotect_fixup() will attempt to split the VMA. The very
first test in split_vma() will check for a badly aligned address on a
hugepage VMA and return -EINVAL if necessary.
From: "Chen, Kenneth W" <[email protected]>
On i386 and x86-64, pte flag _PAGE_PSE collides with _PAGE_PROTNONE. The
identify of hugetlb pte is lost when changing page protection via mprotect.
A page fault occurs later will trigger a bug check in huge_pte_alloc().
The fix is to always make new pte a hugetlb pte and also to clean up
legacy code where _PAGE_PRESENT is forced on in the pre-faulting day.
Signed-off-by: Zhang Yanmin <[email protected]>
Cc: David Gibson <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: William Lee Irwin III <[email protected]>
Signed-off-by: Ken Chen <[email protected]>
Signed-off-by: Nishanth Aravamudan <[email protected]>
Cc: Andi Kleen <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions