Hi all, This code isn't really relevant to what I'm working on (it isn't compiled in to kernels for the ip27), but I just noticed it, and it looks broken: /* Find the highest page frame number we have available. */ max_pfn = 0; for (i = 0; i < boot_mem_map.nr_map; i++) { unsigned long start, end; if (boot_mem_map.map[i].type != BOOT_MEM_RAM) continue; ***** start = PFN_UP(boot_mem_map.map[i].addr); ***** end = PFN_DOWN(boot_mem_map.map[i].addr + boot_mem_map.map[i].size); ***** if (start >= end) continue; if (end > max_pfn) max_pfn = end; } That test looks like it will always succeed... and it looks like the author wanted it to be a sanity check. Why all this business with PFN_UP and PFN_DOWN? (They are bit shifts... PFN_UP shifts left, PFN_DOWN shifts right) Cheers, Andrew