[U-Boot] [PATCH 2/2] [rfc] support booting arm64 android image

Bin Chen bin.chen at linaro.org
Sun Jul 23 13:48:53 UTC 2017


On 19 July 2017 at 12:53, Tom Rini <trini at konsulko.com> wrote:

> On Wed, Jul 19, 2017 at 12:44:48PM +1000, Bin Chen wrote:
> > On 18 July 2017 at 22:32, Tom Rini <trini at konsulko.com> wrote:
> >
> > > On Thu, Jul 13, 2017 at 05:33:08PM +1000, Bin Chen wrote:
> > > > Hi Tom,
> > > >
> > > > Thanks for the review.
> > > >
> > > > On 13 July 2017 at 04:25, Tom Rini <trini at konsulko.com> wrote:
> > > >
> > > > > On Tue, Jul 11, 2017 at 03:56:04PM +1000, Bin Chen wrote:
> > > > >
> > > > > > It's my understanding that we are supposed to use booti, instead
> of
> > > > > bootm,
> > > > > > for arm64 image. But booti lacks of android image support. Bootm
> has
> > > > > > the andriod image support but lack of the arm64 image handling.
> > > > > >
> > > > > > So, what is suppose the right way of booting an android arm64
> image?
> > > > > > or, should we create a separate command?
> > > > > >
> > > > > > This patch is an invitation for that discussion.
> > > > > >
> > > > > > It *hacked* the booti command and it aslo assume the dtb is in
> the
> > > > > second area
> > > > > > of android boot image. It also has other belives like u-boot
> should
> > > be
> > > > > > in control of where to put the kernnel/ramdisk/dtb images so it
> > > ignores
> > > > > > the value specified in the android images.
> > > > > >
> > > > > > Signed-off-by: Bin Chen <bin.chen at linaro.org>
> > > > >
> > > > > So, booti is very much for the "Image" format described in the
> Linux
> > > > > kernel in Documentation/arm64/booting.txt.  One can (and people
> have)
> > > > > used bootm on aarch64 for "uImage" style kernels and FIT kernels,
> and I
> > > > > would see being able to boot an aarch64 Android image with bootm
> as the
> > > > > way to go forward.
> > > >
> > > >
> > > > Are you suggesting that we should use bootm path, instead of booti?
> > > >
> > > > I have two questions regarding this:
> > > >
> > > > 1. currently arm64 kernel don't have a uImage kernel target. And I'm
> not
> > > > sure
> > > >  if adding that will be something that is wanted and/or sensible.
> > >
> > > There's some confusion here.  bootm is not only for "uImage" kernels.
> > > It for example handles the aarch32 Android image format.
> > >
> > > > 2. bootm path doesn't have the logic that is currently in the booti,
> such
> > > > as the
> > > > kernel relocation.
> > >
> > > Now I'm confused, what is different in an "Android" image for aarch64
> > > than from a standard aarch64 Linux kernel 'Image' ?
> > >
> >
> > Android image wraps the 'Image'. There is a section called “kernel” in
> > Android
> > image, and will place the Image there [1]. Do you think it is the right
> way
> > to do that?
> >
> > I think that's the case for aarch32 android image as well, but replace
> the
> > 'Image' with
> > aarch32 kernel build target - I don't know what the format of that target
> > is.
> >
> > [1]
> > https://android.googlesource.com/platform/system/core/+/
> master/mkbootimg/bootimg.h
> >
> >
> > > > Also, one other question raised during internal discussion was why
> the
> > > > booti
> > > > was created in the first place, if we could have had that
> implemented in
> > > > the
> > > > bootm path.
> > >
> > > Well, there's some discussion in the archives about this.  The short
> > > answer is that "bootm" wasn't supposed to become a "figure out whatever
> > > this image is, boot it" command.
> > >
> >
> > Good to know the idea beyond that and what bootm isn't supposed to be.
> > That helps to decide whether we should stuff things into bootm or having
> a
> > separate one.
> >
> >
> > > In hindsight, now, I'm thinking that the aarch32 Android image support
> > > maybe should have gone into "bootandroid" and in turn it would be
> easier
> > > to get someone to write a new command, say "bootauto" that would ask
> > > bootm/bootelf/bootefi/bootandroid/bootz/booti/etc if it liked the
> image
> > > found at $address and if so, boot it, and if not, move on to checking
> > > the next type.
> > >
> >
> > That seems the idea what many people agree upon. Not sure how easy
> > to move aarch32 support out and I don't have a aarch32 platform to test.
> > Do you think we'll want to start with aarch64 (considering that may be
> the
> > aarch
> > for most android phone out there) and have a separate boota(ndroid)
> command?
>
> I think the best path forward today is to make sure that whatever
> aarch64-Image support code that's needed from cmd/booti.c is available
>

Just to confirm you are suggesting to move the aarch64-Image support code(*)
from cmd/booti.c to common/bootm.c, is that right? This sounds good to me.

* basically special handling of the BOOTM_STATE_LOADOS for Image format

so that 'bootm' can see that we have an Android-style image and then
> further that we have an Image underneath it, rather than a zImage, and
> handle running it appropriately.

I think bootm, aka "boot application
> image from memory" is the best place to handle both 32 and 64bit Android
> style images, as things stand today, at least.


I agree this method aligns best with what we have today (we are using bootm
for 32 bit)
and requires least code change (compared with having a separate bootandroid
command,
we can save it for another day though :) ).


>
> --
> Tom
>



-- 
Regards,
Bin


More information about the U-Boot mailing list