From 60e06f2b1b2b818a6e13c719d2df17e434433e6e Mon Sep 17 00:00:00 2001 From: Jonathan Daugherty Date: Wed, 20 Jul 2016 09:10:16 -0700 Subject: [PATCH] arm/traps: fix bug in dump_guest_s1_walk L1 page table offset computation The dump_guest_s1_walk function was incorrectly using the top 10 bits of the virtual address to select the L1 page table index. The correct amount is 12 bits, resulting in a shift of 20 bits rather than 22. For more details, see the ARMv7-A ARM DDI 0406C.b, section B3.5, "Short-descriptor translation table format." Signed-off-by: Jonathan Daugherty Reviewed-by: Julien Grall Acked-by: Stefano Stabellini --- xen/arch/arm/traps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c index a2eb1da7cd..0c10c4d123 100644 --- a/xen/arch/arm/traps.c +++ b/xen/arch/arm/traps.c @@ -2346,7 +2346,7 @@ void dump_guest_s1_walk(struct domain *d, vaddr_t addr) } first = map_domain_page(mfn); - offset = addr >> (12+10); + offset = addr >> (12+8); printk("1ST[0x%"PRIx32"] (0x%"PRIpaddr") = 0x%08"PRIx32"\n", offset, pfn_to_paddr(mfn_x(mfn)), first[offset]); if ( !(first[offset] & 0x1) || -- 2.30.2