On Fri, Feb 12, 2021 at 10:56:19AM +0100, David Hildenbrand wrote: > On 12.02.21 10:55, David Hildenbrand wrote: > > On 08.02.21 12:08, Mike Rapoport wrote: > > > +#ifdef CONFIG_SPARSEMEM > > > + /* > > > + * Sections in the memory map may not match actual populated > > > + * memory, extend the node span to cover the entire section. > > > + */ > > > + *start_pfn = round_down(*start_pfn, PAGES_PER_SECTION); > > > + *end_pfn = round_up(*end_pfn, PAGES_PER_SECTION); > > > > Does that mean that we might create overlapping zones when one node > > s/overlapping zones/overlapping nodes/ > > > starts in the middle of a section and the other one ends in the middle > > of a section? > > > Could it be a problem? (e.g., would we have to look at neighboring nodes > > when making the decision to extend, and how far to extend?) Having a node end/start in a middle of a section would be a problem, but in this case I don't see a way to detect how a node should be extended :( We can return to a v4 [1] without x86 modifications. With that we'll have struct pages corresponding to a hole in a middle of a zone with correct zone link and a good guess for the node. As for the pfn 0 on x86, it'll remain outside any node and zone, but since it was the case since, like forever, I think we can live with it. [1] https://lore.kernel.org/lkml/20210130221035.4169-1-rppt@xxxxxxxxxx -- Sincerely yours, Mike.