"Convert" hugetlbfs to use vm_ops->fault()
Subsystems (2)
PATCH 1/1 "Convert" hugetlbfs to use vm_ops->fault()
Hi Andrew, I discovered that 2.6.21-rc5-mm1 was oopsing my box when running the libhugetlbfs test suite. The trouble led me once again to shm stacked files ;-) The stacked mmap function is labeling the lack of a ->fault() vm_op a BUG() which is probably a good idea. It isn't really a problem for hugetlbfs though, since our faults are handled by an explicit hook in __handle_mm_fault(). Rather than removing the BUG(), just convert the hugetlbfs ->nopage() placeholder to a ->fault() one which helps us get one step closer to removing the nopage vm_op anyway.
---
mm/hugetlb.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-)
mm/hugetlb.c +6 -7
@@ -291,20 +291,19 @@ unsigned long hugetlb_total_pages(void) }/* -* We cannot handle pagefaults against hugetlb pages at all. They cause -* handle_mm_fault() to try to instantiate regular-sized pages in the -* hugegpage VMA. do_page_fault() is supposed to trap this, so BUG is we get -* this far. +* Hugetlb faults are serviced in __handle_mm_fault by explicitly calling +* hugetlb_fault. Therefore the vm_ops->fault() op for hugetlb pages +* should never be called. */ -static struct page *hugetlb_nopage (struct vm_area_struct *vma, -unsigned long address,int *unused) +static struct page *hugetlb_vm_op_fault (struct vm_area_struct *vma, +struct fault_data *fdata) {BUG ();return NULL ; }struct vm_operations_struct hugetlb_vm_ops = { - .nopage = hugetlb_nopage, + .fault = hugetlb_vm_op_fault, }; static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page,
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 8 lines · Adam Litke
Hi Andrew, I discovered that 2.6.21-rc5-mm1 was oopsing my box when running the libhugetlbfs test suite. The trouble led me once again to shm stacked files ;-) The stacked mmap function is labeling the lack of a ->fault()
vm_opaBUG()which is probably a good idea. It isn't really a problem for hugetlbfs though, since our faults are handled by an explicit hook in__handle_mm_fault(). Rather than removing theBUG(), just convert the hugetlbfs ->nopage() placeholder to a ->fault() one which helps us get one step closer to removing the nopagevm_opanyway.
Thanks Adam. I thought I'd done hugetlb... oh well.
Quoted 2 lines
Signed-off-by Adam Litke <[email protected]>
Signature · 7 lines
SUSE Labs, Novell Inc. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>