Bug 46213

Summary: Installer hangs when specify
Product: [Retired] Red Hat Linux Reporter: Shinya Narahara <naraha_s>
Component: kernelAssignee: Arjan van de Ven <arjanv>
Status: CLOSED RAWHIDE QA Contact: Brock Organ <borgan>
Severity: high Docs Contact:
Priority: high    
Version: 7.1CC: bhuang, ynakai
Target Milestone: ---   
Target Release: ---   
Hardware: ia64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2001-07-24 06:12:10 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

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:
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.

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




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