On 25.07.2022 18:05, Julien Grall wrote: > (Sorry for the formatting) No issues seen.
> On Mon, 25 Jul 2022, 14:10 Jan Beulich, <jbeul...@suse.com> wrote: > >> Quite obviously to determine the split condition successive pages' >> attributes need to be evaluated, not always those of the initial page. >> >> Fixes: 72b02bc75b47 ("xen/heap: pass order to free_heap_pages() in heap >> init") >> Signed-off-by: Jan Beulich <jbeul...@suse.com> >> --- >> Part of the problem was already introduced in 24a53060bd37 ("xen/heap: >> Split init_heap_pages() in two"), but there it was still benign. >> > > Is this because range will never cross numa node? How about the fake NUMA > node? No (afaict), because pages were still freed one by one (and hence node boundaries still wouldn't end up in the middle of a buddy). >> --- a/xen/common/page_alloc.c >> +++ b/xen/common/page_alloc.c >> @@ -1885,11 +1885,11 @@ static void init_heap_pages( >> * range to cross zones. >> */ >> #ifdef CONFIG_SEPARATE_XENHEAP >> - if ( zone != page_to_zone(pg) ) >> + if ( zone != page_to_zone(pg + contig_pages) ) >> break; >> #endif >> >> - if ( nid != (phys_to_nid(page_to_maddr(pg))) ) >> + if ( nid != (phys_to_nid(page_to_maddr(pg + contig_pages))) ) >> break; >> } >> > > Hmmm I am not sure why I didn't spot this issue during my testing. It looks > like this was introduced in v2, sorry for that. > > Reviewed-by: Julien Grall <jgr...@amazon.com> Thanks. Jan