Message ID | 20200529155347.203258-1-christian.gmeiner@gmail.com |
---|---|
State | Accepted |
Commit | 95712afc17bb4141e7f902983fb27e5bbc5aa62f |
Delegated to: | Tom Rini |
Headers | show |
Series | image: android: fix abootimg support | expand |
On Fri, May 29, 2020 at 05:53:45PM +0200, Christian Gmeiner wrote: > abootimg creates images where all load addresses are 0. > > Android Boot Image Info: > * file name = artifacts/fastboot.img > * image size = 31381504 bytes (29.93 MB) > page size = 2048 bytes > * Boot Name = "" > * kernel size = 9397406 bytes (8.96 MB) > ramdisk size = 21981144 bytes (20.96 MB) > * load addresses: > kernel: 0x00000000 > ramdisk: 0x00000000 > tags: 0x00000000 > > Without this fix we end in a data abort: > > Booting kernel at 0x15000000... > * kernel: cmdline image address = 0x15000000 > Kernel load addr 0x00000000 size 9178 KiB > Kernel command line: ip=dhcp console=ttymxc0,115200n8 > kernel data at 0x15000800, len = 0x008f649e (9397406) > * ramdisk: cmdline image address = 0x15000000 > RAM disk load addr 0x00000000 size 21473 KiB > ramdisk start = 0x158f7000, ramdisk end = 0x16def35c > kernel loaded at 0x00000000, end = 0x00000000 > Loading Kernel Image > data abort > pc : [<8ff8c004>] lr : [<5d7ac70f>] > sp : 8f57ed64 ip : 48f17668 fp : 00000000 > r10: 00000002 r9 : 8f58aed0 r8 : 03fa4c58 > r7 : 5e842497 r6 : fbe73965 r5 : 7c459955 r4 : df020fde > r3 : 1b7aa45b r2 : 007f23fe r1 : 15104820 r0 : 00104000 > Flags: nzCv IRQs off FIQs off Mode SVC_32 (T) > Code: f07c e8b1 51f8 3a20 (e8a0) 51f8 > Resetting CPU ... > resetting ... > > Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Applied to u-boot/master, thanks!
diff --git a/common/image-android.c b/common/image-android.c index 6af9baa121..18f7c8db03 100644 --- a/common/image-android.c +++ b/common/image-android.c @@ -33,6 +33,13 @@ static ulong android_image_get_kernel_addr(const struct andr_img_hdr *hdr) if (hdr->kernel_addr == ANDROID_IMAGE_DEFAULT_KERNEL_ADDR) return (ulong)hdr + hdr->page_size; + /* + * abootimg creates images where all load addresses are 0 + * and we need to fix them. + */ + if (hdr->kernel_addr == 0 && hdr->ramdisk_addr == 0) + return env_get_ulong("kernel_addr_r", 16, 0); + return hdr->kernel_addr; }
abootimg creates images where all load addresses are 0. Android Boot Image Info: * file name = artifacts/fastboot.img * image size = 31381504 bytes (29.93 MB) page size = 2048 bytes * Boot Name = "" * kernel size = 9397406 bytes (8.96 MB) ramdisk size = 21981144 bytes (20.96 MB) * load addresses: kernel: 0x00000000 ramdisk: 0x00000000 tags: 0x00000000 Without this fix we end in a data abort: Booting kernel at 0x15000000... * kernel: cmdline image address = 0x15000000 Kernel load addr 0x00000000 size 9178 KiB Kernel command line: ip=dhcp console=ttymxc0,115200n8 kernel data at 0x15000800, len = 0x008f649e (9397406) * ramdisk: cmdline image address = 0x15000000 RAM disk load addr 0x00000000 size 21473 KiB ramdisk start = 0x158f7000, ramdisk end = 0x16def35c kernel loaded at 0x00000000, end = 0x00000000 Loading Kernel Image data abort pc : [<8ff8c004>] lr : [<5d7ac70f>] sp : 8f57ed64 ip : 48f17668 fp : 00000000 r10: 00000002 r9 : 8f58aed0 r8 : 03fa4c58 r7 : 5e842497 r6 : fbe73965 r5 : 7c459955 r4 : df020fde r3 : 1b7aa45b r2 : 007f23fe r1 : 15104820 r0 : 00104000 Flags: nzCv IRQs off FIQs off Mode SVC_32 (T) Code: f07c e8b1 51f8 3a20 (e8a0) 51f8 Resetting CPU ... resetting ... Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> --- common/image-android.c | 7 +++++++ 1 file changed, 7 insertions(+)