Re: booting with BootX corrupts memory

7 messages, 3 authors, 2006-08-23 · open the first message on its own page

Re: booting with BootX corrupts memory

From: Niels Kristian Bech Jensen <hidden>
Date: 2006-08-09 05:04:02

 On Tue, Aug  1, Olaf Hering wrote:
Booting an old Mac with BootX corrupts memory, the kernel seldom gets
into init. Even the built-in initramfs archive gets corrupted. So far I
havent figured out where the corruption starts. The only data point so
far is that a passed initrd gets overwritten with stuff that looks like
part of the device-tree after the call to free_area_init_node() from
paging_init(). Perhaps the virtual/real address mapping isnt handled
correctly.
This is broken since at least 2.6.15, 2.6.14 dies very early, 2.6.13 was
still ok.
Symptoms differ, depending on used .config and wether an initrd is passed.
I think I've been hit by this bug on my beige G3 running Ubuntu Edgy.

When booting with initrd the boot process stops before any kernel output (CONFIG_BOOTX_TEXT is not enabled). Booting without initrd works fine - at least until it cannot find the root filesystem driver. ;-)

Anything I can do to help debug this?

Regards,
-- 
Niels Kristian Bech Jensen

Stop software piracy --- use free software.

Re: booting with BootX corrupts memory

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2006-08-18 04:02:31

On Wed, 2006-08-09 at 06:00 +0200, Niels Kristian Bech Jensen wrote:
 On Tue, Aug  1, Olaf Hering wrote:
quoted
Booting an old Mac with BootX corrupts memory, the kernel seldom gets
into init. Even the built-in initramfs archive gets corrupted. So far I
havent figured out where the corruption starts. The only data point so
far is that a passed initrd gets overwritten with stuff that looks like
part of the device-tree after the call to free_area_init_node() from
paging_init(). Perhaps the virtual/real address mapping isnt handled
correctly.
quoted
This is broken since at least 2.6.15, 2.6.14 dies very early, 2.6.13 was
still ok.
quoted
Symptoms differ, depending on used .config and wether an initrd is passed.
I think I've been hit by this bug on my beige G3 running Ubuntu Edgy.

When booting with initrd the boot process stops before any kernel output (CONFIG_BOOTX_TEXT is not enabled).
Booting without initrd works fine - at least until it cannot find the root filesystem driver. ;-)
Does this patch helps ?

Index: linux-work/arch/powerpc/platforms/powermac/bootx_init.c
===================================================================
--- linux-work.orig/arch/powerpc/platforms/powermac/bootx_init.c	2006-08-17 16:16:03.000000000 +1000
+++ linux-work/arch/powerpc/platforms/powermac/bootx_init.c	2006-08-18 14:01:36.000000000 +1000
@@ -411,8 +411,15 @@
 	DBG("End of boot params: %x\n", mem_end);
 	rsvmap[0] = mem_start;
 	rsvmap[1] = mem_end;
-	rsvmap[2] = 0;
-	rsvmap[3] = 0;
+	if (bootx_info->ramDisk) {
+		rsvmap[2] = ((unsigned long)bootx_info) + bootx_info->ramDisk;
+		rsvmap[3] = rsvmap[2] + bootx_info->ramDiskSize;
+		rsvmap[4] = 0;
+		rsvmap[5] = 0;
+	} else {
+		rsvmap[2] = 0;
+		rsvmap[3] = 0;
+	}
 
 	return (unsigned long)hdr;
 }
@@ -543,12 +550,12 @@
 	 */
 	if (bi->version < 5) {
 		space = bi->deviceTreeOffset + bi->deviceTreeSize;
-		if (bi->ramDisk)
+		if (bi->ramDisk >= space)
 			space = bi->ramDisk + bi->ramDiskSize;
 	} else
 		space = bi->totalParamsSize;
 
