mm: add architecture primitives for software dirty bit clearing
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 22 Apr 2015 12:20:47 +0000 (14:20 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 14 Oct 2015 12:32:05 +0000 (14:32 +0200)
There are primitives to create and query the software dirty bits
in a pte or pmd. But the clearing of the software dirty bits is done
in common code with x86 specific page table functions.

Add the missing architecture primitives to clear the software dirty
bits to allow the feature to be used on non-x86 systems, e.g. the
s390 architecture.

Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/x86/include/asm/pgtable.h
fs/proc/task_mmu.c
include/asm-generic/pgtable.h

index 867da5bbb4a33df1d268d3f282cda30d0fdf671d..81e144dad4052e18b1368fc2084fd817c177eb45 100644 (file)
@@ -318,6 +318,16 @@ static inline pmd_t pmd_mksoft_dirty(pmd_t pmd)
        return pmd_set_flags(pmd, _PAGE_SOFT_DIRTY);
 }
 
+static inline pte_t pte_clear_soft_dirty(pte_t pte)
+{
+       return pte_clear_flags(pte, _PAGE_SOFT_DIRTY);
+}
+
+static inline pmd_t pmd_clear_soft_dirty(pmd_t pmd)
+{
+       return pmd_clear_flags(pmd, _PAGE_SOFT_DIRTY);
+}
+
 #endif /* CONFIG_HAVE_ARCH_SOFT_DIRTY */
 
 /*
index e2d46adb54b42a76608a0cbf938d55529bd6c851..b029d426c55892544afcd3bf2b8a5965f6e0e5ee 100644 (file)
@@ -754,7 +754,7 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma,
 
        if (pte_present(ptent)) {
                ptent = pte_wrprotect(ptent);
-               ptent = pte_clear_flags(ptent, _PAGE_SOFT_DIRTY);
+               ptent = pte_clear_soft_dirty(ptent);
        } else if (is_swap_pte(ptent)) {
                ptent = pte_swp_clear_soft_dirty(ptent);
        }
@@ -768,7 +768,7 @@ static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
        pmd_t pmd = *pmdp;
 
        pmd = pmd_wrprotect(pmd);
-       pmd = pmd_clear_flags(pmd, _PAGE_SOFT_DIRTY);
+       pmd = pmd_clear_soft_dirty(pmd);
 
        if (vma->vm_flags & VM_SOFTDIRTY)
                vma->vm_flags &= ~VM_SOFTDIRTY;
index 29c57b2cb344dfc0bd73034927bfa50848d6709b..f167cdd80fd7d810feb58fb286700ecdba02b11b 100644 (file)
@@ -482,6 +482,16 @@ static inline pmd_t pmd_mksoft_dirty(pmd_t pmd)
        return pmd;
 }
 
+static inline pte_t pte_clear_soft_dirty(pte_t pte)
+{
+       return pte;
+}
+
+static inline pmd_t pmd_clear_soft_dirty(pmd_t pmd)
+{
+       return pmd;
+}
+
 static inline pte_t pte_swp_mksoft_dirty(pte_t pte)
 {
        return pte;