|
@@ -5,6 +5,7 @@
|
|
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
#include <linux/mmdebug.h>
|
|
|
+#include <linux/bug.h>
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
@@ -79,6 +80,9 @@
|
|
|
|
|
|
#define _PAGE_SOFT_DIRTY _RPAGE_SW3 /* software: software dirty tracking */
|
|
|
#define _PAGE_SPECIAL _RPAGE_SW2 /* software: special page */
|
|
|
+#define _PAGE_DEVMAP _RPAGE_SW1 /* software: ZONE_DEVICE page */
|
|
|
+#define __HAVE_ARCH_PTE_DEVMAP
|
|
|
+
|
|
|
/*
|
|
|
* Drivers request for cache inhibited pte mapping using _PAGE_NO_CACHE
|
|
|
* Instead of fixing all of them, add an alternate define which
|
|
@@ -599,6 +603,16 @@ static inline pte_t pte_mkhuge(pte_t pte)
|
|
|
return pte;
|
|
|
}
|
|
|
|
|
|
+static inline pte_t pte_mkdevmap(pte_t pte)
|
|
|
+{
|
|
|
+ return __pte(pte_val(pte) | _PAGE_SPECIAL|_PAGE_DEVMAP);
|
|
|
+}
|
|
|
+
|
|
|
+static inline int pte_devmap(pte_t pte)
|
|
|
+{
|
|
|
+ return !!(pte_raw(pte) & cpu_to_be64(_PAGE_DEVMAP));
|
|
|
+}
|
|
|
+
|
|
|
static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
|
|
|
{
|
|
|
/* FIXME!! check whether this need to be a conditional */
|
|
@@ -1146,6 +1160,37 @@ static inline bool arch_needs_pgtable_deposit(void)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+static inline pmd_t pmd_mkdevmap(pmd_t pmd)
|
|
|
+{
|
|
|
+ return __pmd(pmd_val(pmd) | (_PAGE_PTE | _PAGE_DEVMAP));
|
|
|
+}
|
|
|
+
|
|
|
+static inline int pmd_devmap(pmd_t pmd)
|
|
|
+{
|
|
|
+ return pte_devmap(pmd_pte(pmd));
|
|
|
+}
|
|
|
+
|
|
|
+static inline int pud_devmap(pud_t pud)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static inline int pgd_devmap(pgd_t pgd)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
|
|
+
|
|
|
+static inline const int pud_pfn(pud_t pud)
|
|
|
+{
|
|
|
+ /*
|
|
|
+ * Currently all calls to pud_pfn() are gated around a pud_devmap()
|
|
|
+ * check so this should never be used. If it grows another user we
|
|
|
+ * want to know about it.
|
|
|
+ */
|
|
|
+ BUILD_BUG();
|
|
|
+ return 0;
|
|
|
+}
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
#endif /* _ASM_POWERPC_BOOK3S_64_PGTABLE_H_ */
|