[U-Boot] [PATCH 1/2] image: Implement IH_TYPE_KERNEL_ANYLOAD

Wolfgang Denk
2011-11-10T11:59:03Z

Dear Stephen Warren,

In message <1320860840-6347-1-git-send-email-swarren@nvidia.com> you wrote:
> The legacy uImage format includes an absolute load and entry-point
> address. When bootm operates on a kernel uImage in memory that isn't
> loaded at the address in the image's load address, U-Boot will copy
> the image to its address in the header.
>
> Some kernel images can actually be loaded and used at any arbitrary
> address. An example is an ARM Linux kernel zImage file. To represent

You write: an example is...

Are there other Linux kernel image types in addition to zImage that
have this property?

> this capability, IH_TYPE_KERNEL_ANYLOAD is implemented, which operates

I don't like this name. "ANYLOAD" doesn't really make sense to me; I
would interpet this as "U-Boot is free to load the image to any
address it likes" - which is not what I think you mean. I guess
"IH_TYPE_KERNEL_NOLOAD" would better mach what the code is supposed to
do.

But then, I'd like "IH_TYPE_ZIMAGE" even better - assuming of course
that only zImages are used here. Are we sure about this?

> + if (images.os.type == IH_TYPE_KERNEL_ANYLOAD) {
> + images.os.load = images.os.image_start;
> + images.ep += images.os.load;
> + }

I'm not sure if we give up flexibility here without need.

Suggestion: IH_TYPE_KERNEL_NOLOAD images should read the entry point
address from the image header, and interpret it as an offset relative
to the image_start. This adds basicly no code size, an no effort if
you don't want to use it (when running mkimage you will probably
always use "-a 0 -e 0" anyway), but in case you ever need a different
EP you have it, more or less for free.

> + { IH_TYPE_KERNEL_ANYLOAD, "kernel_anyload", "Kernel Image (any load address)", },

...IH_TYPE_KERNEL_NOLOAD ..."Kernel Image (no loading done)" ?

Best regards,

Wolfgang Denk

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
I'm a programmer: I don't buy software, I write it.
-- Tom Christiansen