Message ID | 1451922216-14477-1-git-send-email-andre.przywara@arm.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
On Mon, Jan 4, 2016 at 4:43 PM, Andre Przywara <andre.przywara@arm.com> wrote: > The default kernel load offset for an arm64 kernel is 0x80000, so > U-Boot takes cares of moving the loaded kernel to a matching memory > location just before booting it. > Since we run with caches off, this takes a while for any decently > sized kernel - with no output explaining the reason for the delay > (unless one uses a DEBUG build). > By adjusting the default load offset for Juno and VFP to be 512K > aligned in the first place we can skip this copying and boot much > faster. > Tested on Juno. > > Signed-off-by: Andre Przywara <andre.przywara@arm.com> Pretty cool. Almost deserves a comment directly in the config file so people don't screw up the geniusness :) Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
On 5 January 2016 at 09:48, Linus Walleij <linus.walleij@linaro.org> wrote: > On Mon, Jan 4, 2016 at 4:43 PM, Andre Przywara <andre.przywara@arm.com> wrote: > >> The default kernel load offset for an arm64 kernel is 0x80000, so >> U-Boot takes cares of moving the loaded kernel to a matching memory >> location just before booting it. >> Since we run with caches off, this takes a while for any decently >> sized kernel - with no output explaining the reason for the delay >> (unless one uses a DEBUG build). >> By adjusting the default load offset for Juno and VFP to be 512K >> aligned in the first place we can skip this copying and boot much >> faster. >> Tested on Juno. >> >> Signed-off-by: Andre Przywara <andre.przywara@arm.com> > > Pretty cool. Almost deserves a comment directly in the config > file so people don't screw up the geniusness :) > And I tested it on Juno. At first I didn't notice much difference, but then I actually timed it and it ~halves the time to get the kernel started from 9 secs to about 4 or 5 secs on my R0 board (after hitting enter on "run bootcmd"). I didn't test the FVP change because I always use the DRAM config and I'm not set up to test semihosting. However, the DRAM config already has this change, so I'm confident it's the right thing to do. > Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Ryan Harkin <ryan.harkin@linaro.org> > > Yours, > Linus Walleij
On Mon, Jan 04, 2016 at 03:43:36PM +0000, Andre Przywara wrote: > The default kernel load offset for an arm64 kernel is 0x80000, so > U-Boot takes cares of moving the loaded kernel to a matching memory > location just before booting it. > Since we run with caches off, this takes a while for any decently > sized kernel - with no output explaining the reason for the delay > (unless one uses a DEBUG build). > By adjusting the default load offset for Juno and VFP to be 512K > aligned in the first place we can skip this copying and boot much > faster. > Tested on Juno. > > Signed-off-by: Andre Przywara <andre.przywara@arm.com> > Reviewed-by: Linus Walleij <linus.walleij@linaro.org> > Tested-by: Ryan Harkin <ryan.harkin@linaro.org> Applied to u-boot/master, thanks!
diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h index c767f90..814934a 100644 --- a/include/configs/vexpress_aemv8a.h +++ b/include/configs/vexpress_aemv8a.h @@ -189,7 +189,7 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ "kernel_name=norkern\0" \ "kernel_alt_name=Image\0" \ - "kernel_addr=0x80000000\0" \ + "kernel_addr=0x80080000\0" \ "initrd_name=ramdisk.img\0" \ "initrd_addr=0x84000000\0" \ "fdt_name=board.dtb\0" \ @@ -233,7 +233,7 @@ #elif CONFIG_TARGET_VEXPRESS64_BASE_FVP #define CONFIG_EXTRA_ENV_SETTINGS \ "kernel_name=Image\0" \ - "kernel_addr=0x80000000\0" \ + "kernel_addr=0x80080000\0" \ "initrd_name=ramdisk.img\0" \ "initrd_addr=0x88000000\0" \ "fdt_name=devtree.dtb\0" \
The default kernel load offset for an arm64 kernel is 0x80000, so U-Boot takes cares of moving the loaded kernel to a matching memory location just before booting it. Since we run with caches off, this takes a while for any decently sized kernel - with no output explaining the reason for the delay (unless one uses a DEBUG build). By adjusting the default load offset for Juno and VFP to be 512K aligned in the first place we can skip this copying and boot much faster. Tested on Juno. Signed-off-by: Andre Przywara <andre.przywara@arm.com> --- include/configs/vexpress_aemv8a.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)