From: Alistair Popple <apopple@nvidia.com>
To: akpm@linux-foundation.org
Cc: linux-mm@kvack.org, Alistair Popple <apopple@nvidia.com>,
gerald.schaefer@linux.ibm.com, dan.j.williams@intel.com,
jgg@ziepe.ca, willy@infradead.org, david@redhat.com,
linux-kernel@vger.kernel.org, nvdimm@lists.linux.dev,
linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org,
linux-xfs@vger.kernel.org, jhubbard@nvidia.com, hch@lst.de,
zhang.lyra@gmail.com, debug@rivosinc.com, bjorn@kernel.org,
balbirs@nvidia.com, lorenzo.stoakes@oracle.com,
linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev,
linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org,
linux-cxl@vger.kernel.org, dri-devel@lists.freedesktop.org,
John@Groves.net, m.szyprowski@samsung.com
Subject: [PATCH v3 02/14] mm: Filter zone device pages returned from folio_walk_start()
Date: Thu, 19 Jun 2025 18:57:54 +1000 [thread overview]
Message-ID: <4ecb7b357fc5b435588024770b88bbb695c30090.1750323463.git-series.apopple@nvidia.com> (raw)
In-Reply-To: <cover.176965585864cb8d2cf41464b44dcc0471e643a0.1750323463.git-series.apopple@nvidia.com>
Previously dax pages were skipped by the pagewalk code as pud_special() or
vm_normal_page{_pmd}() would be false for DAX pages. Now that dax pages are
refcounted normally that is no longer the case, so the pagewalk code will
start returning them.
Most callers already explicitly filter for DAX or zone device pages so
don't need updating. However some don't, so add checks to those callers.
Signed-off-by: Alistair Popple <apopple@nvidia.com>
---
Changes since v2:
- Drop filtering in s390 secure fault handling as suggested by David
Changes since v1:
- Dropped "mm/pagewalk: Skip dax pages in pagewalk" and replaced it
with this new patch for v2
- As suggested by David and Jason we can filter the folios in the
callers instead of doing it in folio_start_walk(). Most callers
already do this (see below).
I audited all callers of folio_walk_start() and found the following:
mm/ksm.c:
break_ksm() - doesn't need to filter zone_device pages because the can
never be KSM pages.
get_mergeable_page() - already filters out zone_device pages.
scan_get_next_rmap_iterm() - already filters out zone_device_pages.
mm/huge_memory.c:
split_huge_pages_pid() - already checks for DAX with
vma_not_suitable_for_thp_split()
mm/rmap.c:
make_device_exclusive() - only works on anonymous pages, although
there'd be no issue with finding a DAX page even if support was extended
to file-backed pages.
mm/migrate.c:
add_folio_for_migration() - already checks the vma with vma_migratable()
do_pages_stat_array() - explicitly checks for zone_device folios
kernel/event/uprobes.c:
uprobe_write_opcode() - only works on anonymous pages, not sure if
zone_device could ever work so add an explicit check
arch/s390/mm/fault.c:
do_secure_storage_access() - not sure so be conservative and add a check
arch/s390/kernel/uv.c:
make_hva_secure() - not sure so be conservative and add a check
---
kernel/events/uprobes.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 8a601df..f774367 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -539,7 +539,7 @@ int uprobe_write_opcode(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
}
ret = 0;
- if (unlikely(!folio_test_anon(folio))) {
+ if (unlikely(!folio_test_anon(folio) || folio_is_zone_device(folio))) {
VM_WARN_ON_ONCE(is_register);
folio_put(folio);
goto out;
--
git-series 0.9.1
next prev parent reply other threads:[~2025-06-19 8:58 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-19 8:57 [PATCH v3 00/14] mm: Remove pXX_devmap page table bit and pfn_t type Alistair Popple
2025-06-19 8:57 ` [PATCH v3 01/14] mm: Convert pXd_devmap checks to vma_is_dax Alistair Popple
2025-06-19 8:57 ` Alistair Popple [this message]
2025-06-19 8:57 ` [PATCH v3 03/14] mm: Remove remaining uses of PFN_DEV Alistair Popple
2025-06-19 8:57 ` [PATCH v3 04/14] mm: Convert vmf_insert_mixed() from using pte_devmap to pte_special Alistair Popple
2025-06-19 8:57 ` [PATCH v3 05/14] mm/gup: Remove pXX_devmap usage from get_user_pages() Alistair Popple
2025-06-19 8:57 ` [PATCH v3 06/14] mm/huge_memory: Remove pXd_devmap usage from insert_pXd_pfn() Alistair Popple
2025-06-19 8:57 ` [PATCH v3 07/14] mm: Remove redundant pXd_devmap calls Alistair Popple
2025-06-19 8:58 ` [PATCH v3 08/14] mm/khugepaged: Remove redundant pmd_devmap() check Alistair Popple
2025-06-19 8:58 ` [PATCH v3 09/14] powerpc: Remove checks for devmap pages and PMDs/PUDs Alistair Popple
2025-06-19 8:58 ` [PATCH v3 10/14] fs/dax: Remove FS_DAX_LIMITED config option Alistair Popple
2025-06-19 8:58 ` [PATCH v3 11/14] mm: Remove devmap related functions and page table bits Alistair Popple
2025-06-19 8:58 ` [PATCH v3 12/14] mm: Remove PFN_DEV, PFN_MAP, PFN_SPECIAL, PFN_SG_CHAIN and PFN_SG_LAST Alistair Popple
2025-06-19 8:58 ` [PATCH v3 13/14] mm: Remove callers of pfn_t functionality Alistair Popple
2025-06-19 8:58 ` [PATCH v3 14/14] mm/memremap: Remove unused devmap_managed_key Alistair Popple
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4ecb7b357fc5b435588024770b88bbb695c30090.1750323463.git-series.apopple@nvidia.com \
--to=apopple@nvidia.com \
--cc=John@Groves.net \
--cc=akpm@linux-foundation.org \
--cc=balbirs@nvidia.com \
--cc=bjorn@kernel.org \
--cc=dan.j.williams@intel.com \
--cc=david@redhat.com \
--cc=debug@rivosinc.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gerald.schaefer@linux.ibm.com \
--cc=hch@lst.de \
--cc=jgg@ziepe.ca \
--cc=jhubbard@nvidia.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-xfs@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=lorenzo.stoakes@oracle.com \
--cc=m.szyprowski@samsung.com \
--cc=nvdimm@lists.linux.dev \
--cc=willy@infradead.org \
--cc=zhang.lyra@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).