Bug 46213 - Installer hangs when specify
Summary: Installer hangs when specify
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: kernel
Version: 7.1
Hardware: ia64
OS: Linux
Target Milestone: ---
Assignee: Arjan van de Ven
QA Contact: Brock Organ
Depends On:
TreeView+ depends on / blocked
Reported: 2001-06-27 12:41 UTC by Shinya Narahara
Modified: 2005-10-31 22:00 UTC (History)
2 users (show)

Clone Of:
Last Closed: 2001-07-24 06:12:10 UTC

Attachments (Terms of Use)

Description Shinya Narahara 2001-06-27 12:41:24 UTC
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:

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.

Comment 1 Takanori Kawano 2001-06-28 02:51:53 UTC
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) >>

        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;
+               }

Comment 2 Shinya Narahara 2001-12-03 06:50:19 UTC
This issue has been fixed already, kernel-2.4.9 or above.

Note You need to log in before you can comment on or make changes to this bug.