[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
On Thu, 2013-02-14 at 11:48 +0000, Tim Deegan wrote: > 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) They talk about level 0..3 in their books. (In theory their scheme allows for five levels, not sure what happens then ;-)) > > 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. The cast is associated with the %lx, not the %PRIpaddr. I think PRIpaddr is right where it is used. Casting in the _offset() might be better -- unsigned long is good? > > 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. For talking about actual registers I want to use ARM64 names in any where that isn't 100% 32-bit code. Partly because it makes the accessor macros easier (because the 64-bit gas speaks the names natively, without cpp magic) and also just because I think consistence is worthwhile, nothing would be worse than mixing and matching in common code! For variable names the arm64 names are a bit ugly though (e.g. ttbr0_el2), I think ttbr is a good compromise if the context is such that its not confusing. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |