Message ID | 20170410020404.11375-1-rashmica.g@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 9e4114b3913cff37be509224116b6f58a2a3918f |
Headers | show |
On 04/10/2017 07:34 AM, Rashmica Gupta wrote: > Current behaviour assumes that memory in RAM is contiguous and > iterates from the start of RAM to (start + size of memory). When the > memory isn't physically contiguous, this approach doesn't work. In dis contiguous platform, we just finish up walking linear mapping prematurely before the end of the RAM ? > > 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 up to the end of RAM. So it fixes the commit which added memblock_phys_mem_size(). Hence needs "Fixes: " tag as well.
On 10/04/17 14:02, Anshuman Khandual wrote: > On 04/10/2017 07:34 AM, Rashmica Gupta wrote: >> Current behaviour assumes that memory in RAM is contiguous and >> iterates from the start of RAM to (start + size of memory). When the >> memory isn't physically contiguous, this approach doesn't work. > In dis contiguous platform, we just finish up walking linear > mapping prematurely before the end of the RAM ? Yes, that is what the following example explains. > >> 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 up to the end of RAM. > So it fixes the commit which added memblock_phys_mem_size(). > Hence needs "Fixes: " tag as well. > Woops, will add that!
On Mon, 2017-04-10 at 02:04:04 UTC, Rashmica Gupta wrote: > Current behaviour assumes that memory in RAM is contiguous and > iterates from the start of RAM to (start + size of memory). When the > memory isn't physically contiguous, this approach 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 up to the end of RAM. > > Signed-off-by: Rashmica Gupta <rashmica.g@gmail.com> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/9e4114b3913cff37be509224116b6f cheers
diff --git a/arch/powerpc/mm/dump_hashpagetable.c b/arch/powerpc/mm/dump_hashpagetable.c index d979709..ee07398 100644 --- a/arch/powerpc/mm/dump_hashpagetable.c +++ b/arch/powerpc/mm/dump_hashpagetable.c @@ -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); }
Current behaviour assumes that memory in RAM is contiguous and iterates from the start of RAM to (start + size of memory). When the memory isn't physically contiguous, this approach 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 up to the end of RAM. Signed-off-by: Rashmica Gupta <rashmica.g@gmail.com> --- arch/powerpc/mm/dump_hashpagetable.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)