linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [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).