Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address reconfigurable
On Tue, May 02, 2017 at 10:43:07PM +, Vikas MANOCHA wrote: > Hi Tom, > > > -Original Message- > > From: Vikas MANOCHA > > Sent: Wednesday, April 12, 2017 12:47 PM > > To: 'Tom Rini' <tr...@konsulko.com> > > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan Agner > > <stefan.ag...@toradex.com>; Jeremy Hunt > > <jeremy.h...@deshawresearch.com> > > Subject: RE: [U-Boot] [PATCH] spl: make image arg or fdt blob address > > reconfigurable > > > > Hi Tom, > > > > > -Original Message- > > > From: Tom Rini [mailto:tr...@konsulko.com] > > > Sent: Wednesday, April 12, 2017 6:33 AM > > > To: Vikas MANOCHA <vikas.mano...@st.com> > > > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan Agner > > > <stefan.ag...@toradex.com>; Jeremy Hunt > > > <jeremy.h...@deshawresearch.com> > > > Subject: Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address > > > reconfigurable > > > > > > On Tue, Apr 11, 2017 at 11:44:00PM +, Vikas MANOCHA wrote: > > > > Hi Tom, > > > > > > > > > -Original Message- > > > > > From: Tom Rini [mailto:tr...@konsulko.com] > > > > > Sent: Monday, April 10, 2017 5:29 AM > > > > > To: Vikas MANOCHA <vikas.mano...@st.com> > > > > > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan > > > > > Agner <stefan.ag...@toradex.com>; Jeremy Hunt > > > > > <jeremy.h...@deshawresearch.com> > > > > > Subject: Re: [U-Boot] [PATCH] spl: make image arg or fdt blob > > > > > address reconfigurable > > > > > > > > > > On Fri, Apr 07, 2017 at 03:38:13PM -0700, Vikas Manocha wrote: > > > > > > > > > > > At present fdt blob or argument address being passed to kernel > > > > > > is fixed at compile time using macro CONFIG_SYS_SPL_ARGS_ADDR. > > > > > > FDT blob from different media like nand, nor flash are copied to > > > > > > the address pointed by the macro. > > > > > > The problem is, it makes args/fdt blob compulsory to copy which > > > > > > is not required in cases like for NOR Flash. This patch removes > > > > > > this limitation. > > > > > > > > > > > > Signed-off-by: Vikas Manocha <vikas.mano...@st.com> > > > > > > --- > > > > > > arch/arm/lib/spl.c| 7 +++ > > > > > > arch/microblaze/cpu/spl.c | 6 +++--- > > > > > > arch/powerpc/lib/spl.c| 8 > > > > > > common/spl/spl.c | 6 -- > > > > > > common/spl/spl_nor.c | 8 +--- > > > > > > include/spl.h | 5 ++--- > > > > > > > > > > I assume you've tested the spl_nor case afterwards, yes? Did this > > > > > result in some measurable boot time decrease? Thanks! > > > > > > > > Yes, I tested it's working on board. Not sure how to measure the impact > > > > on boot time. > > > > > > There's always good old grabserial. But if you didn't measure bootspeed, > > > did this decrease the code size? Or fix some other issue? > > > > Thanks Tom for the suggestion. > > > > The benefit of this patch is : It removes copying FDT blob from NOR flash > > to ram in case of booting from nor flash, text size reduction > > is only 4 Bytes, no change in data/bss size. It might reduce the boot time > > but boot time impact would depend on the FDT blob > > copying time & ram vs flash read speed. > > > > Also it provides a way to change fdt blob address at run-time which might > > be useful e.g. choosing between two FDT blobs or > > manipulating FDT address. > > Please let me know if more info is required in order to pick this patch. I think this is fine, I'll grab it next release, thanks! -- Tom signature.asc Description: Digital signature ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address reconfigurable
Hi Tom, > -Original Message- > From: Vikas MANOCHA > Sent: Wednesday, April 12, 2017 12:47 PM > To: 'Tom Rini' <tr...@konsulko.com> > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan Agner > <stefan.ag...@toradex.com>; Jeremy Hunt > <jeremy.h...@deshawresearch.com> > Subject: RE: [U-Boot] [PATCH] spl: make image arg or fdt blob address > reconfigurable > > Hi Tom, > > > -Original Message- > > From: Tom Rini [mailto:tr...@konsulko.com] > > Sent: Wednesday, April 12, 2017 6:33 AM > > To: Vikas MANOCHA <vikas.mano...@st.com> > > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan Agner > > <stefan.ag...@toradex.com>; Jeremy Hunt > > <jeremy.h...@deshawresearch.com> > > Subject: Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address > > reconfigurable > > > > On Tue, Apr 11, 2017 at 11:44:00PM +, Vikas MANOCHA wrote: > > > Hi Tom, > > > > > > > -Original Message- > > > > From: Tom Rini [mailto:tr...@konsulko.com] > > > > Sent: Monday, April 10, 2017 5:29 AM > > > > To: Vikas MANOCHA <vikas.mano...@st.com> > > > > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan > > > > Agner <stefan.ag...@toradex.com>; Jeremy Hunt > > > > <jeremy.h...@deshawresearch.com> > > > > Subject: Re: [U-Boot] [PATCH] spl: make image arg or fdt blob > > > > address reconfigurable > > > > > > > > On Fri, Apr 07, 2017 at 03:38:13PM -0700, Vikas Manocha wrote: > > > > > > > > > At present fdt blob or argument address being passed to kernel > > > > > is fixed at compile time using macro CONFIG_SYS_SPL_ARGS_ADDR. > > > > > FDT blob from different media like nand, nor flash are copied to > > > > > the address pointed by the macro. > > > > > The problem is, it makes args/fdt blob compulsory to copy which > > > > > is not required in cases like for NOR Flash. This patch removes this > > > > > limitation. > > > > > > > > > > Signed-off-by: Vikas Manocha <vikas.mano...@st.com> > > > > > --- > > > > > arch/arm/lib/spl.c| 7 +++ > > > > > arch/microblaze/cpu/spl.c | 6 +++--- > > > > > arch/powerpc/lib/spl.c| 8 > > > > > common/spl/spl.c | 6 -- > > > > > common/spl/spl_nor.c | 8 +--- > > > > > include/spl.h | 5 ++--- > > > > > > > > I assume you've tested the spl_nor case afterwards, yes? Did this > > > > result in some measurable boot time decrease? Thanks! > > > > > > Yes, I tested it's working on board. Not sure how to measure the impact > > > on boot time. > > > > There's always good old grabserial. But if you didn't measure bootspeed, > > did this decrease the code size? Or fix some other issue? > > Thanks Tom for the suggestion. > > The benefit of this patch is : It removes copying FDT blob from NOR flash to > ram in case of booting from nor flash, text size reduction > is only 4 Bytes, no change in data/bss size. It might reduce the boot time > but boot time impact would depend on the FDT blob > copying time & ram vs flash read speed. > > Also it provides a way to change fdt blob address at run-time which might be > useful e.g. choosing between two FDT blobs or > manipulating FDT address. Please let me know if more info is required in order to pick this patch. Cheers, Vikas > > Cheers, > Vikas > > > Thanks! > > > > -- > > Tom ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address reconfigurable
Hi Tom, > -Original Message- > From: Tom Rini [mailto:tr...@konsulko.com] > Sent: Wednesday, April 12, 2017 6:33 AM > To: Vikas MANOCHA <vikas.mano...@st.com> > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan Agner > <stefan.ag...@toradex.com>; Jeremy Hunt > <jeremy.h...@deshawresearch.com> > Subject: Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address > reconfigurable > > On Tue, Apr 11, 2017 at 11:44:00PM +, Vikas MANOCHA wrote: > > Hi Tom, > > > > > -Original Message- > > > From: Tom Rini [mailto:tr...@konsulko.com] > > > Sent: Monday, April 10, 2017 5:29 AM > > > To: Vikas MANOCHA <vikas.mano...@st.com> > > > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan Agner > > > <stefan.ag...@toradex.com>; Jeremy Hunt > > > <jeremy.h...@deshawresearch.com> > > > Subject: Re: [U-Boot] [PATCH] spl: make image arg or fdt blob > > > address reconfigurable > > > > > > On Fri, Apr 07, 2017 at 03:38:13PM -0700, Vikas Manocha wrote: > > > > > > > At present fdt blob or argument address being passed to kernel is > > > > fixed at compile time using macro CONFIG_SYS_SPL_ARGS_ADDR. FDT > > > > blob from different media like nand, nor flash are copied to the > > > > address pointed by the macro. > > > > The problem is, it makes args/fdt blob compulsory to copy which is > > > > not required in cases like for NOR Flash. This patch removes this > > > > limitation. > > > > > > > > Signed-off-by: Vikas Manocha <vikas.mano...@st.com> > > > > --- > > > > arch/arm/lib/spl.c| 7 +++ > > > > arch/microblaze/cpu/spl.c | 6 +++--- > > > > arch/powerpc/lib/spl.c| 8 > > > > common/spl/spl.c | 6 -- > > > > common/spl/spl_nor.c | 8 +--- > > > > include/spl.h | 5 ++--- > > > > > > I assume you've tested the spl_nor case afterwards, yes? Did this > > > result in some measurable boot time decrease? Thanks! > > > > Yes, I tested it's working on board. Not sure how to measure the impact on > > boot time. > > There's always good old grabserial. But if you didn't measure bootspeed, did > this decrease the code size? Or fix some other issue? Thanks Tom for the suggestion. The benefit of this patch is : It removes copying FDT blob from NOR flash to ram in case of booting from nor flash, text size reduction is only 4 Bytes, no change in data/bss size. It might reduce the boot time but boot time impact would depend on the FDT blob copying time & ram vs flash read speed. Also it provides a way to change fdt blob address at run-time which might be useful e.g. choosing between two FDT blobs or manipulating FDT address. Cheers, Vikas > Thanks! > > -- > Tom ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address reconfigurable
On Tue, Apr 11, 2017 at 11:44:00PM +, Vikas MANOCHA wrote: > Hi Tom, > > > -Original Message- > > From: Tom Rini [mailto:tr...@konsulko.com] > > Sent: Monday, April 10, 2017 5:29 AM > > To: Vikas MANOCHA <vikas.mano...@st.com> > > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan Agner > > <stefan.ag...@toradex.com>; Jeremy Hunt > > <jeremy.h...@deshawresearch.com> > > Subject: Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address > > reconfigurable > > > > On Fri, Apr 07, 2017 at 03:38:13PM -0700, Vikas Manocha wrote: > > > > > At present fdt blob or argument address being passed to kernel is > > > fixed at compile time using macro CONFIG_SYS_SPL_ARGS_ADDR. FDT blob > > > from different media like nand, nor flash are copied to the address > > > pointed by the macro. > > > The problem is, it makes args/fdt blob compulsory to copy which is not > > > required in cases like for NOR Flash. This patch removes this limitation. > > > > > > Signed-off-by: Vikas Manocha <vikas.mano...@st.com> > > > --- > > > arch/arm/lib/spl.c| 7 +++ > > > arch/microblaze/cpu/spl.c | 6 +++--- > > > arch/powerpc/lib/spl.c| 8 > > > common/spl/spl.c | 6 -- > > > common/spl/spl_nor.c | 8 +--- > > > include/spl.h | 5 ++--- > > > > I assume you've tested the spl_nor case afterwards, yes? Did this > > result in some measurable boot time decrease? Thanks! > > Yes, I tested it's working on board. Not sure how to measure the impact on > boot time. There's always good old grabserial. But if you didn't measure bootspeed, did this decrease the code size? Or fix some other issue? Thanks! -- Tom signature.asc Description: Digital signature ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address reconfigurable
Hi Tom, > -Original Message- > From: Tom Rini [mailto:tr...@konsulko.com] > Sent: Monday, April 10, 2017 5:29 AM > To: Vikas MANOCHA <vikas.mano...@st.com> > Cc: u-boot@lists.denx.de; Marek Vasut <ma...@denx.de>; Stefan Agner > <stefan.ag...@toradex.com>; Jeremy Hunt > <jeremy.h...@deshawresearch.com> > Subject: Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address > reconfigurable > > On Fri, Apr 07, 2017 at 03:38:13PM -0700, Vikas Manocha wrote: > > > At present fdt blob or argument address being passed to kernel is > > fixed at compile time using macro CONFIG_SYS_SPL_ARGS_ADDR. FDT blob > > from different media like nand, nor flash are copied to the address > > pointed by the macro. > > The problem is, it makes args/fdt blob compulsory to copy which is not > > required in cases like for NOR Flash. This patch removes this limitation. > > > > Signed-off-by: Vikas Manocha <vikas.mano...@st.com> > > --- > > arch/arm/lib/spl.c| 7 +++ > > arch/microblaze/cpu/spl.c | 6 +++--- > > arch/powerpc/lib/spl.c| 8 > > common/spl/spl.c | 6 -- > > common/spl/spl_nor.c | 8 +--- > > include/spl.h | 5 ++--- > > I assume you've tested the spl_nor case afterwards, yes? Did this result in > some measurable boot time decrease? Thanks! Yes, I tested it's working on board. Not sure how to measure the impact on boot time. Cheers, Vikas > > -- > Tom ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH] spl: make image arg or fdt blob address reconfigurable
On Fri, Apr 07, 2017 at 03:38:13PM -0700, Vikas Manocha wrote: > At present fdt blob or argument address being passed to kernel is fixed at > compile time using macro CONFIG_SYS_SPL_ARGS_ADDR. FDT blob from > different media like nand, nor flash are copied to the address pointed > by the macro. > The problem is, it makes args/fdt blob compulsory to copy which is not > required > in cases like for NOR Flash. This patch removes this limitation. > > Signed-off-by: Vikas Manocha> --- > arch/arm/lib/spl.c| 7 +++ > arch/microblaze/cpu/spl.c | 6 +++--- > arch/powerpc/lib/spl.c| 8 > common/spl/spl.c | 6 -- > common/spl/spl_nor.c | 8 +--- > include/spl.h | 5 ++--- I assume you've tested the spl_nor case afterwards, yes? Did this result in some measurable boot time decrease? Thanks! -- Tom signature.asc Description: Digital signature ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
[U-Boot] [PATCH] spl: make image arg or fdt blob address reconfigurable
At present fdt blob or argument address being passed to kernel is fixed at compile time using macro CONFIG_SYS_SPL_ARGS_ADDR. FDT blob from different media like nand, nor flash are copied to the address pointed by the macro. The problem is, it makes args/fdt blob compulsory to copy which is not required in cases like for NOR Flash. This patch removes this limitation. Signed-off-by: Vikas Manocha--- arch/arm/lib/spl.c| 7 +++ arch/microblaze/cpu/spl.c | 6 +++--- arch/powerpc/lib/spl.c| 8 common/spl/spl.c | 6 -- common/spl/spl_nor.c | 8 +--- include/spl.h | 5 ++--- 6 files changed, 17 insertions(+), 23 deletions(-) diff --git a/arch/arm/lib/spl.c b/arch/arm/lib/spl.c index e606d47..8ff2c50 100644 --- a/arch/arm/lib/spl.c +++ b/arch/arm/lib/spl.c @@ -44,22 +44,21 @@ void __weak board_init_f(ulong dummy) /* * This function jumps to an image with argument. Normally an FDT or ATAGS * image. - * arg: Pointer to paramter image in RAM */ #ifdef CONFIG_SPL_OS_BOOT -void __noreturn jump_to_image_linux(struct spl_image_info *spl_image, void *arg) +void __noreturn jump_to_image_linux(struct spl_image_info *spl_image) { unsigned long machid = 0x; #ifdef CONFIG_MACH_TYPE machid = CONFIG_MACH_TYPE; #endif - debug("Entering kernel arg pointer: 0x%p\n", arg); + debug("Entering kernel arg pointer: 0x%p\n", spl_image->arg); typedef void (*image_entry_arg_t)(int, int, void *) __attribute__ ((noreturn)); image_entry_arg_t image_entry = (image_entry_arg_t)(uintptr_t) spl_image->entry_point; cleanup_before_linux(); - image_entry(0, machid, arg); + image_entry(0, machid, spl_image->arg); } #endif diff --git a/arch/microblaze/cpu/spl.c b/arch/microblaze/cpu/spl.c index 8e6d926..3d57a5a 100644 --- a/arch/microblaze/cpu/spl.c +++ b/arch/microblaze/cpu/spl.c @@ -29,15 +29,15 @@ void spl_board_init(void) } #ifdef CONFIG_SPL_OS_BOOT -void __noreturn jump_to_image_linux(struct spl_image_info *spl_image, void *arg) +void __noreturn jump_to_image_linux(struct spl_image_info *spl_image) { - debug("Entering kernel arg pointer: 0x%p\n", arg); + debug("Entering kernel arg pointer: 0x%p\n", spl_image->arg); typedef void (*image_entry_arg_t)(char *, ulong, ulong) __attribute__ ((noreturn)); image_entry_arg_t image_entry = (image_entry_arg_t)spl_image->entry_point; - image_entry(NULL, 0, (ulong)arg); + image_entry(NULL, 0, (ulong)spl_image->arg); } #endif /* CONFIG_SPL_OS_BOOT */ diff --git a/arch/powerpc/lib/spl.c b/arch/powerpc/lib/spl.c index 080b978..b931970 100644 --- a/arch/powerpc/lib/spl.c +++ b/arch/powerpc/lib/spl.c @@ -14,18 +14,18 @@ DECLARE_GLOBAL_DATA_PTR; /* * This function jumps to an image with argument. Normally an FDT or ATAGS * image. - * arg: Pointer to paramter image in RAM */ #ifdef CONFIG_SPL_OS_BOOT -void __noreturn jump_to_image_linux(struct spl_image_info *spl_image, void *arg) +void __noreturn jump_to_image_linux(struct spl_image_info *spl_image) { - debug("Entering kernel arg pointer: 0x%p\n", arg); + debug("Entering kernel arg pointer: 0x%p\n", spl_image->arg); typedef void (*image_entry_arg_t)(void *, ulong r4, ulong r5, ulong r6, ulong r7, ulong r8, ulong r9) __attribute__ ((noreturn)); image_entry_arg_t image_entry = (image_entry_arg_t)spl_image->entry_point; - image_entry(arg, 0, 0, EPAPR_MAGIC, CONFIG_SYS_BOOTMAPSZ, 0, 0); + image_entry(spl_image->arg, 0, 0, EPAPR_MAGIC, CONFIG_SYS_BOOTMAPSZ, + 0, 0); } #endif /* CONFIG_SPL_OS_BOOT */ diff --git a/common/spl/spl.c b/common/spl/spl.c index a3e73b8..50828e6 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -345,6 +345,9 @@ void board_init_r(gd_t *dummy1, ulong dummy2) #endif memset(_image, '\0', sizeof(spl_image)); +#ifdef CONFIG_SYS_SPL_ARGS_ADDR + spl_image.arg = (void *)CONFIG_SYS_SPL_ARGS_ADDR; +#endif board_boot_order(spl_boot_list); if (boot_from_devices(_image, spl_boot_list, @@ -361,8 +364,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) case IH_OS_LINUX: debug("Jumping to Linux\n"); spl_board_prepare_for_linux(); - jump_to_image_linux(_image, - (void *)CONFIG_SYS_SPL_ARGS_ADDR); + jump_to_image_linux(_image); #endif default: debug("Unsupported OS image.. Jumping nevertheless..\n"); diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c index d07ca84..1ef8ac8 100644 --- a/common/spl/spl_nor.c +++ b/common/spl/spl_nor.c @@ -39,13 +39,7 @@ static int spl_nor_load_image(struct spl_image_info *spl_image, sizeof(struct