|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 21/45] xen: arm64: changes to setup_pagetables and mm.c
At 15:56 +0000 on 23 Jan (1358956587), Ian Campbell wrote:
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> index eb5213e..e870ef6 100644
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -40,13 +40,17 @@
> struct domain *dom_xen, *dom_io, *dom_cow;
>
> /* Static start-of-day pagetables that we use before the allocators
> are up */
> +/* xen_pgtable == root of the trie (zeroeth level on 64-bit, first on
> 32-bit) */
Is 0th ARM's numbering scheme or ours? I don't object to it, but if
we're diverging from their numbering we should say so somewhere
(e.g. in the comment in asm-arm/page.h:75)
> lpae_t xen_pgtable[LPAE_ENTRIES] __attribute__((__aligned__(4096)));
> +#ifdef CONFIG_ARM_64
> +lpae_t xen_first[LPAE_ENTRIES] __attribute__((__aligned__(4096)));
> +#endif
> lpae_t xen_second[LPAE_ENTRIES*4] __attribute__((__aligned__(4096*4)));
> lpae_t xen_fixmap[LPAE_ENTRIES] __attribute__((__aligned__(4096)));
> static lpae_t xen_xenmap[LPAE_ENTRIES] __attribute__((__aligned__(4096)));
>
> /* Non-boot CPUs use this to find the correct pagetables. */
> -uint64_t boot_httbr;
> +uint64_t boot_ttbr;
>
> static paddr_t phys_offset;
>
> @@ -69,24 +73,24 @@ void dump_pt_walk(lpae_t *first, paddr_t addr)
> if ( first_table_offset(addr) >= LPAE_ENTRIES )
> return;
>
> - printk("1ST[0x%llx] = 0x%"PRIpaddr"\n",
> - first_table_offset(addr),
> + printk("1ST[0x%lx] = 0x%"PRIpaddr"\n",
> + (unsigned long)first_table_offset(addr),
Eep! Please either cast to paddr_t or stop using PRIpaddr (likewise
below). I suppose it might be useful to have the nth_*_offset() macros
explicitly cast to some suitable small integer type, instead.
> first[first_table_offset(addr)].bits);
> if ( !first[first_table_offset(addr)].walk.valid ||
> !first[first_table_offset(addr)].walk.table )
> goto done;
>
> second = map_domain_page(first[first_table_offset(addr)].walk.base);
> - printk("2ND[0x%llx] = 0x%"PRIpaddr"\n",
> - second_table_offset(addr),
> + printk("2ND[0x%lx] = 0x%"PRIpaddr"\n",
> + (unsigned long)second_table_offset(addr),
> second[second_table_offset(addr)].bits);
> if ( !second[second_table_offset(addr)].walk.valid ||
> !second[second_table_offset(addr)].walk.table )
> goto done;
>
> third = map_domain_page(second[second_table_offset(addr)].walk.base);
> - printk("3RD[0x%llx] = 0x%"PRIpaddr"\n",
> - third_table_offset(addr),
> + printk("3RD[0x%lx] = 0x%"PRIpaddr"\n",
> + (unsigned long)third_table_offset(addr),
> third[third_table_offset(addr)].bits);
>
> done:
> @@ -95,14 +99,14 @@ done:
>
> }
>
> -void dump_hyp_walk(uint32_t addr)
> +void dump_hyp_walk(vaddr_t addr)
> {
> - uint64_t httbr = READ_CP64(HTTBR);
> + uint64_t ttbr = READ_SYSREG64(TTBR0_EL2);
>
> - printk("Walking Hypervisor VA 0x%08"PRIx32" via HTTBR 0x%016"PRIx64"\n",
> - addr, httbr);
> + printk("Walking Hypervisor VA 0x%"PRIvaddr" via TTBR0_EL2
> 0x%016"PRIx64"\n",
> + addr, ttbr);
Are we going with ARM64 names for HTTBR &c even on 32-bit? Maybe 'TTBR'
would do in this case.
Cheers,
Tim.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |