[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v7 14/14] xen/arm: add cache coloring support for Xen
On 15.03.2024 11:59, Carlo Nonato wrote: > @@ -62,7 +63,67 @@ unsigned int __init get_llc_way_size(void) > return line_size * num_sets; > } > > -void __init arch_llc_coloring_init(void) {} Btw, doing things this way isn't very nice. I was about to ask ... > +/** > + * get_xen_paddr - get physical address to relocate Xen to > + * > + * Xen is relocated to as near to the top of RAM as possible and > + * aligned to a XEN_PADDR_ALIGN boundary. > + */ > +static paddr_t __init get_xen_paddr(paddr_t xen_size) > +{ > + const struct meminfo *mi = &bootinfo.mem; > + paddr_t min_size; > + paddr_t paddr = 0; > + unsigned int i; > + > + min_size = (xen_size + (XEN_PADDR_ALIGN-1)) & ~(XEN_PADDR_ALIGN-1); > + > + /* Find the highest bank with enough space. */ > + for ( i = 0; i < mi->nr_banks; i++ ) > + { > + const struct membank *bank = &mi->bank[i]; > + paddr_t s, e; > + > + if ( bank->size >= min_size ) > + { > + e = consider_modules(bank->start, bank->start + bank->size, > + min_size, XEN_PADDR_ALIGN, 0); > + if ( !e ) > + continue; > + > +#ifdef CONFIG_ARM_32 > + /* Xen must be under 4GB */ > + if ( e > GB(4) ) > + e = GB(4); > + if ( e < bank->start ) > + continue; > +#endif > + > + s = e - min_size; > + > + if ( s > paddr ) > + paddr = s; > + } > + } > + > + if ( !paddr ) > + panic("Not enough memory to relocate Xen\n"); > + > + printk("Placing Xen at 0x%"PRIpaddr"-0x%"PRIpaddr"\n", > + paddr, paddr + min_size); > + > + return paddr; > +} > + > +void __init arch_llc_coloring_init(void) > +{ > + struct bootmodule *xen_bootmodule = > boot_module_find_by_kind(BOOTMOD_XEN); > + > + BUG_ON(!xen_bootmodule); > + > + xen_bootmodule->size = xen_colored_map_size(); > + xen_bootmodule->start = get_xen_paddr(xen_bootmodule->size); > +} ... whether the build wouldn't have been broken until this function is added. Since you know the function is going to gain a non-empty body, please introduce it in the earlier patch as void __init arch_llc_coloring_init(void) { } instead. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |