public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@nvidia.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 3/3] image: Allow images to indicate they're loadable at any address
Date: Mon, 07 Nov 2011 14:38:52 -0700	[thread overview]
Message-ID: <4EB84FEC.8030107@nvidia.com> (raw)
In-Reply-To: <201111072204.41980.marek.vasut@gmail.com>

On 11/07/2011 02:04 PM, Marek Vasut wrote:
...
>> The problem with this new approach is that Linux kernel images are NOT
>> freely relocatable.  They do have a fix entry point, even if this is
>> not an absolute address, but a relative one.  The natural way to
>> handle this is exactly that:  add support for images with relative
>> )offset based) load and entry point addresses.
> 
> You have that runtime patching stuff in linux-arm-kernel now, there should be no 
> problem with that anymore actually. So basically I understood there was an 
> agreement to make special uImage/fitImage which ... oh doh, here is where I'm 
> getting lost. Is it that the kernel will still be copied to address, but a 
> relative one to where uImage is loaded -- and the entrypoint will be relative to 
> that same address?

U-Boot scripts load uImages to some script-defined address.

(At least for kernel images) when running the bootm command, U-Boot will
then copy the kernel image from whatever place the script loaded it to
whatever value the "load address" uImage header field contains.

With my first set of patches, I created IH_TYPE_KERNEL_REL (as a pair to
IH_TYPE_KERNEL) where the load address in the header is not an absolute
address, but rather is interpreted as an offset from "the start of
SDRAM", whatever that is for a particular board. The idea was that while
there could not be a single absolute load address that was valid for all
ARM SoCs, perhaps there could be a single offset from SDRAM that was
valid for all ARM SoCs. With this scheme, U-Boot's bootm command would
still perform the same copy I mentioned above. This applied equally to
"legacy" uImages and FIT images.

With the new set of patches I posted, I didn't add any new uImage
formats, but instead defined a single load address value (0xffffffff) as
meaning "no load address specified", or "load address irrelevant". In
this case, when bootm processes the kernel image, it re-writes the load
address of the image to be equal to wherever the script actually ended
up loading the image. Hence, the kernel image is already in the desired
location, and the copy of the kernel is avoided.

In my opinion, the new scheme is simpler, more correct, more flexible,
more efficient (fewer copies of the kernel data)..., for the reasons I
mentioned a couple emails back.

