sched/numa: Add infrastructure for split shared/private accounting of NUMA hinting...
[firefly-linux-kernel-4.4.55.git] / mm / huge_memory.c
index 8677dbf31c2efd0c29a9c655b03ba5527f4bdf95..914216733e0a3ef72fcd6b9c1ab2022b607cc37c 100644 (file)
@@ -1282,7 +1282,7 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma,
        struct page *page;
        unsigned long haddr = addr & HPAGE_PMD_MASK;
        int page_nid = -1, this_nid = numa_node_id();
-       int target_nid;
+       int target_nid, last_nid = -1;
        bool page_locked;
        bool migrated = false;
 
@@ -1293,6 +1293,7 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma,
        page = pmd_page(pmd);
        BUG_ON(is_huge_zero_page(page));
        page_nid = page_to_nid(page);
+       last_nid = page_nid_last(page);
        count_vm_numa_event(NUMA_HINT_FAULTS);
        if (page_nid == this_nid)
                count_vm_numa_event(NUMA_HINT_FAULTS_LOCAL);
@@ -1361,7 +1362,7 @@ out:
                page_unlock_anon_vma_read(anon_vma);
 
        if (page_nid != -1)
-               task_numa_fault(page_nid, HPAGE_PMD_NR, migrated);
+               task_numa_fault(last_nid, page_nid, HPAGE_PMD_NR, migrated);
 
        return 0;
 }