In "arch/mips/kernel/setup.c", it appears that the "free memory" pool is the memory area after kernel code and initrd if configured. Since the location of "initrd" is set by "rd_start", it is possible that there will be "memory hole" between the kernel and "initrd". It is my understanding that the memory area up to the "free memory" pool will not be available, even after "initrd" is freed later in the boot process. I am curious as why it is necessary to do it this way? What if we treat the whole area after the kernel code as the "free memory" pool? This shouldn't affect "initrd", as the memory used by "initrd" is reserved. I looked at both older 2.6.14 and the latest kernel code. That part of the logic seems largely unchanged. I suspect I must have missed something. Thanks for your help in advance. Regards, Steve.