-	bootx_printf("Total space used by parameters & ramdisk: %x \n", space);
+	bootx_printf("Total space used by parameters & ramdisk: 0x%x \n", space);
 
 	/* New BootX will have flushed all TLBs and enters kernel with
 	 * MMU switched OFF, so this should not be useful anymore.

Re: booting with BootX corrupts memory

From: Olaf Hering <hidden>
Date: 2006-08-18 07:01:26

On Fri, Aug 18, 2006 at 02:02:12PM +1000, Benjamin Herrenschmidt wrote:
On Wed, 2006-08-09 at 06:00 +0200, Niels Kristian Bech Jensen wrote:
quoted
 On Tue, Aug  1, Olaf Hering wrote:
quoted
Booting an old Mac with BootX corrupts memory, the kernel seldom gets
into init. Even the built-in initramfs archive gets corrupted. So far I
havent figured out where the corruption starts. The only data point so
far is that a passed initrd gets overwritten with stuff that looks like
part of the device-tree after the call to free_area_init_node() from
paging_init(). Perhaps the virtual/real address mapping isnt handled
correctly.
quoted
This is broken since at least 2.6.15, 2.6.14 dies very early, 2.6.13 was
still ok.
quoted
Symptoms differ, depending on used .config and wether an initrd is passed.
I think I've been hit by this bug on my beige G3 running Ubuntu Edgy.

When booting with initrd the boot process stops before any kernel output (CONFIG_BOOTX_TEXT is not enabled).
Booting without initrd works fine - at least until it cannot find the root filesystem driver. ;-)
Does this patch helps ?
No, now I dont even get console= output on serial console.

Re: booting with BootX corrupts memory

From: Niels Kristian Bech Jensen <hidden>
Date: 2006-08-18 12:10:16

On Fri, 2006-08-18 at 14:02 +1000, Benjamin Herrenschmidt wrote:
On Wed, 2006-08-09 at 06:00 +0200, Niels Kristian Bech Jensen wrote:
quoted
 On Tue, Aug  1, Olaf Hering wrote:
quoted
Booting an old Mac with BootX corrupts memory, the kernel seldom gets
into init. Even the built-in initramfs archive gets corrupted. So far I
havent figured out where the corruption starts. The only data point so
far is that a passed initrd gets overwritten with stuff that looks like
part of the device-tree after the call to free_area_init_node() from
paging_init(). Perhaps the virtual/real address mapping isnt handled
correctly.
quoted
This is broken since at least 2.6.15, 2.6.14 dies very early, 2.6.13 was
still ok.
quoted
Symptoms differ, depending on used .config and wether an initrd is passed.
I think I've been hit by this bug on my beige G3 running Ubuntu Edgy.

When booting with initrd the boot process stops before any kernel output (CONFIG_BOOTX_TEXT is not enabled).
Booting without initrd works fine - at least until it cannot find the root filesystem driver. ;-)
Does this patch helps ?
Yes, it fixes the problem for me. Thanks.

-- 
Niels Kristian Bech Jensen

Stop software piracy --- use free software.

Re: booting with BootX corrupts memory

From: Olaf Hering <hidden>
Date: 2006-08-21 12:23:10

On Fri, Aug 18, 2006 at 09:01:13AM +0200, Olaf Hering wrote:
On Fri, Aug 18, 2006 at 02:02:12PM +1000, Benjamin Herrenschmidt wrote:
quoted
On Wed, 2006-08-09 at 06:00 +0200, Niels Kristian Bech Jensen wrote:
quoted
 On Tue, Aug  1, Olaf Hering wrote:
quoted
Booting an old Mac with BootX corrupts memory, the kernel seldom gets
into init. Even the built-in initramfs archive gets corrupted. So far I
havent figured out where the corruption starts. The only data point so
far is that a passed initrd gets overwritten with stuff that looks like
part of the device-tree after the call to free_area_init_node() from
paging_init(). Perhaps the virtual/real address mapping isnt handled
correctly.
quoted
This is broken since at least 2.6.15, 2.6.14 dies very early, 2.6.13 was
still ok.
quoted
Symptoms differ, depending on used .config and wether an initrd is passed.
I think I've been hit by this bug on my beige G3 running Ubuntu Edgy.

When booting with initrd the boot process stops before any kernel output (CONFIG_BOOTX_TEXT is not enabled).
Booting without initrd works fine - at least until it cannot find the root filesystem driver. ;-)
Does this patch helps ?
No, now I dont even get console= output on serial console.
It doesnt work on a 7200, butit works on a beige G3.
But later it locks up in 'PM: Adding info for No Bus:target0:0',
after mesh init. This one is likely unrelated.

Re: booting with BootX corrupts memory

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2006-08-21 21:31:49

quoted
No, now I dont even get console= output on serial console.
It doesnt work on a 7200, butit works on a beige G3.
But later it locks up in 'PM: Adding info for No Bus:target0:0',
after mesh init. This one is likely unrelated.
Depends.... does it work if you netboot a zImage.coff ?

Ben.

Re: booting with BootX corrupts memory

From: Olaf Hering <hidden>
Date: 2006-08-23 14:55:38

On Tue, Aug 22, Benjamin Herrenschmidt wrote:
quoted
quoted
No, now I dont even get console= output on serial console.
It doesnt work on a 7200, butit works on a beige G3.
But later it locks up in 'PM: Adding info for No Bus:target0:0',
after mesh init. This one is likely unrelated.
Depends.... does it work if you netboot a zImage.coff ?
Have to try that, but 2.6.16 freezes as well.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help