powerpc: add support for folded p4d page tables
[linux-2.6-block.git] / arch / powerpc / mm / ptdump / ptdump.c
index d92bb8ea229c5324c933b38c1cda5ee3d0306241..b3fead0230c1d40a5fd6c22f737be8f7a4890e97 100644 (file)
@@ -277,9 +277,9 @@ static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start)
        }
 }
 
-static void walk_pud(struct pg_state *st, pgd_t *pgd, unsigned long start)
+static void walk_pud(struct pg_state *st, p4d_t *p4d, unsigned long start)
 {
-       pud_t *pud = pud_offset(pgd, 0);
+       pud_t *pud = pud_offset(p4d, 0);
        unsigned long addr;
        unsigned int i;
 
@@ -304,11 +304,13 @@ static void walk_pagetables(struct pg_state *st)
         * the hash pagetable.
         */
        for (i = pgd_index(addr); i < PTRS_PER_PGD; i++, pgd++, addr += PGDIR_SIZE) {
-               if (!pgd_none(*pgd) && !pgd_is_leaf(*pgd))
+               p4d_t *p4d = p4d_offset(pgd, 0);
+
+               if (!p4d_none(*p4d) && !p4d_is_leaf(*p4d))
                        /* pgd exists */
-                       walk_pud(st, pgd, addr);
+                       walk_pud(st, p4d, addr);
                else
-                       note_page(st, addr, 1, pgd_val(*pgd));
+                       note_page(st, addr, 1, p4d_val(*p4d));
        }
 }