target-ppc: Use right page size with hash table lookup
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Mon, 26 Jan 2015 14:21:58 +0000 (19:51 +0530)
committerAlexander Graf <agraf@suse.de>
Mon, 9 Mar 2015 13:59:53 +0000 (14:59 +0100)
commitad3e67d05a65da2e3696ed45b999e061ccb7a879
tree80685f08307ace44bafe3ffc88ad3be4b2218cb3
parentee9a569ab88edd0755402aaf31ec0c69decf7756
target-ppc: Use right page size with hash table lookup

We look at two sizes specified in ISA (4K, 64K). If not found matching,
we consider it 16MB.

Without this patch we would fail to lookup address above 16MB range.
Below 16MB happened to work before because the kernel have a liner
mapping and we always looked up hash for 0xc000000000000000. The
actual real address was computed by using the 16MB offset
with the real address found with the above hash.

Without Fix:
(gdb) x/16x 0xc000000001000000
0xc000000001000000 <list_entries+453208>:       Cannot access memory at address 0xc000000001000000
(gdb)

With Fix:
(gdb)  x/16x 0xc000000001000000
0xc000000001000000 <list_entries+453208>:       0x00000000      0x00000000      0x00000000      0x00000000
0xc000000001000010 <list_entries+453224>:       0x00000000      0x00000000      0x00000000      0x00000000
0xc000000001000020 <list_entries+453240>:       0x00000000      0x00000000      0x00000000      0x00000000
0xc000000001000030 <list_entries+453256>:       0x00000000      0x00000000      0x00000000      0x00000000

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
target-ppc/cpu.h
target-ppc/mmu-hash64.c
target-ppc/mmu-hash64.h