]> xenbits.xensource.com Git - xen.git/commitdiff
arm/traps: fix bug in dump_guest_s1_walk handling of level 2 page tables
authorJonathan Daugherty <jtd@galois.com>
Wed, 20 Jul 2016 16:10:17 +0000 (09:10 -0700)
committerStefano Stabellini <sstabellini@kernel.org>
Wed, 20 Jul 2016 17:32:55 +0000 (10:32 -0700)
dump_guest_s1_walk intends to walk to level 2 page table entries but
was failing to do so because of a check that caused level 2 page table
descriptors to be ignored. This change fixes the check so that level 2
page table walks occur as intended by ignoring descriptors unless their
low two bits match the expected sequence [0,1].

For more information, see the ARMv7-A ARM DDI 0406C.b, section B3.5.1.

Signed-off-by: Jonathan Daugherty <jtd@galois.com>
Reviewed-by: Julien Grall <julien.grall@arm.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
xen/arch/arm/traps.c

index 0c10c4d1235133aa2a1aeb66a8cefc3700b924f8..dfb1949006931aa223b50e54facaef00467004da 100644 (file)
@@ -2350,7 +2350,7 @@ void dump_guest_s1_walk(struct domain *d, vaddr_t addr)
     printk("1ST[0x%"PRIx32"] (0x%"PRIpaddr") = 0x%08"PRIx32"\n",
            offset, pfn_to_paddr(mfn_x(mfn)), first[offset]);
     if ( !(first[offset] & 0x1) ||
-         !(first[offset] & 0x2) )
+          (first[offset] & 0x2) )
         goto done;
 
     mfn = p2m_lookup(d, _gfn(paddr_to_pfn(first[offset])), NULL);