mm: add architecture primitives for software dirty bit clearing
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>
This commit is contained in:
parent
9d49f86dab
commit
a7b7617493
|
@ -318,6 +318,16 @@ static inline pmd_t pmd_mksoft_dirty(pmd_t pmd)
|
||||||
return pmd_set_flags(pmd, _PAGE_SOFT_DIRTY);
|
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 */
|
#endif /* CONFIG_HAVE_ARCH_SOFT_DIRTY */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -754,7 +754,7 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma,
|
||||||
|
|
||||||
if (pte_present(ptent)) {
|
if (pte_present(ptent)) {
|
||||||
ptent = pte_wrprotect(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)) {
|
} else if (is_swap_pte(ptent)) {
|
||||||
ptent = pte_swp_clear_soft_dirty(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_t pmd = *pmdp;
|
||||||
|
|
||||||
pmd = pmd_wrprotect(pmd);
|
pmd = pmd_wrprotect(pmd);
|
||||||
pmd = pmd_clear_flags(pmd, _PAGE_SOFT_DIRTY);
|
pmd = pmd_clear_soft_dirty(pmd);
|
||||||
|
|
||||||
if (vma->vm_flags & VM_SOFTDIRTY)
|
if (vma->vm_flags & VM_SOFTDIRTY)
|
||||||
vma->vm_flags &= ~VM_SOFTDIRTY;
|
vma->vm_flags &= ~VM_SOFTDIRTY;
|
||||||
|
|
|
@ -482,6 +482,16 @@ static inline pmd_t pmd_mksoft_dirty(pmd_t pmd)
|
||||||
return 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)
|
static inline pte_t pte_swp_mksoft_dirty(pte_t pte)
|
||||||
{
|
{
|
||||||
return pte;
|
return pte;
|
||||||
|
|
Loading…
Reference in New Issue