mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Gregory Price (Meta)" <gourry@gourry.net>
To: Tal Zussman <tz2294@columbia.edu>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
	"Mike Rapoport" <rppt@kernel.org>, "Peter Xu" <peterx@redhat.com>,
	"James Houghton" <jthoughton@google.com>,
	"Andrea Arcangeli" <aarcange@redhat.com>,
	"Suren Baghdasaryan" <surenb@google.com>,
	"Balbir Singh" <balbirs@nvidia.com>,
	"Liam R. Howlett" <liam@infradead.org>,
	"Lorenzo Stoakes" <ljs@kernel.org>,
	"Vlastimil Babka" <vbabka@kernel.org>,
	"Jann Horn" <jannh@google.com>,
	"Pedro Falcato" <pfalcato@suse.de>,
	"Michał Mirosław" <mirq-linux@rere.qmqm.pl>,
	"Andrei Vagin" <avagin@gmail.com>,
	"Stephen Rothwell" <sfr@canb.auug.org.au>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Muhammad Usama Anjum" <usama.anjum@arm.com>,
	"David Hildenbrand" <david@kernel.org>, "Zi Yan" <ziy@nvidia.com>,
	"Matthew Brost" <matthew.brost@intel.com>,
	"Joshua Hahn" <joshua.hahnjy@gmail.com>,
	"Byungchul Park" <byungchul@sk.com>,
	"Gregory Price" <gourry@gourry.net>,
	"Ying Huang" <ying.huang@linux.alibaba.com>,
	"Alistair Popple" <apopple@nvidia.com>,
	"Baolin Wang" <baolin.wang@linux.alibaba.com>,
	"Nico Pache" <nico.pache@linux.dev>,
	"Ryan Roberts" <ryan.roberts@arm.com>,
	"Dev Jain" <dev.jain@arm.com>, "Barry Song" <baohua@kernel.org>,
	"Lance Yang" <lance.yang@linux.dev>,
	"Usama Arif" <usama.arif@linux.dev>,
	"Kiryl Shutsemau" <kas@kernel.org>,
	"Chris Down" <chris@chrisdown.name>,
	"Muchun Song" <muchun.song@linux.dev>,
	"Oscar Salvador" <osalvador@suse.de>,
	"Mikołaj Lenczewski" <miko.lenczewski@arm.com>,
	"Michal Hocko" <mhocko@suse.com>,
	"Mike Kravetz" <mike.kravetz@oracle.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 08/12] mm/migrate_device: do not migrate a uffd-protected zero page
Date: Fri, 13 Nov 2026 01:04:45 -0500	[thread overview]
Message-ID: <179454988585.482102.2051616940227067987.b4-reply@b4> (raw)
In-Reply-To: <20261111-uffd-state-fixes-v1-8-00713d368976@columbia.edu>

On 2026-11-11 12:55 -0500, Tal Zussman wrote:
> migrate_vma_setup() installs a migration entry for each page it
> collects, which carries the uffd bit over to the new PTE. However, a PTE
> that maps the zero page is left in place without a migration entry.
> migrate_vma_insert_page() later overwrites it with a new PTE that is
> built only from the VMA flags, so the uffd-wp bit or the RWP PAGE_NONE
> protection of the old PTE is lost. The same applies to the huge zero
> PMD.
> 
> Once a driver has migrated such a zero page, writes and accesses to it
> no longer fault into userfaultfd, so the manager misses them. With async
> tracking, PAGEMAP_SCAN unconditionally reports the page as written or
> accessed.
> 
> This requires a driver that migrates memory to a device.
> 
> To fix it, do not mark a zero page for migration if its entry has the
> uffd bit set in a VMA registered for WP or RWP. The driver sees an
> address that was not migrated, which drivers already have to deal with.
> 
> The uffd bit can also be set after the zero page was collected, as
> write-protecting only takes the mmap lock for read. So check again under
> the page table lock in migrate_vma_insert_page() and
> migrate_vma_insert_huge_pmd_page().
> 

Similar to last patch, this changelog could be improved.  My best
attempt at summarizing:

"""
Device migration replaces a zero-page mapping with a fresh entry,
losing its userfaultfd WP or RWP protection.

Don't migrate the uffd-protected zero pages.

Skip protected zero pages during collection. Check again under the
page-table lock before insertion, because another thread can apply
protection after collection finishes.

The alternative ...
"""

I have concerns with this:

> The alternative would be to carry the uffd state over in
> migrate_vma_insert_page() and migrate_vma_insert_huge_pmd_page(). Not
> migrating the zero page is simpler, and a zero page that is protected by
> userfaultfd in a range that a driver migrates should be rare.

This basically force-fails a migration of a uffd protected zero page.

Wouldn't we expect this to cause drivers to fail to make progress if
they require that page to be resident on the device?  Not sure we want
to force drivers to try to handle this special case (if they even can).

We'll need some input from the migrate_device/GPU folks.

