Commit 533c67e6 authored by Kinsey Ho's avatar Kinsey Ho Committed by Andrew Morton

mm/mglru: add dummy pmd_dirty()

Add dummy pmd_dirty() for architectures that don't provide it.
This is similar to commit 6617da8f ("mm: add dummy pmd_young()
for architectures not having it").

Link: https://lkml.kernel.org/r/20231227141205.2200125-5-kinseyho@google.comReported-by: default avatarkernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202312210606.1Etqz3M4-lkp@intel.com/
Closes: https://lore.kernel.org/oe-kbuild-all/202312210042.xQEiqlEh-lkp@intel.com/Signed-off-by: default avatarKinsey Ho <kinseyho@google.com>
Suggested-by: default avatarYu Zhao <yuzhao@google.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Cc: Donet Tom <donettom@linux.vnet.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 745b13e6
...@@ -523,6 +523,7 @@ static inline pmd_t pmd_wrprotect(pmd_t pmd) ...@@ -523,6 +523,7 @@ static inline pmd_t pmd_wrprotect(pmd_t pmd)
return pmd; return pmd;
} }
#define pmd_dirty pmd_dirty
static inline int pmd_dirty(pmd_t pmd) static inline int pmd_dirty(pmd_t pmd)
{ {
return !!(pmd_val(pmd) & (_PAGE_DIRTY | _PAGE_MODIFIED)); return !!(pmd_val(pmd) & (_PAGE_DIRTY | _PAGE_MODIFIED));
......
...@@ -655,6 +655,7 @@ static inline pmd_t pmd_mkwrite_novma(pmd_t pmd) ...@@ -655,6 +655,7 @@ static inline pmd_t pmd_mkwrite_novma(pmd_t pmd)
return pmd; return pmd;
} }
#define pmd_dirty pmd_dirty
static inline int pmd_dirty(pmd_t pmd) static inline int pmd_dirty(pmd_t pmd)
{ {
return !!(pmd_val(pmd) & _PAGE_MODIFIED); return !!(pmd_val(pmd) & _PAGE_MODIFIED);
......
...@@ -673,6 +673,7 @@ static inline int pmd_write(pmd_t pmd) ...@@ -673,6 +673,7 @@ static inline int pmd_write(pmd_t pmd)
return pte_write(pmd_pte(pmd)); return pte_write(pmd_pte(pmd));
} }
#define pmd_dirty pmd_dirty
static inline int pmd_dirty(pmd_t pmd) static inline int pmd_dirty(pmd_t pmd)
{ {
return pte_dirty(pmd_pte(pmd)); return pte_dirty(pmd_pte(pmd));
......
...@@ -770,6 +770,7 @@ static inline int pud_write(pud_t pud) ...@@ -770,6 +770,7 @@ static inline int pud_write(pud_t pud)
return (pud_val(pud) & _REGION3_ENTRY_WRITE) != 0; return (pud_val(pud) & _REGION3_ENTRY_WRITE) != 0;
} }
#define pmd_dirty pmd_dirty
static inline int pmd_dirty(pmd_t pmd) static inline int pmd_dirty(pmd_t pmd)
{ {
return (pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY) != 0; return (pmd_val(pmd) & _SEGMENT_ENTRY_DIRTY) != 0;
......
...@@ -706,6 +706,7 @@ static inline unsigned long pmd_write(pmd_t pmd) ...@@ -706,6 +706,7 @@ static inline unsigned long pmd_write(pmd_t pmd)
#define pud_write(pud) pte_write(__pte(pud_val(pud))) #define pud_write(pud) pte_write(__pte(pud_val(pud)))
#ifdef CONFIG_TRANSPARENT_HUGEPAGE #ifdef CONFIG_TRANSPARENT_HUGEPAGE
#define pmd_dirty pmd_dirty
static inline unsigned long pmd_dirty(pmd_t pmd) static inline unsigned long pmd_dirty(pmd_t pmd)
{ {
pte_t pte = __pte(pmd_val(pmd)); pte_t pte = __pte(pmd_val(pmd));
......
...@@ -141,6 +141,7 @@ static inline int pte_young(pte_t pte) ...@@ -141,6 +141,7 @@ static inline int pte_young(pte_t pte)
return pte_flags(pte) & _PAGE_ACCESSED; return pte_flags(pte) & _PAGE_ACCESSED;
} }
#define pmd_dirty pmd_dirty
static inline bool pmd_dirty(pmd_t pmd) static inline bool pmd_dirty(pmd_t pmd)
{ {
return pmd_flags(pmd) & _PAGE_DIRTY_BITS; return pmd_flags(pmd) & _PAGE_DIRTY_BITS;
......
...@@ -184,6 +184,13 @@ static inline int pmd_young(pmd_t pmd) ...@@ -184,6 +184,13 @@ static inline int pmd_young(pmd_t pmd)
} }
#endif #endif
#ifndef pmd_dirty
static inline int pmd_dirty(pmd_t pmd)
{
return 0;
}
#endif
/* /*
* A facility to provide lazy MMU batching. This allows PTE updates and * A facility to provide lazy MMU batching. This allows PTE updates and
* page invalidations to be delayed until a call to leave lazy MMU mode * page invalidations to be delayed until a call to leave lazy MMU mode
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment