On 7/11/19 12:45 PM, Dave Hansen wrote: > 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? Yes. However, the base_pfn and end_pfn will be updated with the zone1's base and zone2s end_pfn value from page_hinting_enable(). Isn't? -- Thanks Nitesh