-- 
nvpublic

  reply	other threads:[~2011-11-07 21:38 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-01 16:28 [U-Boot] [PATCH v2 1/3] image: Make image_get_fdt work like image_get_{ram_disk, kernel} Stephen Warren
2011-11-01 16:28 ` [U-Boot] [PATCH v2 2/3] image: Support FDTs already loaded at their load address Stephen Warren
2012-03-06 21:18   ` Wolfgang Denk
2011-11-01 16:28 ` [U-Boot] [PATCH v2 3/3] image: Allow images to indicate they're loadable at any address Stephen Warren
2011-11-05 22:20   ` Wolfgang Denk
2011-11-07 16:56     ` Stephen Warren
2011-11-07 17:09       ` Stephen Warren
2011-11-07 19:47         ` Simon Glass
2011-11-07 20:29           ` Wolfgang Denk
2011-11-07 21:17           ` Stephen Warren
2011-11-07 22:11             ` Wolfgang Denk
2011-11-07 22:30               ` Stephen Warren
2011-11-07 23:08                 ` Wolfgang Denk
2011-11-08  0:00                   ` Stephen Warren
2011-11-08  0:27                     ` Wolfgang Denk
     [not found]     ` <74CDBE0F657A3D45AFBB94109FB122FF173F9A5035@HQMAIL01.nvidia.com>
2011-11-07 20:26       ` Wolfgang Denk
2011-11-07 21:04         ` Marek Vasut
2011-11-07 21:38           ` Stephen Warren [this message]
2011-11-07 21:59             ` Marek Vasut
2011-11-07 22:08               ` Stephen Warren
2011-11-07 22:27           ` Wolfgang Denk
2011-11-07 22:41             ` Stephen Warren
2011-11-07 23:10               ` Wolfgang Denk
2011-11-07 23:43                 ` Stephen Warren
2011-11-07 22:57             ` Nicolas Pitre
2011-11-07 23:25               ` Wolfgang Denk
2011-11-08  0:10                 ` Stephen Warren
2011-11-08  0:29                   ` Wolfgang Denk
2011-11-08  0:48                     ` Nicolas Pitre
2011-11-08  8:38                       ` Wolfgang Denk
2011-11-08 11:35                         ` Marek Vasut
2011-11-08 11:50                           ` Wolfgang Denk
2011-11-08 11:52                             ` Marek Vasut
2011-11-08 18:17                             ` Stephen Warren
     [not found]                             ` <74CDBE0F657A3D45AFBB94109FB122FF173F9A5424@HQMAIL01.nvidia.com>
2011-11-08 19:44                               ` Wolfgang Denk
2011-11-08 21:17                                 ` Wolfgang Denk
2011-11-08 22:27                                   ` Stephen Warren
2011-11-08 22:46                                     ` Wolfgang Denk
2011-11-08  0:35                 ` Nicolas Pitre
2011-11-08  1:10                   ` Simon Glass
2011-11-08  3:51                     ` Nicolas Pitre
2011-11-08  5:37                       ` Simon Glass
2011-11-08  8:45                         ` Wolfgang Denk
2011-11-08 14:22                         ` Loïc Minier
2011-11-08 14:52                       ` Jason
2011-11-08 20:18                         ` Nicolas Pitre
2011-12-10 22:42                     ` Linus Walleij
2011-12-10 22:53                       ` Wolfgang Denk
2011-12-10 23:21                         ` Linus Walleij
2011-12-12 16:25                       ` Stephen Warren
2011-11-08  8:33                   ` Wolfgang Denk
2011-11-08 14:26                     ` Nicolas Pitre
2011-11-08 15:01                       ` Marek Vasut
2011-11-08 15:59                       ` Wolfgang Denk
2011-11-08 16:57                         ` Detlev Zundel
2011-11-08 20:05                         ` Nicolas Pitre
2011-11-07 21:27         ` Stephen Warren
2011-11-07 21:41           ` Nicolas Pitre
2011-11-07 22:42             ` Wolfgang Denk
2011-11-05 18:41 ` [U-Boot] [PATCH v2 1/3] image: Make image_get_fdt work like image_get_{ram_disk, kernel} Marek Vasut
2011-11-05 19:21   ` Simon Glass
2011-11-05 19:39     ` Marek Vasut
2011-11-05 20:38       ` Simon Glass
2011-11-05 20:41         ` Marek Vasut
2011-11-05 20:49           ` Simon Glass
2011-11-05 22:15           ` Wolfgang Denk
2011-11-05 22:18             ` Marek Vasut
2011-11-05 22:06       ` Wolfgang Denk
2011-11-05 21:53     ` Wolfgang Denk
2011-11-05 22:06       ` Marek Vasut
2011-11-05 22:22         ` Wolfgang Denk
2011-11-06  4:52       ` Simon Glass
2011-11-06  8:57         ` Wolfgang Denk
2011-11-05 21:40   ` Wolfgang Denk
2011-11-05 22:06     ` Marek Vasut
2011-11-05 22:24       ` Wolfgang Denk
2011-11-05 22:38         ` Marek Vasut
2011-11-08 14:24   ` Loïc Minier
2011-11-08 16:06 ` Wolfgang Denk
2011-11-08 18:15   ` Stephen Warren
     [not found]   ` <74CDBE0F657A3D45AFBB94109FB122FF173F9A5415@HQMAIL01.nvidia.com>
2011-11-08 19:33     ` Wolfgang Denk

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=4EB84FEC.8030107@nvidia.com \
    --to=swarren@nvidia.com \
    --cc=u-boot@lists.denx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox