Commit 390cbb56 authored by Paul Mackerras's avatar Paul Mackerras

[POWERPC] Fix detection of loader-supplied initrd on OF platforms

Commit 79c85419 introduced code to move
the initrd if it was in a place where it would get overwritten by the
kernel image.  Unfortunately this exposed the fact that the code that
checks whether the values passed in r3 and r4 are intended to indicate
the start address and size of an initrd image was not as thorough as the
kernel's checks.  The symptom is that on OF-based platforms, the
bootwrapper can cause an exception which causes the system to drop back
into OF.

Previously it didn't matter so much if the code incorrectly thought that
there was an initrd, since the values for start and size were just passed
through to the kernel.  Now the bootwrapper needs to apply the same checks
as the kernel since it is now using the initrd data itself (in the process
of copying it if necessary).  This adds the code to do that.
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 0727702a
...@@ -282,6 +282,8 @@ void platform_init(unsigned long a1, unsigned long a2, void *promptr) ...@@ -282,6 +282,8 @@ void platform_init(unsigned long a1, unsigned long a2, void *promptr)
prom = (int (*)(void *))promptr; prom = (int (*)(void *))promptr;
loader_info.promptr = promptr; loader_info.promptr = promptr;
loader_info.initrd_addr = a1; if (a1 && a2 && a2 != 0xdeadbeef) {
loader_info.initrd_size = a2; loader_info.initrd_addr = a1;
loader_info.initrd_size = a2;
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment