Subject: [merged]
mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state.patch
removed from -mm tree
To:
[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected]
From: [email protected]
Date: Thu, 17 Oct 2013 11:13:05 -0700
The patch titled
Subject: mm: migration: do not lose soft dirty bit if page is in migration
state
has been removed from the -mm tree. Its filename was
mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: Cyrill Gorcunov <[email protected]>
Subject: mm: migration: do not lose soft dirty bit if page is in migration state
If page migration is turned on in config and the page is migrating, we may
lose the soft dirty bit. If fork and mprotect are called on migrating
pages (once migration is complete) pages do not obtain the soft dirty bit
in the correspond pte entries. Fix it adding an appropriate test on swap
entries.
Signed-off-by: Cyrill Gorcunov <[email protected]>
Cc: Pavel Emelyanov <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Matt Mackall <[email protected]>
Cc: Xiao Guangrong <[email protected]>
Cc: Marcelo Tosatti <[email protected]>
Cc: KOSAKI Motohiro <[email protected]>
Cc: Stephen Rothwell <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: "Aneesh Kumar K.V" <[email protected]>
Cc: Naoya Horiguchi <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---
mm/memory.c | 2 ++
mm/migrate.c | 2 ++
mm/mprotect.c | 7 +++++--
3 files changed, 9 insertions(+), 2 deletions(-)
diff -puN
mm/memory.c~mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state
mm/memory.c
---
a/mm/memory.c~mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state
+++ a/mm/memory.c
@@ -837,6 +837,8 @@ copy_one_pte(struct mm_struct *dst_mm, s
*/
make_migration_entry_read(&entry);
pte = swp_entry_to_pte(entry);
+ if (pte_swp_soft_dirty(*src_pte))
+ pte = pte_swp_mksoft_dirty(pte);
set_pte_at(src_mm, addr, src_pte, pte);
}
}
diff -puN
mm/migrate.c~mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state
mm/migrate.c
---
a/mm/migrate.c~mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state
+++ a/mm/migrate.c
@@ -161,6 +161,8 @@ static int remove_migration_pte(struct p
get_page(new);
pte = pte_mkold(mk_pte(new, vma->vm_page_prot));
+ if (pte_swp_soft_dirty(*ptep))
+ pte = pte_mksoft_dirty(pte);
if (is_write_migration_entry(entry))
pte = pte_mkwrite(pte);
#ifdef CONFIG_HUGETLB_PAGE
diff -puN
mm/mprotect.c~mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state
mm/mprotect.c
---
a/mm/mprotect.c~mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state
+++ a/mm/mprotect.c
@@ -94,13 +94,16 @@ static unsigned long change_pte_range(st
swp_entry_t entry = pte_to_swp_entry(oldpte);
if (is_write_migration_entry(entry)) {
+ pte_t newpte;
/*
* A protection check is difficult so
* just be safe and disable write
*/
make_migration_entry_read(&entry);
- set_pte_at(mm, addr, pte,
- swp_entry_to_pte(entry));
+ newpte = swp_entry_to_pte(entry);
+ if (pte_swp_soft_dirty(oldpte))
+ newpte = pte_swp_mksoft_dirty(newpte);
+ set_pte_at(mm, addr, pte, newpte);
}
pages++;
}
_
Patches currently in -mm which might be from [email protected] are
origin.patch
arch-x86-mnify-pte_to_pgoff-and-pgoff_to_pte-helpers.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html