On 7/11/19 9:36 AM, Nitesh Narayan Lal wrote: >>>>> +struct zone_free_area { >>>>> + unsigned long *bitmap; >>>>> + unsigned long base_pfn; >>>>> + unsigned long end_pfn; >>>>> + atomic_t free_pages; >>>>> + unsigned long nbits; >>>>> +} free_area[MAX_NR_ZONES]; >>>> Why do we need an extra data structure. What's wrong with putting >>>> per-zone data in ... 'struct zone'? >>> Will it be acceptable to add fields in struct zone, when they will only >>> be used by page hinting? >> Wait a sec... MAX_NR_ZONES the number of zone types not the maximum >> number of *zones* in the system. >> >> Did you test this on a NUMA system? > Yes, I tested it with a guest having 2 and 3 NUMA nodes. How can this *possibly* have worked? Won't each same-typed zone just use the same free_area[] entry since zone_idx(zone1)==zone_idx(zone2) if zone1 and zone2 are (for example) both ZONE_NORMAL?