On Fri, 12 Aug 2011, Pintu Agarwal wrote: > On my system I have only DMA zones with 3 nodes as follows: > Node 0, zone      DMA      3      4      6      4      5      0      0      0      0      0      0 > Node 1, zone      DMA      8      4      3      8      7      4      2      0      0      0      0 > Node 2, zone      DMA     10      2      8      3      2      2      4      1      2      2     28 Weird system. One would expect it to only have NORMAL zones. Is this an ARM system? > In __alloc_pages_nodemask(...), just before "First Allocation Attempt" [that is before get_page_from_freelist(....)], I wanted to print all the free pages from the "preferred_zone". > Using something like this : > totalfreepages = zone_page_state(zone, NR_FREE_PAGES); >   > But in my case, there is only one zone (DMA) but 3 nodes. > Thus the above "zone_page_state" always returns totalfreepages only from first Node 0. > But the allocation actually happening from Node 2. >   > How can we point to the zone of Node 2 to get the actual value? > I am not sure that I understand you correctly but you can get the data from node 2 via zone_page_state(NODE_DATA[2]->node_zones[ZONE_DMA], NR_FREE_PAGES); or in __alloc_pages_nodemask zone_page_state(preferred_zone, NR_FREE_PAGES);