* [PATCH 0/2] mm/migrate: preserve soft dirty in remove_migration_pte()
@ 2020-08-31 21:22 Ralph Campbell
2020-08-31 21:22 ` [PATCH 1/2] mm/migrate: remove unnecessary is_zone_device_page() check Ralph Campbell
2020-08-31 21:22 ` [PATCH 2/2] mm/migrate: preserve soft dirty in remove_migration_pte() Ralph Campbell
0 siblings, 2 replies; 5+ messages in thread
From: Ralph Campbell @ 2020-08-31 21:22 UTC (permalink / raw)
To: linux-mm, linux-kernel
Cc: Jerome Glisse, Alistair Popple, Christoph Hellwig,
Jason Gunthorpe, Bharata B Rao, Andrew Morton, Ralph Campbell
Two small patches for Andrew Morton's mm tree.
I happened to notice this from code inspection after seeing Alistair
Popple's patch ("mm/rmap: Fixup copying of soft dirty and uffd ptes").
Ralph Campbell (2):
mm/migrate: remove unnecessary is_zone_device_page() check
mm/migrate: preserve soft dirty in remove_migration_pte()
mm/migrate.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] mm/migrate: remove unnecessary is_zone_device_page() check
2020-08-31 21:22 [PATCH 0/2] mm/migrate: preserve soft dirty in remove_migration_pte() Ralph Campbell
@ 2020-08-31 21:22 ` Ralph Campbell
2020-09-01 5:19 ` Christoph Hellwig
2020-08-31 21:22 ` [PATCH 2/2] mm/migrate: preserve soft dirty in remove_migration_pte() Ralph Campbell
1 sibling, 1 reply; 5+ messages in thread
From: Ralph Campbell @ 2020-08-31 21:22 UTC (permalink / raw)
To: linux-mm, linux-kernel
Cc: Jerome Glisse, Alistair Popple, Christoph Hellwig,
Jason Gunthorpe, Bharata B Rao, Andrew Morton, Ralph Campbell
The check for is_zone_device_page() and is_device_private_page() is
unnecessary since the latter is sufficient to determine if the page
is a device private page. Simplify the code for easier reading.
Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
---
mm/migrate.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/mm/migrate.c b/mm/migrate.c
index 659d3d8a3e1f..fe339a847328 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -246,13 +246,11 @@ static bool remove_migration_pte(struct page *page, struct vm_area_struct *vma,
else if (pte_swp_uffd_wp(*pvmw.pte))
pte = pte_mkuffd_wp(pte);
- if (unlikely(is_zone_device_page(new))) {
- if (is_device_private_page(new)) {
- entry = make_device_private_entry(new, pte_write(pte));
- pte = swp_entry_to_pte(entry);
- if (pte_swp_uffd_wp(*pvmw.pte))
- pte = pte_swp_mkuffd_wp(pte);
- }
+ if (unlikely(is_device_private_page(new))) {
+ entry = make_device_private_entry(new, pte_write(pte));
+ pte = swp_entry_to_pte(entry);
+ if (pte_swp_uffd_wp(*pvmw.pte))
+ pte = pte_swp_mkuffd_wp(pte);
}
#ifdef CONFIG_HUGETLB_PAGE
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] mm/migrate: preserve soft dirty in remove_migration_pte()
2020-08-31 21:22 [PATCH 0/2] mm/migrate: preserve soft dirty in remove_migration_pte() Ralph Campbell
2020-08-31 21:22 ` [PATCH 1/2] mm/migrate: remove unnecessary is_zone_device_page() check Ralph Campbell
@ 2020-08-31 21:22 ` Ralph Campbell
2020-09-01 5:20 ` Christoph Hellwig
1 sibling, 1 reply; 5+ messages in thread
From: Ralph Campbell @ 2020-08-31 21:22 UTC (permalink / raw)
To: linux-mm, linux-kernel
Cc: Jerome Glisse, Alistair Popple, Christoph Hellwig,
Jason Gunthorpe, Bharata B Rao, Andrew Morton, Ralph Campbell
The code to remove a migration PTE and replace it with a device private
PTE was not copying the soft dirty bit from the migration entry.
This could lead to page contents not being marked dirty when faulting
the page back from device private memory.
Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
---
mm/migrate.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mm/migrate.c b/mm/migrate.c
index fe339a847328..4f89360d9e77 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -249,6 +249,8 @@ static bool remove_migration_pte(struct page *page, struct vm_area_struct *vma,
if (unlikely(is_device_private_page(new))) {
entry = make_device_private_entry(new, pte_write(pte));
pte = swp_entry_to_pte(entry);
+ if (pte_swp_soft_dirty(*pvmw.pte))
+ pte = pte_swp_mksoft_dirty(pte);
if (pte_swp_uffd_wp(*pvmw.pte))
pte = pte_swp_mkuffd_wp(pte);
}
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] mm/migrate: remove unnecessary is_zone_device_page() check
2020-08-31 21:22 ` [PATCH 1/2] mm/migrate: remove unnecessary is_zone_device_page() check Ralph Campbell
@ 2020-09-01 5:19 ` Christoph Hellwig
0 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2020-09-01 5:19 UTC (permalink / raw)
To: Ralph Campbell
Cc: linux-mm, linux-kernel, Jerome Glisse, Alistair Popple,
Christoph Hellwig, Jason Gunthorpe, Bharata B Rao, Andrew Morton
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] mm/migrate: preserve soft dirty in remove_migration_pte()
2020-08-31 21:22 ` [PATCH 2/2] mm/migrate: preserve soft dirty in remove_migration_pte() Ralph Campbell
@ 2020-09-01 5:20 ` Christoph Hellwig
0 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2020-09-01 5:20 UTC (permalink / raw)
To: Ralph Campbell
Cc: linux-mm, linux-kernel, Jerome Glisse, Alistair Popple,
Christoph Hellwig, Jason Gunthorpe, Bharata B Rao, Andrew Morton
On Mon, Aug 31, 2020 at 02:22:22PM -0700, Ralph Campbell wrote:
> The code to remove a migration PTE and replace it with a device private
> PTE was not copying the soft dirty bit from the migration entry.
> This could lead to page contents not being marked dirty when faulting
> the page back from device private memory.
>
> Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-09-01 5:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-31 21:22 [PATCH 0/2] mm/migrate: preserve soft dirty in remove_migration_pte() Ralph Campbell
2020-08-31 21:22 ` [PATCH 1/2] mm/migrate: remove unnecessary is_zone_device_page() check Ralph Campbell
2020-09-01 5:19 ` Christoph Hellwig
2020-08-31 21:22 ` [PATCH 2/2] mm/migrate: preserve soft dirty in remove_migration_pte() Ralph Campbell
2020-09-01 5:20 ` Christoph Hellwig
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).