diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2016-09-26 15:47:03 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-09-26 15:47:03 -0400 |
commit | 1e1b37273cf719545da50b76f214f983a710aaf4 (patch) | |
tree | 033f6062325ef7aaeefe8559bb409ab7d2be3c76 /mm/huge_memory.c | |
parent | c183a603e8d8a5a189729b77d0c623a3d5950e5f (diff) | |
parent | c291b015158577be533dd5a959dfc09bab119eed (diff) |
Merge branch 'x86/urgent' into x86/apic
Bring in the upstream modifications so we can fixup the silent merge
conflict which is introduced by this merge.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r-- | mm/huge_memory.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 2373f0a7d340..2db2112aa31e 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c | |||
@@ -1512,7 +1512,7 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, | |||
1512 | struct page *page; | 1512 | struct page *page; |
1513 | pgtable_t pgtable; | 1513 | pgtable_t pgtable; |
1514 | pmd_t _pmd; | 1514 | pmd_t _pmd; |
1515 | bool young, write, dirty; | 1515 | bool young, write, dirty, soft_dirty; |
1516 | unsigned long addr; | 1516 | unsigned long addr; |
1517 | int i; | 1517 | int i; |
1518 | 1518 | ||
@@ -1546,6 +1546,7 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, | |||
1546 | write = pmd_write(*pmd); | 1546 | write = pmd_write(*pmd); |
1547 | young = pmd_young(*pmd); | 1547 | young = pmd_young(*pmd); |
1548 | dirty = pmd_dirty(*pmd); | 1548 | dirty = pmd_dirty(*pmd); |
1549 | soft_dirty = pmd_soft_dirty(*pmd); | ||
1549 | 1550 | ||
1550 | pmdp_huge_split_prepare(vma, haddr, pmd); | 1551 | pmdp_huge_split_prepare(vma, haddr, pmd); |
1551 | pgtable = pgtable_trans_huge_withdraw(mm, pmd); | 1552 | pgtable = pgtable_trans_huge_withdraw(mm, pmd); |
@@ -1562,6 +1563,8 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, | |||
1562 | swp_entry_t swp_entry; | 1563 | swp_entry_t swp_entry; |
1563 | swp_entry = make_migration_entry(page + i, write); | 1564 | swp_entry = make_migration_entry(page + i, write); |
1564 | entry = swp_entry_to_pte(swp_entry); | 1565 | entry = swp_entry_to_pte(swp_entry); |
1566 | if (soft_dirty) | ||
1567 | entry = pte_swp_mksoft_dirty(entry); | ||
1565 | } else { | 1568 | } else { |
1566 | entry = mk_pte(page + i, vma->vm_page_prot); | 1569 | entry = mk_pte(page + i, vma->vm_page_prot); |
1567 | entry = maybe_mkwrite(entry, vma); | 1570 | entry = maybe_mkwrite(entry, vma); |
@@ -1569,6 +1572,8 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, | |||
1569 | entry = pte_wrprotect(entry); | 1572 | entry = pte_wrprotect(entry); |
1570 | if (!young) | 1573 | if (!young) |
1571 | entry = pte_mkold(entry); | 1574 | entry = pte_mkold(entry); |
1575 | if (soft_dirty) | ||
1576 | entry = pte_mksoft_dirty(entry); | ||
1572 | } | 1577 | } |
1573 | if (dirty) | 1578 | if (dirty) |
1574 | SetPageDirty(page + i); | 1579 | SetPageDirty(page + i); |