powerpc/mm: Fix hash table dump when memory is not contiguous
authorRashmica Gupta <rashmica.g@gmail.com>
Mon, 10 Apr 2017 02:04:04 +0000 (12:04 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 12 Apr 2017 13:03:32 +0000 (23:03 +1000)
The current behaviour of the hash table dump assumes that memory is contiguous
and iterates from the start of memory to (start + size of memory). When memory
isn't physically contiguous, this doesn't work.

If memory exists at 0-5 GB and 6-10 GB then the current approach will check if
entries exist in the hash table from 0GB to 9GB. This patch changes the
behaviour to iterate over any holes up to the end of memory.

Fixes: 1515ab932156 ("powerpc/mm: Dump hash table")
Signed-off-by: Rashmica Gupta <rashmica.g@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/dump_hashpagetable.c

index d979709a02394a0f3c4d8d3fb717009add884d2a..c6b900f54c07dd417a8c0e33c7353abc71aa11a4 100644 (file)
@@ -468,7 +468,7 @@ static void walk_linearmapping(struct pg_state *st)
        unsigned long psize = 1 << mmu_psize_defs[mmu_linear_psize].shift;
 
        for (addr = PAGE_OFFSET; addr < PAGE_OFFSET +
-                       memblock_phys_mem_size(); addr += psize)
+                       memblock_end_of_DRAM(); addr += psize)
                hpte_find(st, addr, mmu_linear_psize);
 }