-- 
~Gregory


  reply	other threads:[~2026-11-13  6:04 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-11 17:55 [PATCH 00/12] userfaultfd: assorted fixes (part 1) Tal Zussman
2026-11-11 17:55 ` [PATCH 01/12] userfaultfd: use anonymous memory for UFFDIO_ZEROPAGE on private file mappings Tal Zussman
2026-11-12 18:05   ` Lorenzo Stoakes (ARM)
2026-11-11 17:55 ` [PATCH 02/12] userfaultfd: refuse UFFDIO_MOVE into a non-present huge destination PMD Tal Zussman
2026-11-12 18:07   ` Lorenzo Stoakes (ARM)
2026-11-13  4:25   ` Gregory Price (Meta)
2026-11-11 17:55 ` [PATCH 03/12] fs/proc/task_mmu: downgrade writable migration entries in PAGEMAP_SCAN write-protect Tal Zussman
2026-11-12 18:34   ` Lorenzo Stoakes (ARM)
2026-11-13  4:55   ` Gregory Price (Meta)
2026-11-11 17:55 ` [PATCH 04/12] mm/migrate: keep the uffd bit when restoring a writable migration entry Tal Zussman
2026-11-12 18:44   ` Lorenzo Stoakes (ARM)
2026-11-13 21:59     ` Tal Zussman
2026-11-13  4:59   ` Gregory Price (Meta)
2026-11-11 17:55 ` [PATCH 05/12] fs/proc/task_mmu: write-protect device-private THPs in PAGEMAP_SCAN Tal Zussman
2026-11-12 19:34   ` Lorenzo Stoakes (ARM)
2026-11-13  5:08     ` Gregory Price (Meta)
2026-11-13 22:16     ` Tal Zussman
2026-11-13  5:10   ` Gregory Price (Meta)
2026-11-11 17:55 ` [PATCH 06/12] mm/huge_memory: build the moved huge zero PMD from the destination VMA Tal Zussman
2026-11-11 19:12   ` Kiryl Shutsemau
2026-11-13  5:19   ` Gregory Price (Meta)
2026-11-11 17:55 ` [PATCH 07/12] mm/mremap: resolve uffd state when the context is dropped, not during the move Tal Zussman
2026-11-11 19:20   ` Kiryl Shutsemau
2026-11-11 22:39     ` Tal Zussman
2026-11-12 11:44   ` Lorenzo Stoakes (ARM)
2026-11-12 16:00     ` Tal Zussman
2026-11-13  5:46   ` Gregory Price (Meta)
2026-11-11 17:55 ` [PATCH 08/12] mm/migrate_device: do not migrate a uffd-protected zero page Tal Zussman
2026-11-13  6:04   ` Gregory Price (Meta) [this message]
2026-11-13 22:26     ` Tal Zussman
2026-11-11 17:55 ` [PATCH 09/12] mm/madvise: let a guard marker carry the uffd-wp bit Tal Zussman
2026-11-12 11:21   ` Lorenzo Stoakes (ARM)
2026-11-12 16:06     ` Tal Zussman
2026-11-11 17:55 ` [PATCH 10/12] mm: set the uffd-wp bit on a guard marker when write-protecting Tal Zussman
2026-11-12 11:43   ` Lorenzo Stoakes (ARM)
2026-11-11 17:55 ` [PATCH 11/12] mm/madvise: send UFFD_EVENT_REMOVE when installing guard regions Tal Zussman
2026-11-11 19:25   ` Kiryl Shutsemau
2026-11-11 23:21     ` Tal Zussman
2026-11-12  9:40       ` Jose A. Perez de Azpillaga
2026-11-12 11:57         ` Kiryl Shutsemau
2026-11-12 11:03   ` Lorenzo Stoakes (ARM)
2026-11-12 11:06     ` Lorenzo Stoakes (ARM)
2026-11-12 15:56     ` Tal Zussman
2026-11-11 17:55 ` [PATCH 12/12] mm/userfaultfd: check hugetlb end alignment in UFFDIO_UNREGISTER pre-scan Tal Zussman
2026-11-12 19:52   ` Lorenzo Stoakes (ARM)
2026-11-13 22:34     ` Tal Zussman

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=179454988585.482102.2051616940227067987.b4-reply@b4 \
    --to=gourry@gourry.net \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=apopple@nvidia.com \
    --cc=arnd@arndb.de \
    --cc=avagin@gmail.com \
    --cc=balbirs@nvidia.com \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=byungchul@sk.com \
    --cc=chris@chrisdown.name \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=jannh@google.com \
    --cc=joshua.hahnjy@gmail.com \
    --cc=jthoughton@google.com \
    --cc=kas@kernel.org \
    --cc=lance.yang@linux.dev \
    --cc=liam@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=matthew.brost@intel.com \
    --cc=mhocko@suse.com \
    --cc=mike.kravetz@oracle.com \
    --cc=miko.lenczewski@arm.com \
    --cc=mirq-linux@rere.qmqm.pl \
    --cc=muchun.song@linux.dev \
    --cc=nico.pache@linux.dev \
    --cc=osalvador@suse.de \
    --cc=peterx@redhat.com \
    --cc=pfalcato@suse.de \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=sfr@canb.auug.org.au \
    --cc=surenb@google.com \
    --cc=tz2294@columbia.edu \
    --cc=usama.anjum@arm.com \
    --cc=usama.arif@linux.dev \
    --cc=vbabka@kernel.org \
    --cc=ying.huang@linux.alibaba.com \
    --cc=ziy@nvidia.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

all inboxes | Powered by JetHome®