I didn't read this thoughly yet because I will be travelling shortly but this point alone just made ask, because it seems there is some misunderstanding
On Fri 28-04-17 11:04:27, Igor Stoppa wrote: [...] > * if one is happy to have a 64bits type, allow for as many zones as > it's possible to fit, or anyway more than what is possible with > the 32 bit mask. zones are currently placed in struct page::flags. And that already is 64b size on 64b arches. And we do not really have any room spare there. We encode page flags, zone id, numa_nid/sparse section_nr there. How can you add more without enlarging the struct page itself or using external means to store the same information (page_ext comes to mind)? Even if the later would be possible then note thatpage_zone() is used in many performance sensitive paths and making it perform well with special casing would be far from trivial. -- Michal Hocko SUSE Labs