[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3a43a99bb4b34567bed3bfe60c9ae3533aac100d.1750075065.git-series.apopple@nvidia.com>
Date: Mon, 16 Jun 2025 21:58:14 +1000
From: Alistair Popple <apopple@...dia.com>
To: akpm@...ux-foundation.org
Cc: linux-mm@...ck.org,
Alistair Popple <apopple@...dia.com>,
gerald.schaefer@...ux.ibm.com,
dan.j.williams@...el.com,
jgg@...pe.ca,
willy@...radead.org,
david@...hat.com,
linux-kernel@...r.kernel.org,
nvdimm@...ts.linux.dev,
linux-fsdevel@...r.kernel.org,
linux-ext4@...r.kernel.org,
linux-xfs@...r.kernel.org,
jhubbard@...dia.com,
hch@....de,
zhang.lyra@...il.com,
debug@...osinc.com,
bjorn@...nel.org,
balbirs@...dia.com,
lorenzo.stoakes@...cle.com,
linux-arm-kernel@...ts.infradead.org,
loongarch@...ts.linux.dev,
linuxppc-dev@...ts.ozlabs.org,
linux-riscv@...ts.infradead.org,
linux-cxl@...r.kernel.org,
dri-devel@...ts.freedesktop.org,
John@...ves.net,
m.szyprowski@...sung.com,
Jason Gunthorpe <jgg@...dia.com>
Subject: [PATCH v2 12/14] mm: Remove PFN_MAP, PFN_SPECIAL, PFN_SG_CHAIN and PFN_SG_LAST
The PFN_MAP flag is no longer used for anything, so remove it.
The PFN_SG_CHAIN and PFN_SG_LAST flags never appear to have been
used so also remove them. The last user of PFN_SPECIAL was removed
by 653d7825c149 ("dcssblk: mark DAX broken, remove FS_DAX_LIMITED
support").
Acked-by: David Hildenbrand <david@...hat.com>
Reviewed-by: Christoph Hellwig <hch@....de>
Reviewed-by: Jason Gunthorpe <jgg@...dia.com>
Reviewed-by: Dan Williams <dan.j.williams@...el.com>
Signed-off-by: Alistair Popple <apopple@...dia.com>
---
Changes since v1:
- Moved this later in series, after PFN_DEV has been removed. This
should solve an issue reported by Marek[1] on RISC-V (and probably
Loongarch and others where pte_devmap() didn't imply pte_special())
[1] - https://lore.kernel.org/linux-mm/957c0d9d-2c37-4d5f-a8b8-8bf90cd0aedb@samsung.com/
---
include/linux/pfn_t.h | 27 ++-------------------------
mm/memory.c | 2 --
tools/testing/nvdimm/test/iomap.c | 4 ----
3 files changed, 2 insertions(+), 31 deletions(-)
diff --git a/include/linux/pfn_t.h b/include/linux/pfn_t.h
index 2869095..2c00293 100644
--- a/include/linux/pfn_t.h
+++ b/include/linux/pfn_t.h
@@ -5,23 +5,11 @@
/*
* PFN_FLAGS_MASK - mask of all the possible valid pfn_t flags
- * PFN_SG_CHAIN - pfn is a pointer to the next scatterlist entry
- * PFN_SG_LAST - pfn references a page and is the last scatterlist entry
- * PFN_MAP - pfn has a dynamic page mapping established by a device driver
- * PFN_SPECIAL - for CONFIG_FS_DAX_LIMITED builds to allow XIP, but not
- * get_user_pages
*/
#define PFN_FLAGS_MASK (((u64) (~PAGE_MASK)) << (BITS_PER_LONG_LONG - PAGE_SHIFT))
-#define PFN_SG_CHAIN (1ULL << (BITS_PER_LONG_LONG - 1))
-#define PFN_SG_LAST (1ULL << (BITS_PER_LONG_LONG - 2))
-#define PFN_MAP (1ULL << (BITS_PER_LONG_LONG - 4))
-#define PFN_SPECIAL (1ULL << (BITS_PER_LONG_LONG - 5))
#define PFN_FLAGS_TRACE \
- { PFN_SPECIAL, "SPECIAL" }, \
- { PFN_SG_CHAIN, "SG_CHAIN" }, \
- { PFN_SG_LAST, "SG_LAST" }, \
- { PFN_MAP, "MAP" }
+ { }
static inline pfn_t __pfn_to_pfn_t(unsigned long pfn, u64 flags)
{
@@ -43,7 +31,7 @@ static inline pfn_t phys_to_pfn_t(phys_addr_t addr, u64 flags)
static inline bool pfn_t_has_page(pfn_t pfn)
{
- return (pfn.val & PFN_MAP) == PFN_MAP;
+ return true;
}
static inline unsigned long pfn_t_to_pfn(pfn_t pfn)
@@ -94,15 +82,4 @@ static inline pud_t pfn_t_pud(pfn_t pfn, pgprot_t pgprot)
#endif
#endif
-#ifdef CONFIG_ARCH_HAS_PTE_SPECIAL
-static inline bool pfn_t_special(pfn_t pfn)
-{
- return (pfn.val & PFN_SPECIAL) == PFN_SPECIAL;
-}
-#else
-static inline bool pfn_t_special(pfn_t pfn)
-{
- return false;
-}
-#endif /* CONFIG_ARCH_HAS_PTE_SPECIAL */
#endif /* _LINUX_PFN_T_H_ */
diff --git a/mm/memory.c b/mm/memory.c
index f69e66d..f1d81ad 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2581,8 +2581,6 @@ static bool vm_mixed_ok(struct vm_area_struct *vma, pfn_t pfn, bool mkwrite)
/* these checks mirror the abort conditions in vm_normal_page */
if (vma->vm_flags & VM_MIXEDMAP)
return true;
- if (pfn_t_special(pfn))
- return true;
if (is_zero_pfn(pfn_t_to_pfn(pfn)))
return true;
return false;
diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c
index e431372..ddceb04 100644
--- a/tools/testing/nvdimm/test/iomap.c
+++ b/tools/testing/nvdimm/test/iomap.c
@@ -137,10 +137,6 @@ EXPORT_SYMBOL_GPL(__wrap_devm_memremap_pages);
pfn_t __wrap_phys_to_pfn_t(phys_addr_t addr, unsigned long flags)
{
- struct nfit_test_resource *nfit_res = get_nfit_res(addr);
-
- if (nfit_res)
- flags &= ~PFN_MAP;
return phys_to_pfn_t(addr, flags);
}
EXPORT_SYMBOL(__wrap_phys_to_pfn_t);
--
git-series 0.9.1
Powered by blists - more mailing lists