Bug 49808 - IA-64 Linux is stopped by using commands control EFI mem.
Summary: IA-64 Linux is stopped by using commands control EFI mem.
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-07-24 07:24 UTC by Shinya Narahara
Modified: 2005-10-31 22:00 UTC (History)
0 users

Clone Of:
Last Closed: 2001-07-24 07:24:25 UTC

Attachments (Terms of Use)

Description Shinya Narahara 2001-07-24 07:24:21 UTC
From Bugzilla Helper:
User-Agent: Mozilla/4.75 [ja] (WinNT; U)

Description of problem:
IA-64 Linux is stopped or dumped core by using
commands control EFI mem, with kernel-2.4.3-12.

How reproducible:

Steps to Reproduce:
1.boot the kernel 2.4.3-12
2.execute commands below:
	# efibootmgr -c -L 'Red Hat Linux' -p 1
	# hwclock --systohc

Actual Results:  Core dump, kernel panic, stop or hungup.

Expected Results:  works good anytime.

Additional info:

This problem is related with BIOS(PAL/SAL) version and
physical memory size. But this is certainly kernel bug,
and we believe this should be fixed.
We guess this is not fixed even in 2.4.6-2.4.

CPU:	IA-64(1 or more)
Mem:	2G
kernel:	2.4.3-12(smp/nonsmp)
	EFI map is below on 2G mem environment.

	Type       Start            End               # Pages          Attributes
	available  0000000000100000-000000007F932FFF  000000000007F833 0000000000000009
	RT_data    000000007F933000-000000007F933FFF  0000000000000001 8000000000000009

	and initrd is loaded onto 0x000000007F920000-0x000000007F932FFF.
	free_initrd_mem() is freed pages belong to 0x000000007F932FFF,
	with 0x000000007F933000-0x000000007F933FFF. This is
	EFI work area, so then conflicts be happened between
	kernel and EFI.

Quick hack:
We don't have confidence, but this patch works well on our test.
	--- arch/ia64/mm/init.c.orig    Tue Jul 24 09:16:33 2001
	+++ arch/ia64/mm/init.c Tue Jul 24 10:43:07 2001
	@@ -136,6 +136,7 @@
		* initrd_start and keep initrd_end as is.
		start = PAGE_ALIGN(start);
	+	end = end & PAGE_MASK;
		if (start < end)
			printk ("Freeing initrd memory: %ldkB freed\n", (end - start) >> 10);

Comment 1 Arjan van de Ven 2001-09-07 10:16:21 UTC
This is in the 2.4.9 kernel indeed; the fix is correct.

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