All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: mpenttil@redhat.com
Cc: dri-devel@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Subject: Re: [PATCH v14 10/12] mm: enable device page migration from HMM pagewalk
Date: Tue, 22 Sep 2026 05:58:50 +0000	[thread overview]
Message-ID: <20260922055851.65A981F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260922053421.4092027-11-mpenttil@redhat.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] mm: unbalanced mmu_notifier in hmm_range_fault during migration
--

commit 3e05399d761177583ed386d43f42e228c070f447
Author: Mika Penttilä <mpenttil@redhat.com>

mm: enable device page migration from HMM pagewalk

This patch integrates HMM pagewalk machinery into the first phase of device
page migration by enabling migration in hmm_range_fault(). It updates
migrate_vma_setup() to use the HMM pagewalk path and removes the older
migrate_vma_collect() paths. Two new flags, MIGRATE_VMA_FAULT and
MIGRATE_VMA_WRITE, are introduced for faulting missing pages and requesting
write access.

> diff --git a/mm/migrate_device.c b/mm/migrate_device.c
> index 43e571e82ccad..1e1a592e12672 100644
> --- a/mm/migrate_device.c
> +++ b/mm/migrate_device.c
[ ... ]
> @@ -739,10 +241,20 @@ static void migrate_vma_unmap(struct migrate_vma *migrate)
>   */
>  int migrate_vma_setup(struct migrate_vma *args)
>  {
> +	int ret;
>  	long nr_pages = (args->end - args->start) >> PAGE_SHIFT;
> +	struct hmm_range range = {
> +		.notifier = NULL,
> +		.hmm_pfns = args->src,
> +		.dev_private_owner = args->pgmap_owner,

[Severity: High]
Does this code cause a permanent MMU notifier imbalance when args->pgmap_owner
is NULL?

If a caller invokes migrate_vma_setup() with args->pgmap_owner set to NULL
(which is standard for migrations not involving device-private memory, such as
PowerPC KVM secure guest page-in), range.dev_private_owner is also NULL.

In mm/hmm.c:hmm_vma_capture_migrate_range(), the code checks:

	if (!hmm_vma_walk->mmu_range.owner) {
		mmu_notifier_range_init_owner(&hmm_vma_walk->mmu_range, MMU_NOTIFY_MIGRATE, 0,
					      walk->vma->vm_mm, start, end,
					      range->dev_private_owner);
		mmu_notifier_invalidate_range_start(&hmm_vma_walk->mmu_range);
	}

Because mmu_range is zero-initialized, this condition is true. It calls
mmu_notifier_range_init_owner(), which assigns the NULL dev_private_owner
to hmm_vma_walk->mmu_range.owner. mmu_notifier_invalidate_range_start() is
then called.

Additionally, if the range spans multiple VMAs, invalidate_range_start is
called multiple times because the sentinel remains NULL.

Later, in mm/hmm.c:hmm_vma_post_range_fault():

	if (hmm_select_migrate(range) &&
	    hmm_vma_walk->mmu_range.owner) {
		mmu_notifier_invalidate_range_end(&hmm_vma_walk->mmu_range);
	}

Because mmu_range.owner remains NULL, this condition evaluates to false,
completely skipping the required mmu_notifier_invalidate_range_end() call.

A skipped invalidate_range_end() leaves the invalidation count permanently
elevated, causing any subsequent operation on that memory range requiring
mmu_interval_read_retry() or VMA teardown to block indefinitely.

> +		.migrate = args,
> +		.default_flags = HMM_PFN_REQ_MIGRATE
> +	};
>  
>  	args->start &= PAGE_MASK;
>  	args->end &= PAGE_MASK;
[ ... ]

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260922053421.4092027-1-mpenttil@redhat.com?part=10

  reply	other threads:[~2026-09-22  5:58 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-22  5:34 [PATCH 00/12] [PATCH v14 00/12] migrate on fault for device pages mpenttil
2026-09-22  5:34 ` [PATCH v14 01/12] mm/Kconfig: changes for " mpenttil
2026-09-22  5:44   ` sashiko-bot
2026-09-22 22:27   ` Balbir Singh
2026-09-23  5:42     ` Mika Penttilä
2026-09-22  5:34 ` [PATCH v14 02/12] mm: add helper to convert HMM pfn to migrate pfn mpenttil
2026-09-22  5:34 ` [PATCH v14 03/12] mm/hmm: preparations for HMM to participate in migration mpenttil
2026-09-22  5:49   ` sashiko-bot
2026-09-22  5:34 ` [PATCH v14 04/12] mm/hmm: do the plumbing " mpenttil
2026-09-22  5:50   ` sashiko-bot
2026-09-22  5:34 ` [PATCH v14 05/12] mm/hmm: implement folio split for migrate needs in HMM pagewalk mpenttil
2026-09-22  5:47   ` sashiko-bot
2026-09-22  5:34 ` [PATCH v14 06/12] mm/hmm: migrate collection in HMM pagewalk - pte level mpenttil
2026-09-22  5:47   ` sashiko-bot
2026-09-22  5:34 ` [PATCH v14 07/12] mm/hmm: migrate collection in HMM pagewalk - pmd level mpenttil
2026-09-22  5:50   ` sashiko-bot
2026-09-22  5:34 ` [PATCH v14 08/12] mm/hmm: add lazy MMU mode support for migration in HMM pagewalk mpenttil
2026-09-22  5:51   ` sashiko-bot
2026-09-22  5:34 ` [PATCH v14 09/12] mm/hmm: implement rollback for device page " mpenttil
2026-09-22  5:34 ` [PATCH v14 10/12] mm: enable device page migration from " mpenttil
2026-09-22  5:58   ` sashiko-bot [this message]
2026-09-22  5:34 ` [PATCH v14 11/12] lib/test_hmm: add a new testcase for the migrate on fault mpenttil
2026-09-22  6:09   ` sashiko-bot
2026-09-22  5:34 ` [PATCH v14 12/12] Documentation/mm/hmm: document migration through hmm_range_fault() mpenttil
2026-09-22  5:41 ` ✗ CI.checkpatch: warning for Migrate on fault for device pages (rev6) Patchwork
2026-09-22  5:43 ` ✓ CI.KUnit: success " Patchwork
2026-09-22  6:00 ` ✗ CI.checksparse: warning " Patchwork
2026-09-22  7:08 ` ✓ Xe.CI.BAT: success " Patchwork
2026-09-22 15:03 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-09-23  2:27 ` [PATCH 00/12] [PATCH v14 00/12] migrate on fault for device pages Andrew Morton
2026-09-23  5:29   ` Mika Penttilä
2026-09-23 21:19     ` Andrew Morton
2026-09-23 23:24       ` Jason Gunthorpe
2026-09-24  0:14         ` Mika Penttilä
2026-09-24  0:10       ` Mika Penttilä

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=20260922055851.65A981F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=mpenttil@redhat.com \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.