Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/mm/huge_memory.c b/mm/huge_memory.c
- index 817a875..fe1a16b 100644
- --- a/mm/huge_memory.c
- +++ b/mm/huge_memory.c
- @@ -804,30 +804,33 @@ int do_huge_pmd_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
- return VM_FAULT_OOM;
- if (unlikely(khugepaged_enter(vma, vma->vm_flags)))
- return VM_FAULT_OOM;
- - if (!(flags & FAULT_FLAG_WRITE) && !mm_forbids_zeropage(mm) &&
- - transparent_hugepage_use_zero_page()) {
- + if (!(flags & FAULT_FLAG_WRITE) && !mm_forbids_zeropage(mm)) {
- spinlock_t *ptl;
- pgtable_t pgtable;
- struct page *zero_page;
- - bool set;
- + /* bool set; */
- pgtable = pte_alloc_one(mm, haddr);
- + pr_info("read-fault, vm_start = %04lx\n", vma->vm_start);
- if (unlikely(!pgtable))
- return VM_FAULT_OOM;
- - zero_page = get_huge_zero_page();
- + /* zero_page = get_huge_zero_page(); */
- + zero_page = get_zeroed_page(GFP_KERNEL);
- + pr_info("zero-page allocated\n");
- if (unlikely(!zero_page)) {
- pte_free(mm, pgtable);
- count_vm_event(THP_FAULT_FALLBACK);
- return VM_FAULT_FALLBACK;
- }
- ptl = pmd_lock(mm, pmd);
- - set = set_huge_zero_page(pgtable, mm, vma, haddr, pmd,
- - zero_page);
- + /*set = set_huge_zero_page(pgtable, mm, vma, haddr, pmd,
- + zero_page); */
- spin_unlock(ptl);
- - if (!set) {
- + /*if (!set) {
- pte_free(mm, pgtable);
- put_huge_zero_page();
- - }
- - return 0;
- + }*/
- + /* return 0; */
- + return VM_FAULT_FALLBACK;
- }
- page = alloc_hugepage_vma(transparent_hugepage_defrag(vma),
- vma, haddr, numa_node_id(), 0);
- diff --git a/mm/memory.c b/mm/memory.c
- index 54f3a9b..5259d2f 100644
- --- a/mm/memory.c
- +++ b/mm/memory.c
- @@ -756,8 +756,13 @@ struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr,
- goto check_pfn;
- if (vma->vm_flags & (VM_PFNMAP | VM_MIXEDMAP))
- return NULL;
- - if (!is_zero_pfn(pfn))
- + if (!is_zero_pfn(pfn)) {
- + pr_info("vm_start = %04lx, !is_zero_pfn, have_pte_special, pid = %d\n", vma->vm_start, current->pid);
- print_bad_pte(vma, addr, pte, NULL);
- + pr_info("printed zero page\n");
- + } else {
- + pr_info("vm_start = %04lx, is_zero_pfn, have_pte_special, pid = %d\n",vma->vm_start, current->pid);
- + }
- return NULL;
- }
- @@ -778,8 +783,10 @@ struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr,
- }
- }
- - if (is_zero_pfn(pfn))
- + if (is_zero_pfn(pfn)) {
- + pr_info("vm_start = %04lx, is_zero_pfn, don't have pte special, pid = %d\n", vma->vm_start, current->pid);
- return NULL;
- + }
- check_pfn:
- if (unlikely(pfn > highest_memmap_pfn)) {
- print_bad_pte(vma, addr, pte, NULL);
Advertisement
Add Comment
Please, Sign In to add comment