AnsweredAssumed Answered

uboot ext4load is very slow to read the kernel image into memory

Question asked by Qiwei Wen on Mar 20, 2018
Latest reply on Apr 23, 2019 by Markus Bauer

We have a custom ARM board based on the imx6 quad processor and have been using modified Boundary Devices Android release, including their uboot 2015.07.

We found a strange problem with the boot process: late in the boot script, uboot tries to pull the Linux kernel image from mmc 1:1 to physical memory 10800000. The kernel is 8MB large and this process takes ~27 seconds, at ~300KB/s. I tried reading only the first 1.6MB of the kernel image, and the speed is the same. Compare that with the time to load Android's initial ramdisk:

=> load mmc 1:1 13800000 zImage 186A00 0
1600000 bytes read in 5108 ms (305.7 KiB/s)
=> load mmc 1:1 13800000 uramdisk.img 
1643223 bytes read in 91 ms (17.2 MiB/s)


In desparation, I got rid of everything in the boot partition save for zImage, and even ran e4defrag on it to reduce the number of extents from 13 to 5, and the result is exactly the same:

=> ext4load mmc 1:1 13800000 zImage
8615840 bytes read in 27166 ms (309.6 KiB/s)



What might be the cause of the problem?

(I haven't yet tried upgrading uboot to Boundary Devices' latest, but I hesitate to do it because it entails migrating all of our modifications to a new code base)