From: Milton Miller <miltonm@bga.com>
To: linuxppc-dev@ozlabs.org
Cc: Paul Mackerras <paulus@samba.org>,
David Gibson <david@gibson.dropbear.id.au>
Subject: [RFC] bootwrapper: allow vmlinuz to be an external payload
Date: Wed, 28 Mar 2007 02:21:03 -0600 (CST) [thread overview]
Message-ID: <boot-3-05.miltonm@bga.com> (raw)
In-Reply-To: <boot-3-00.miltonm@bga.com>
From: Milton Miller <miltonm@bga.com>
Allow the bootwrapper to obtain an external platform supplied image.
My work in progress will find a specified file in a initramfs cpio
and advance the gunzip_util stream to the contents.
Another use would be to uncompress directly from a memory mapped
region such as a flash partition.
Signed-off-by: Milton Miller <miltonm@bga.com>
---
Status: compiles and links, doesn't cause failures.
Passing the source and source len to the routine is just so we can
print it nice and pretty.
While we could take (archive-start, len, skip), we would end up
doing the decompress processing for skip twice.
Index: kernel/arch/powerpc/boot/main.c
===================================================================
--- kernel.orig/arch/powerpc/boot/main.c 2007-03-28 02:32:24.000000000 -0500
+++ kernel/arch/powerpc/boot/main.c 2007-03-28 02:33:26.000000000 -0500
@@ -115,10 +115,15 @@ static struct addr_range prep_kernel(voi
struct elf_info ei;
int len;
- /* gunzip the ELF header of the kernel */
- gunzip_start(&gzstate, vmlinuz_addr, vmlinuz_size);
- gunzip_exactly(&gzstate, elfheader, sizeof(elfheader));
+ /* Initialze zlib. Any attached kernel overrides find_vmlinux */
+ if (vmlinuz_size)
+ gunzip_start(&gzstate, vmlinuz_addr, vmlinuz_size);
+ else
+ platform_ops.find_vmlinuz(&gzstate, &vmlinuz_addr,
+ &vmlinuz_size);
+ /* gunzip and parse the ELF header of the kernel */
+ gunzip_exactly(&gzstate, elfheader, sizeof(elfheader));
if (!parse_elf64(elfheader, &ei) && !parse_elf32(elfheader, &ei))
fatal("Error: not a valid PPC32 or PPC64 ELF file!\n\r");
Index: kernel/arch/powerpc/boot/ops.h
===================================================================
--- kernel.orig/arch/powerpc/boot/ops.h 2007-03-28 02:32:24.000000000 -0500
+++ kernel/arch/powerpc/boot/ops.h 2007-03-28 02:33:26.000000000 -0500
@@ -19,6 +19,8 @@
#define MAX_PATH_LEN 256
#define MAX_PROP_LEN 256 /* What should this be? */
+struct gunzip_state;
+
/* Platform specific operations */
struct platform_ops {
void (*fixups)(void);
@@ -28,6 +30,8 @@ struct platform_ops {
void * (*realloc)(void *ptr, unsigned long size);
void (*exit)(void);
void * (*vmlinux_alloc)(unsigned long size);
+ void (*find_vmlinuz)(struct gunzip_state *, void **srcp,
+ unsigned long *lenp);
};
extern struct platform_ops platform_ops;
next prev parent reply other threads:[~2007-03-28 8:21 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-19 20:55 [PATCH 0/7] boot: cleanup and prep for more platforms Milton Miller
2007-03-19 20:58 ` [PATCH 4/7] bootwrapper: add a fatal error helper Milton Miller
2007-03-20 0:38 ` David Gibson
2007-03-20 13:38 ` Milton Miller
2007-03-21 0:01 ` David Gibson
2007-03-19 20:58 ` [PATCH 3/7] boot: use FORCE Milton Miller
2007-03-20 15:52 ` Segher Boessenkool
2007-03-19 20:58 ` [PATCH 2/7] boot: rebuild when wrapper changes Milton Miller
2007-03-20 0:36 ` David Gibson
2007-03-20 15:50 ` Segher Boessenkool
2007-03-19 20:58 ` [PATCH 6/7] bootwrapper: allow platforms to call library zImage_start Milton Miller
2007-03-20 4:55 ` David Gibson
2007-03-19 20:58 ` [PATCH 5/7] bootwrapper: missing relocation in crt0.S Milton Miller
2007-03-20 0:39 ` David Gibson
2007-03-20 20:09 ` Mark A. Greer
2007-03-19 20:58 ` [PATCH 7/7] boot: export flush_cache Milton Miller
2007-03-20 4:55 ` David Gibson
2007-03-19 20:58 ` [PATCH 1/7] boot: use a common zImage rule Milton Miller
2007-03-20 3:30 ` David Gibson
2007-03-20 13:47 ` Milton Miller
2007-03-20 17:41 ` Mark A. Greer
2007-03-21 2:46 ` David Gibson
2007-03-21 15:02 ` [PATCH 0/8] boot: cleanup and prep for more platforms Milton Miller
2007-03-21 15:02 ` [PATCH 6/8] boot: use FORCE Milton Miller
2007-03-21 15:02 ` [PATCH 1/8] bootwrapper: add a fatal error helper Milton Miller
2007-03-21 15:02 ` [PATCH 5/8] boot: rebuild when wrapper changes Milton Miller
2007-03-21 15:02 ` [PATCH 3/8] bootwrapper: allow platforms to call library zImage_start Milton Miller
2007-03-21 15:02 ` [PATCH 2/8] bootwrapper: missing relocation in crt0.S Milton Miller
2007-03-23 5:25 ` Paul Mackerras
2007-03-28 8:21 ` [PATCH 0/4] boot: cleanup and prep for more platforms Milton Miller
2007-03-28 8:21 ` [PATCH 1/4] bootwrapper: missing relocation in crt0.S Milton Miller
2007-03-28 8:21 ` Milton Miller [this message]
2007-03-28 8:21 ` [PATCH 2/4] bootwrapper: remove unused variable Milton Miller
2007-03-28 8:34 ` David Gibson
2007-03-28 16:04 ` Milton Miller
2007-03-28 8:21 ` Patch: [PATCH 3/4] bootwrapper: no gzip fixes Milton Miller
2007-03-28 20:03 ` Scott Wood
2007-03-28 8:21 ` [PATCH 4/4] bootwrapper: decompress less, check more Milton Miller
2007-03-29 13:31 ` Milton Miller
2007-03-21 15:03 ` [PATCH 4/8] boot: export flush_cache Milton Miller
2007-03-21 15:03 ` [PATCH 7/8] boot: clean rule fixes Milton Miller
2007-03-21 15:03 ` [PATCH 8/8] boot: use a common zImage rule Milton Miller
2007-03-22 3:46 ` David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=boot-3-05.miltonm@bga.com \
--to=miltonm@bga.com \
--cc=david@gibson.dropbear.id.au \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.