From: Lorenzo Stoakes <ljs@kernel.org>
To: Dev Jain <dev.jain@arm.com>
Cc: akpm@linux-foundation.org, liam@infradead.org, jgg@ziepe.ca,
leon@kernel.org, david@kernel.org, shuah@kernel.org,
vbabka@kernel.org, jannh@google.com, pfalcato@suse.de,
rppt@kernel.org, surenb@google.com, mhocko@suse.com,
balbirs@nvidia.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-kselftest@vger.kernel.org, ryan.roberts@arm.com,
anshuman.khandual@arm.com, stable@vger.kernel.org
Subject: Re: [PATCH] fs/proc/task_mmu: do not warn on seeing non-migration pmd entry
Date: Fri, 29 May 2026 17:45:24 +0100 [thread overview]
Message-ID: <ahmdJFCw2arBdsd9@lucifer> (raw)
In-Reply-To: <20260529111704.1078346-1-dev.jain@arm.com>
On Fri, May 29, 2026 at 11:17:03AM +0000, Dev Jain wrote:
> pagemap_pmd_range_thp() warns if a non-present PMD is not a migration
> entry. This became false once device-private entries at the PMD level were
> added.
>
> One can hit the warning by patching hmm-tests.c with the following:
>
> diff --git a/tools/testing/selftests/mm/hmm-tests.c b/tools/testing/selftests/mm/hmm-tests.c
> index e1c8a679a4cf3..7f0a3384f3c5f 100644
> --- a/tools/testing/selftests/mm/hmm-tests.c
> +++ b/tools/testing/selftests/mm/hmm-tests.c
> @@ -209,6 +209,37 @@ static int hmm_dmirror_cmd(int fd,
> return 0;
> }
>
> +static int hmm_read_self_pagemap(void *addr, unsigned long npages,
> + unsigned long page_size)
> +{
> + const size_t entry_size = sizeof(uint64_t);
> + const off_t offset = ((uintptr_t)addr / page_size) * entry_size;
> + uint64_t *entries;
> + ssize_t nread;
> + int fd;
> +
> + entries = malloc(npages * entry_size);
> + if (!entries)
> + return -ENOMEM;
> +
> + fd = open("/proc/self/pagemap", O_RDONLY);
> + if (fd < 0) {
> + free(entries);
> + return -errno;
> + }
> +
> + nread = pread(fd, entries, npages * entry_size, offset);
> + close(fd);
> + free(entries);
> +
> + if (nread < 0)
> + return -errno;
> + if ((size_t)nread != npages * entry_size)
> + return -EIO;
> +
> + return 0;
> +}
> +
> static void hmm_buffer_free(struct hmm_buffer *buffer)
> {
> if (buffer == NULL)
> @@ -2314,6 +2345,10 @@ TEST_F(hmm, migrate_anon_huge_fault)
> ASSERT_EQ(ret, 0);
> ASSERT_EQ(buffer->cpages, npages);
>
> + /* Exercise pagemap on a PMD device-private entry. */
> + ret = hmm_read_self_pagemap(buffer->ptr, npages, self->page_size);
> + ASSERT_EQ(ret, 0);
> +
> /* Check what the device read. */
> for (i = 0, ptr = buffer->mirror; i < size / sizeof(*ptr); ++i)
> ASSERT_EQ(ptr[i], i);
Thanks for this!
though, hmm it really feels like you maybe want to add this as a test and
make this a series :)
Andrew is usually fine with adding tests as part of a fix I believe!
>
>
> Therefore, remove the stale migration-only assertion.
>
> Fixes: a30b48bf1b24 ("mm/migrate_device: implement THP migration of zone device pages")
> Cc: stable@vger.kernel.org
> Signed-off-by: Dev Jain <dev.jain@arm.com>
The logic does seem sense, it does seem like something of an oversight here
and I can repro the assert (though I have to fix something else first on my
system, patch incoming for that...!)
> ---
> Applies on mm-unstable (404fb4f38e8f).
>
> fs/proc/task_mmu.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
> index 1e3a15bf46f4e..58938e62154d9 100644
> --- a/fs/proc/task_mmu.c
> +++ b/fs/proc/task_mmu.c
> @@ -2129,7 +2129,6 @@ static int pagemap_pmd_range_thp(pmd_t *pmdp, unsigned long addr,
> flags |= PM_SOFT_DIRTY;
> if (pmd_swp_uffd_wp(pmd))
> flags |= PM_UFFD_WP;
> - VM_WARN_ON_ONCE(!pmd_is_migration_entry(pmd));
> page = softleaf_to_page(entry);
> }
>
> --
> 2.43.0
>
Cheers, Lorenzo
next prev parent reply other threads:[~2026-05-29 16:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-29 11:17 [PATCH] fs/proc/task_mmu: do not warn on seeing non-migration pmd entry Dev Jain
2026-05-29 16:45 ` Lorenzo Stoakes [this message]
2026-05-29 23:36 ` Andrew Morton
2026-05-31 19:11 ` David Hildenbrand (Arm)
2026-06-01 4:56 ` Dev Jain
2026-06-01 5:48 ` David Hildenbrand (Arm)
2026-06-02 4:20 ` Oscar Salvador (SUSE)
2026-06-02 4:21 ` Oscar Salvador (SUSE)
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=ahmdJFCw2arBdsd9@lucifer \
--to=ljs@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=balbirs@nvidia.com \
--cc=david@kernel.org \
--cc=dev.jain@arm.com \
--cc=jannh@google.com \
--cc=jgg@ziepe.ca \
--cc=leon@kernel.org \
--cc=liam@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=pfalcato@suse.de \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=shuah@kernel.org \
--cc=stable@vger.kernel.org \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.