|
@@ -1605,37 +1605,20 @@ static inline int __pud_alloc(struct mm_struct *mm, p4d_t *p4d,
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
-static inline unsigned long mm_nr_puds(const struct mm_struct *mm)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static inline void mm_nr_puds_init(struct mm_struct *mm) {}
|
|
|
static inline void mm_inc_nr_puds(struct mm_struct *mm) {}
|
|
|
static inline void mm_dec_nr_puds(struct mm_struct *mm) {}
|
|
|
|
|
|
#else
|
|
|
int __pud_alloc(struct mm_struct *mm, p4d_t *p4d, unsigned long address);
|
|
|
|
|
|
-static inline void mm_nr_puds_init(struct mm_struct *mm)
|
|
|
-{
|
|
|
- atomic_long_set(&mm->nr_puds, 0);
|
|
|
-}
|
|
|
-
|
|
|
-static inline unsigned long mm_nr_puds(const struct mm_struct *mm)
|
|
|
-{
|
|
|
- return atomic_long_read(&mm->nr_puds);
|
|
|
-}
|
|
|
-
|
|
|
static inline void mm_inc_nr_puds(struct mm_struct *mm)
|
|
|
{
|
|
|
- atomic_long_inc(&mm->nr_puds);
|
|
|
+ atomic_long_add(PTRS_PER_PUD * sizeof(pud_t), &mm->pgtables_bytes);
|
|
|
}
|
|
|
|
|
|
static inline void mm_dec_nr_puds(struct mm_struct *mm)
|
|
|
{
|
|
|
- atomic_long_dec(&mm->nr_puds);
|
|
|
+ atomic_long_sub(PTRS_PER_PUD * sizeof(pud_t), &mm->pgtables_bytes);
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -1646,64 +1629,47 @@ static inline int __pmd_alloc(struct mm_struct *mm, pud_t *pud,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static inline void mm_nr_pmds_init(struct mm_struct *mm) {}
|
|
|
-
|
|
|
-static inline unsigned long mm_nr_pmds(const struct mm_struct *mm)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static inline void mm_inc_nr_pmds(struct mm_struct *mm) {}
|
|
|
static inline void mm_dec_nr_pmds(struct mm_struct *mm) {}
|
|
|
|
|
|
#else
|
|
|
int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address);
|
|
|
|
|
|
-static inline void mm_nr_pmds_init(struct mm_struct *mm)
|
|
|
-{
|
|
|
- atomic_long_set(&mm->nr_pmds, 0);
|
|
|
-}
|
|
|
-
|
|
|
-static inline unsigned long mm_nr_pmds(const struct mm_struct *mm)
|
|
|
-{
|
|
|
- return atomic_long_read(&mm->nr_pmds);
|
|
|
-}
|
|
|
-
|
|
|
static inline void mm_inc_nr_pmds(struct mm_struct *mm)
|
|
|
{
|
|
|
- atomic_long_inc(&mm->nr_pmds);
|
|
|
+ atomic_long_add(PTRS_PER_PMD * sizeof(pmd_t), &mm->pgtables_bytes);
|
|
|
}
|
|
|
|
|
|
static inline void mm_dec_nr_pmds(struct mm_struct *mm)
|
|
|
{
|
|
|
- atomic_long_dec(&mm->nr_pmds);
|
|
|
+ atomic_long_sub(PTRS_PER_PMD * sizeof(pmd_t), &mm->pgtables_bytes);
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_MMU
|
|
|
-static inline void mm_nr_ptes_init(struct mm_struct *mm)
|
|
|
+static inline void mm_pgtables_bytes_init(struct mm_struct *mm)
|
|
|
{
|
|
|
- atomic_long_set(&mm->nr_ptes, 0);
|
|
|
+ atomic_long_set(&mm->pgtables_bytes, 0);
|
|
|
}
|
|
|
|
|
|
-static inline unsigned long mm_nr_ptes(const struct mm_struct *mm)
|
|
|
+static inline unsigned long mm_pgtables_bytes(const struct mm_struct *mm)
|
|
|
{
|
|
|
- return atomic_long_read(&mm->nr_ptes);
|
|
|
+ return atomic_long_read(&mm->pgtables_bytes);
|
|
|
}
|
|
|
|
|
|
static inline void mm_inc_nr_ptes(struct mm_struct *mm)
|
|
|
{
|
|
|
- atomic_long_inc(&mm->nr_ptes);
|
|
|
+ atomic_long_add(PTRS_PER_PTE * sizeof(pte_t), &mm->pgtables_bytes);
|
|
|
}
|
|
|
|
|
|
static inline void mm_dec_nr_ptes(struct mm_struct *mm)
|
|
|
{
|
|
|
- atomic_long_dec(&mm->nr_ptes);
|
|
|
+ atomic_long_sub(PTRS_PER_PTE * sizeof(pte_t), &mm->pgtables_bytes);
|
|
|
}
|
|
|
#else
|
|
|
-static inline void mm_nr_ptes_init(struct mm_struct *mm) {}
|
|
|
|
|
|
-static inline unsigned long mm_nr_ptes(const struct mm_struct *mm)
|
|
|
+static inline void mm_pgtables_bytes_init(struct mm_struct *mm) {}
|
|
|
+static inline unsigned long mm_pgtables_bytes(const struct mm_struct *mm)
|
|
|
{
|
|
|
return 0;
|
|
|
}
|