All of lore.kernel.org
 help / color / mirror / Atom feed
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;
 

  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.