|
@@ -701,6 +701,18 @@ static inline pte_t pte_mknuma(pte_t pte)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+#ifndef ptep_set_numa
|
|
|
+static inline void ptep_set_numa(struct mm_struct *mm, unsigned long addr,
|
|
|
+ pte_t *ptep)
|
|
|
+{
|
|
|
+ pte_t ptent = *ptep;
|
|
|
+
|
|
|
+ ptent = pte_mknuma(ptent);
|
|
|
+ set_pte_at(mm, addr, ptep, ptent);
|
|
|
+ return;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
#ifndef pmd_mknuma
|
|
|
static inline pmd_t pmd_mknuma(pmd_t pmd)
|
|
|
{
|
|
@@ -708,6 +720,18 @@ static inline pmd_t pmd_mknuma(pmd_t pmd)
|
|
|
return pmd_clear_flags(pmd, _PAGE_PRESENT);
|
|
|
}
|
|
|
#endif
|
|
|
+
|
|
|
+#ifndef pmdp_set_numa
|
|
|
+static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
|
|
|
+ pmd_t *pmdp)
|
|
|
+{
|
|
|
+ pmd_t pmd = *pmdp;
|
|
|
+
|
|
|
+ pmd = pmd_mknuma(pmd);
|
|
|
+ set_pmd_at(mm, addr, pmdp, pmd);
|
|
|
+ return;
|
|
|
+}
|
|
|
+#endif
|
|
|
#else
|
|
|
extern int pte_numa(pte_t pte);
|
|
|
extern int pmd_numa(pmd_t pmd);
|
|
@@ -715,6 +739,8 @@ extern pte_t pte_mknonnuma(pte_t pte);
|
|
|
extern pmd_t pmd_mknonnuma(pmd_t pmd);
|
|
|
extern pte_t pte_mknuma(pte_t pte);
|
|
|
extern pmd_t pmd_mknuma(pmd_t pmd);
|
|
|
+extern void ptep_set_numa(struct mm_struct *mm, unsigned long addr, pte_t *ptep);
|
|
|
+extern void pmdp_set_numa(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp);
|
|
|
#endif /* CONFIG_ARCH_USES_NUMA_PROT_NONE */
|
|
|
#else
|
|
|
static inline int pmd_numa(pmd_t pmd)
|
|
@@ -742,10 +768,23 @@ static inline pte_t pte_mknuma(pte_t pte)
|
|
|
return pte;
|
|
|
}
|
|
|
|
|
|
+static inline void ptep_set_numa(struct mm_struct *mm, unsigned long addr,
|
|
|
+ pte_t *ptep)
|
|
|
+{
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
static inline pmd_t pmd_mknuma(pmd_t pmd)
|
|
|
{
|
|
|
return pmd;
|
|
|
}
|
|
|
+
|
|
|
+static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
|
|
|
+ pmd_t *pmdp)
|
|
|
+{
|
|
|
+ return ;
|
|
|
+}
|
|
|
#endif /* CONFIG_NUMA_BALANCING */
|
|
|
|
|
|
#endif /* CONFIG_MMU */
|