From: "Aneesh Kumar K.V" <redacted>
Signed-off-by: Aneesh Kumar K.V <redacted>
---
arch/powerpc/include/asm/pgtable-ppc64.h | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/include/asm/pgtable-ppc64.h b/arch/powerpc/include/asm/pgtable-ppc64.h
index 46db094..f828944 100644
--- a/arch/powerpc/include/asm/pgtable-ppc64.h
+++ b/arch/powerpc/include/asm/pgtable-ppc64.h
@@ -150,8 +150,22 @@
#define pmd_set(pmdp, pmdval) (pmd_val(*(pmdp)) = (pmdval))
#define pmd_none(pmd) (!pmd_val(pmd))
-#define pmd_bad(pmd) (!is_kernel_addr(pmd_val(pmd)) \
- || (pmd_val(pmd) & PMD_BAD_BITS))
+
+static inline int pmd_bad(pmd_t pmd)
+{
+#ifdef CONFIG_NUMA_BALANCING
+ /*
+ * For numa balancing we can have this set
+ */
+ if (pmd_val(pmd) & _PAGE_NUMA)
+ return 0;
+#endif
+ if (!is_kernel_addr(pmd_val(pmd)) ||
+ (pmd_val(pmd) & PMD_BAD_BITS))
+ return 1;
+ return 0;
+}
+
#define pmd_present(pmd) (pmd_val(pmd) != 0)
#define pmd_clear(pmdp) (pmd_val(*(pmdp)) = 0)
#define pmd_page_vaddr(pmd) (pmd_val(pmd) & ~PMD_MASKED_BITS)--
1.8.3.2