From Bugzilla Helper: User-Agent: Mozilla/4.75 [ja] (WinNT; U) Description of problem: IA-64 Installer, the kernel 2.4.3-12, may have a memory bug. How reproducible: Always Steps to Reproduce: 1. Boot IA-64 machine. 2. Insert redhat 7.1 Installation CD-ROM. 3. input string below, on the EFI shell. elilo linux mem=512m Actual Results: Kernel panic happens between kernel booting. The message is below: ... Freeing initrd memory: 692kB freed kernel BUG at page_alloc.c:86! Expected Results: normal boot. Additional info: We saw this on the machines IA-64 2way, 4way and 8way. We suppose this is caused by the kernel patch linux-2.4.2-vmpoisone.patch. If we can't specify the kernel parameter "mem=", it will be kernel panic between installation of redhat Linux for IA-64 on the machine which has much memory(ex. 8Gbyte), because of the lack of the SWIOTLB buffer(DMA buffer). We think this may be avoided by using an another kernel parameter "swiotlb=16384", 256Mbyte, however very doubtful.
On my investigation, the cause is that: (1) When 'mem=xxx' is used, it is possible that the page corresponds to the memory used by initrd is not made because initrd is loaded into high address region by bootloader. (2) free_initrd_mem() frees the memory used by initrd even if its corresponding page was not exist. The following is the patch I sent this to linux kernel ML. I saw the kernel applied this patch boots normally with 'mem=512m' on Bigsur with 1GB memory. --- ./arch/ia64/mm/init.c Thu Jun 28 10:16:45 2001 +++ ./arch/ia64/mm/init.c.new Thu Jun 28 09:57:58 2001 @@ -141,10 +141,12 @@ printk ("Freeing initrd memory: %ldkB freed\n", (end - start) >> 10); for (; start < end; start += PAGE_SIZE) { - clear_bit(PG_reserved, &virt_to_page(start)->flags); - set_page_count(virt_to_page(start), 1); - free_page(start); - ++totalram_pages; + if (VALID_PAGE(virt_to_page(start))) { + clear_bit(PG_reserved, &virt_to_page(start)->flags); + set_page_count(virt_to_page(start), 1); + free_page(start); + ++totalram_pages; + } } }
This issue has been fixed already, kernel-2.4.9 or above.