Dave Please go through my observation. > > That makes the most sense at this point. This is what I was > planning for vm_init(): > > > @@ -694,7 +708,8 @@ vm_init(void) > vt->PG_slab = 10; > else if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) > vt->PG_slab = 7; > - } > + } else if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) > + vt->PG_slab = 7; > } here for the dump I was looking into vt->PG_slab needs to be set to 10 and not 7. as slab value was 1024 in dump_mem_map() function. > /* > > > > > > > > > o The output is breaking as totalhigh_pages is coming out zero, > > So part of code in function dump_kmeminfo() > > pct = freehighmem_pages ? > > (freehighmem_pages * 100)/totalhigh_pages : > > 0; > > Cause Arithmetic calculation error. > > > > Still looking into the problem. > > > I can't reproduce this one. In your case though, with > about 500MB, both "freehighmem_pages" and "totalhigh_pages" > should both be zero, leading to a "pct" setting of 0. > Are you showing "freehighmem_pages" as non-zero? > > Dave I could see totalhigh_pages coming out zero which was the right thing (As it was x86_64 machine) but freehighmem_pages came out as a non zero quantity. In function :dump_free_pages_zones_v2(). I could see vt->nr_zones as 4 which I feel is incorrect and hence it entered the block if (i == ZONE_HIGHMEM) { readmem(node_zones+ OFFSET(zone_free_pages), KVADDR, &value, sizeof(ulong), "node_zones free_pages", FAULT_ON_ERROR); sum += value; } and sum was updated with a value and hence freehighmem_pages causing Arithmetic exception Regards Sharyathi Nagesh