mm/huge_memory.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
The softleaf changes exposed a BUG in remove_rmap_pmd() where the
migration entry was being overridden when the folio is device private.
Use scope local entry for creating the device private pmde. Make the
pmde writable if the migration entry is writable by moving the check
softleaf_is_migration_write() prior to creating the device private entry.
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Hildenbrand <david@redhat.com>
Cc: Zi Yan <ziy@nvidia.com>
Cc: Joshua Hahn <joshua.hahnjy@gmail.com>
Cc: Rakie Kim <rakie.kim@sk.com>
Cc: Byungchul Park <byungchul@sk.com>
Cc: Gregory Price <gourry@gourry.net>
Cc: Ying Huang <ying.huang@linux.alibaba.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: Nico Pache <npache@redhat.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Barry Song <baohua@kernel.org>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: Ralph Campbell <rcampbell@nvidia.com>
Cc: Mika Penttilä <mpenttil@redhat.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Francois Dugast <francois.dugast@intel.com>
Signed-off-by: Balbir Singh <balbirs@nvidia.com>
---
mm/huge_memory.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 0184cd915f44..e4dadcb9e90b 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -4850,7 +4850,12 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)
folio_get(folio);
pmde = folio_mk_pmd(folio, READ_ONCE(vma->vm_page_prot));
+ if (softleaf_is_migration_write(entry))
+ pmde = pmd_mkwrite(pmde, vma);
+
if (folio_is_device_private(folio)) {
+ swp_entry_t entry;
+
if (pmd_write(pmde))
entry = make_writable_device_private_entry(
page_to_pfn(new));
@@ -4862,8 +4867,6 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)
if (pmd_swp_soft_dirty(*pvmw->pmd))
pmde = pmd_mksoft_dirty(pmde);
- if (softleaf_is_migration_write(entry))
- pmde = pmd_mkwrite(pmde, vma);
if (pmd_swp_uffd_wp(*pvmw->pmd))
pmde = pmd_mkuffd_wp(pmde);
if (!softleaf_is_migration_young(entry))
--
2.51.1
On Thu, Nov 13, 2025 at 04:13:52PM +1100, Balbir Singh wrote:
> The softleaf changes exposed a BUG in remove_rmap_pmd() where the
> migration entry was being overridden when the folio is device private.
>
> Use scope local entry for creating the device private pmde. Make the
> pmde writable if the migration entry is writable by moving the check
> softleaf_is_migration_write() prior to creating the device private entry.
>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: David Hildenbrand <david@redhat.com>
> Cc: Zi Yan <ziy@nvidia.com>
> Cc: Joshua Hahn <joshua.hahnjy@gmail.com>
> Cc: Rakie Kim <rakie.kim@sk.com>
> Cc: Byungchul Park <byungchul@sk.com>
> Cc: Gregory Price <gourry@gourry.net>
> Cc: Ying Huang <ying.huang@linux.alibaba.com>
> Cc: Alistair Popple <apopple@nvidia.com>
> Cc: Oscar Salvador <osalvador@suse.de>
> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
> Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> Cc: Nico Pache <npache@redhat.com>
> Cc: Ryan Roberts <ryan.roberts@arm.com>
> Cc: Dev Jain <dev.jain@arm.com>
> Cc: Barry Song <baohua@kernel.org>
> Cc: Lyude Paul <lyude@redhat.com>
> Cc: Danilo Krummrich <dakr@kernel.org>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Simona Vetter <simona@ffwll.ch>
> Cc: Ralph Campbell <rcampbell@nvidia.com>
> Cc: Mika Penttilä <mpenttil@redhat.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Francois Dugast <francois.dugast@intel.com>
>
> Signed-off-by: Balbir Singh <balbirs@nvidia.com>
THe logic LGTM but we don't want to have a bisect hazard here by having the bug
introduced earlier then resolved here.
I think better would be to do the fix up in the original series as a fix-patch,
then maybe point at this one as a conflict resolution for my series?
In any case, LGTM so:
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
> ---
> mm/huge_memory.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index 0184cd915f44..e4dadcb9e90b 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -4850,7 +4850,12 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)
> folio_get(folio);
> pmde = folio_mk_pmd(folio, READ_ONCE(vma->vm_page_prot));
>
> + if (softleaf_is_migration_write(entry))
> + pmde = pmd_mkwrite(pmde, vma);
> +
> if (folio_is_device_private(folio)) {
> + swp_entry_t entry;
> +
> if (pmd_write(pmde))
> entry = make_writable_device_private_entry(
> page_to_pfn(new));
> @@ -4862,8 +4867,6 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)
>
> if (pmd_swp_soft_dirty(*pvmw->pmd))
> pmde = pmd_mksoft_dirty(pmde);
> - if (softleaf_is_migration_write(entry))
> - pmde = pmd_mkwrite(pmde, vma);
> if (pmd_swp_uffd_wp(*pvmw->pmd))
> pmde = pmd_mkuffd_wp(pmde);
> if (!softleaf_is_migration_young(entry))
> --
> 2.51.1
>
On 13.11.25 12:56, Lorenzo Stoakes wrote: > On Thu, Nov 13, 2025 at 04:13:52PM +1100, Balbir Singh wrote: >> The softleaf changes exposed a BUG in remove_rmap_pmd() where the >> migration entry was being overridden when the folio is device private. >> >> Use scope local entry for creating the device private pmde. Make the >> pmde writable if the migration entry is writable by moving the check >> softleaf_is_migration_write() prior to creating the device private entry. >> >> Cc: Andrew Morton <akpm@linux-foundation.org> >> Cc: David Hildenbrand <david@redhat.com> >> Cc: Zi Yan <ziy@nvidia.com> >> Cc: Joshua Hahn <joshua.hahnjy@gmail.com> >> Cc: Rakie Kim <rakie.kim@sk.com> >> Cc: Byungchul Park <byungchul@sk.com> >> Cc: Gregory Price <gourry@gourry.net> >> Cc: Ying Huang <ying.huang@linux.alibaba.com> >> Cc: Alistair Popple <apopple@nvidia.com> >> Cc: Oscar Salvador <osalvador@suse.de> >> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> >> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> >> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> >> Cc: Nico Pache <npache@redhat.com> >> Cc: Ryan Roberts <ryan.roberts@arm.com> >> Cc: Dev Jain <dev.jain@arm.com> >> Cc: Barry Song <baohua@kernel.org> >> Cc: Lyude Paul <lyude@redhat.com> >> Cc: Danilo Krummrich <dakr@kernel.org> >> Cc: David Airlie <airlied@gmail.com> >> Cc: Simona Vetter <simona@ffwll.ch> >> Cc: Ralph Campbell <rcampbell@nvidia.com> >> Cc: Mika Penttilä <mpenttil@redhat.com> >> Cc: Matthew Brost <matthew.brost@intel.com> >> Cc: Francois Dugast <francois.dugast@intel.com> >> >> Signed-off-by: Balbir Singh <balbirs@nvidia.com> > > THe logic LGTM but we don't want to have a bisect hazard here by having the bug > introduced earlier then resolved here. Exactly. -- Cheers David
On 11/13/25 23:07, David Hildenbrand (Red Hat) wrote: > On 13.11.25 12:56, Lorenzo Stoakes wrote: >> On Thu, Nov 13, 2025 at 04:13:52PM +1100, Balbir Singh wrote: >>> The softleaf changes exposed a BUG in remove_rmap_pmd() where the >>> migration entry was being overridden when the folio is device private. >>> >>> Use scope local entry for creating the device private pmde. Make the >>> pmde writable if the migration entry is writable by moving the check >>> softleaf_is_migration_write() prior to creating the device private entry. >>> >>> Cc: Andrew Morton <akpm@linux-foundation.org> >>> Cc: David Hildenbrand <david@redhat.com> >>> Cc: Zi Yan <ziy@nvidia.com> >>> Cc: Joshua Hahn <joshua.hahnjy@gmail.com> >>> Cc: Rakie Kim <rakie.kim@sk.com> >>> Cc: Byungchul Park <byungchul@sk.com> >>> Cc: Gregory Price <gourry@gourry.net> >>> Cc: Ying Huang <ying.huang@linux.alibaba.com> >>> Cc: Alistair Popple <apopple@nvidia.com> >>> Cc: Oscar Salvador <osalvador@suse.de> >>> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> >>> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> >>> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> >>> Cc: Nico Pache <npache@redhat.com> >>> Cc: Ryan Roberts <ryan.roberts@arm.com> >>> Cc: Dev Jain <dev.jain@arm.com> >>> Cc: Barry Song <baohua@kernel.org> >>> Cc: Lyude Paul <lyude@redhat.com> >>> Cc: Danilo Krummrich <dakr@kernel.org> >>> Cc: David Airlie <airlied@gmail.com> >>> Cc: Simona Vetter <simona@ffwll.ch> >>> Cc: Ralph Campbell <rcampbell@nvidia.com> >>> Cc: Mika Penttilä <mpenttil@redhat.com> >>> Cc: Matthew Brost <matthew.brost@intel.com> >>> Cc: Francois Dugast <francois.dugast@intel.com> >>> >>> Signed-off-by: Balbir Singh <balbirs@nvidia.com> >> >> THe logic LGTM but we don't want to have a bisect hazard here by having the bug >> introduced earlier then resolved here. > > Exactly. > The hazard is a VM_WARN_ON() that checks for is_migration_entry() in the call to softleaf_is_migration_young(). I am happy to go down that path, let me send out the fixups, it felt weird to break the rebase, but I am sure Andrew has a better way of dealing with this stuff. Balbir
On Fri, 14 Nov 2025 07:55:29 +1100 Balbir Singh <balbirs@nvidia.com> wrote: > >> THe logic LGTM but we don't want to have a bisect hazard here by having the bug > >> introduced earlier then resolved here. > > > > Exactly. > > > > The hazard is a VM_WARN_ON() that checks for is_migration_entry() in the > call to softleaf_is_migration_young(). I am happy to go down that path, > let me send out the fixups, it felt weird to break the rebase, but I > am sure Andrew has a better way of dealing with this stuff. Yes, please tell us which patch introduced the issue then send a fix for that patch. We can figure out the softleaf changes later. (Which this patch provides anyway). Also, confusing that the changelog says "The softleaf changes exposed a BUG in remove_rmap_pmd()" but it's remove_migration_pmd() that gets altered. Please expand and clarify?
On 11/14/25 10:08, Andrew Morton wrote: > On Fri, 14 Nov 2025 07:55:29 +1100 Balbir Singh <balbirs@nvidia.com> wrote: > >>>> THe logic LGTM but we don't want to have a bisect hazard here by having the bug >>>> introduced earlier then resolved here. >>> >>> Exactly. >>> >> >> The hazard is a VM_WARN_ON() that checks for is_migration_entry() in the >> call to softleaf_is_migration_young(). I am happy to go down that path, >> let me send out the fixups, it felt weird to break the rebase, but I >> am sure Andrew has a better way of dealing with this stuff. > > Yes, please tell us which patch introduced the issue then send a fix > for that patch. We can figure out the softleaf changes later. (Which > this patch provides anyway). > > Also, confusing that the changelog says "The softleaf changes exposed a > BUG in remove_rmap_pmd()" but it's remove_migration_pmd() that gets > altered. Please expand and clarify? Sorry, it's remove_migration_pmd() that is effected. I've updated the changelog and sent out the patches. I've sent the fix to the original patch and the fixup along with it, hopefully I got it right :) Balbir
© 2016 - 2025 Red Hat, Inc.