Merge tag 'mtd/for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux
[linux-2.6-microblaze.git] / fs / proc / task_mmu.c
index 66965ad..eb97468 100644 (file)
@@ -514,10 +514,8 @@ static void smaps_pte_entry(pte_t *pte, unsigned long addr,
                        } else {
                                mss->swap_pss += (u64)PAGE_SIZE << PSS_SHIFT;
                        }
-               } else if (is_migration_entry(swpent))
-                       page = migration_entry_to_page(swpent);
-               else if (is_device_private_entry(swpent))
-                       page = device_private_entry_to_page(swpent);
+               } else if (is_pfn_swap_entry(swpent))
+                       page = pfn_swap_entry_to_page(swpent);
        } else if (unlikely(IS_ENABLED(CONFIG_SHMEM) && mss->check_shmem_swap
                                                        && pte_none(*pte))) {
                page = xa_load(&vma->vm_file->f_mapping->i_pages,
@@ -549,7 +547,7 @@ static void smaps_pmd_entry(pmd_t *pmd, unsigned long addr,
                swp_entry_t entry = pmd_to_swp_entry(*pmd);
 
                if (is_migration_entry(entry))
-                       page = migration_entry_to_page(entry);
+                       page = pfn_swap_entry_to_page(entry);
        }
        if (IS_ERR_OR_NULL(page))
                return;
@@ -694,10 +692,8 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned long hmask,
        } else if (is_swap_pte(*pte)) {
                swp_entry_t swpent = pte_to_swp_entry(*pte);
 
-               if (is_migration_entry(swpent))
-                       page = migration_entry_to_page(swpent);
-               else if (is_device_private_entry(swpent))
-                       page = device_private_entry_to_page(swpent);
+               if (is_pfn_swap_entry(swpent))
+                       page = pfn_swap_entry_to_page(swpent);
        }
        if (page) {
                int mapcount = page_mapcount(page);
@@ -832,7 +828,7 @@ static int show_smap(struct seq_file *m, void *v)
        __show_smap(m, &mss, false);
 
        seq_printf(m, "THPeligible:    %d\n",
-                  transparent_hugepage_enabled(vma));
+                  transparent_hugepage_active(vma));
 
        if (arch_pkeys_enabled())
                seq_printf(m, "ProtectionKey:  %8u\n", vma_pkey(vma));
@@ -1302,6 +1298,7 @@ struct pagemapread {
 #define PM_PFRAME_MASK         GENMASK_ULL(PM_PFRAME_BITS - 1, 0)
 #define PM_SOFT_DIRTY          BIT_ULL(55)
 #define PM_MMAP_EXCLUSIVE      BIT_ULL(56)
+#define PM_UFFD_WP             BIT_ULL(57)
 #define PM_FILE                        BIT_ULL(61)
 #define PM_SWAP                        BIT_ULL(62)
 #define PM_PRESENT             BIT_ULL(63)
@@ -1375,20 +1372,21 @@ static pagemap_entry_t pte_to_pagemap_entry(struct pagemapread *pm,
                page = vm_normal_page(vma, addr, pte);
                if (pte_soft_dirty(pte))
                        flags |= PM_SOFT_DIRTY;
+               if (pte_uffd_wp(pte))
+                       flags |= PM_UFFD_WP;
        } else if (is_swap_pte(pte)) {
                swp_entry_t entry;
                if (pte_swp_soft_dirty(pte))
                        flags |= PM_SOFT_DIRTY;
+               if (pte_swp_uffd_wp(pte))
+                       flags |= PM_UFFD_WP;
                entry = pte_to_swp_entry(pte);
                if (pm->show_pfn)
                        frame = swp_type(entry) |
                                (swp_offset(entry) << MAX_SWAPFILES_SHIFT);
                flags |= PM_SWAP;
-               if (is_migration_entry(entry))
-                       page = migration_entry_to_page(entry);
-
-               if (is_device_private_entry(entry))
-                       page = device_private_entry_to_page(entry);
+               if (is_pfn_swap_entry(entry))
+                       page = pfn_swap_entry_to_page(entry);
        }
 
        if (page && !PageAnon(page))
@@ -1426,6 +1424,8 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end,
                        flags |= PM_PRESENT;
                        if (pmd_soft_dirty(pmd))
                                flags |= PM_SOFT_DIRTY;
+                       if (pmd_uffd_wp(pmd))
+                               flags |= PM_UFFD_WP;
                        if (pm->show_pfn)
                                frame = pmd_pfn(pmd) +
                                        ((addr & ~PMD_MASK) >> PAGE_SHIFT);
@@ -1444,8 +1444,10 @@ static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end,
                        flags |= PM_SWAP;
                        if (pmd_swp_soft_dirty(pmd))
                                flags |= PM_SOFT_DIRTY;
+                       if (pmd_swp_uffd_wp(pmd))
+                               flags |= PM_UFFD_WP;
                        VM_BUG_ON(!is_pmd_migration_entry(pmd));
-                       page = migration_entry_to_page(entry);
+                       page = pfn_swap_entry_to_page(entry);
                }
 #endif