mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded
@ 2019-02-19 12:10 Ahmad Fatoum
  2019-02-19 12:10 ` [PATCH 2/2] images: allow overriding BAREBOX_MAX_IMAGE_SIZE from arch Kconfig Ahmad Fatoum
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Ahmad Fatoum @ 2019-02-19 12:10 UTC (permalink / raw)
  To: barebox

For platforms such as the at91, the boot ROM imposes an upper limit
on barebox file size.  Prior to 5a1a5ed253 ("ARM: images: use piggydata"),
BAREBOX_MAX_PBLX_SIZE seems to have been the way to go for limiting
the size of the final barebox binary when using the PBL.
With pblx removed, this variable is of no use, so have the existing
BAREBOX_MAX_IMAGE_SIZE replace its functionality.

Currently BAREBOX_MAX_IMAGE_SIZE is only checked against in the non-PBL
case, so add a check in the PBL case as well.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
 arch/arm/configs/am335x_mlo_defconfig |  2 +-
 common/Kconfig                        | 10 ----------
 images/Makefile                       |  1 +
 3 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/arch/arm/configs/am335x_mlo_defconfig b/arch/arm/configs/am335x_mlo_defconfig
index b58b71a85937..d6909154c443 100644
--- a/arch/arm/configs/am335x_mlo_defconfig
+++ b/arch/arm/configs/am335x_mlo_defconfig
@@ -8,7 +8,7 @@ CONFIG_MACH_PHYTEC_SOM_AM335X=y
 CONFIG_THUMB2_BAREBOX=y
 # CONFIG_MEMINFO is not set
 CONFIG_MMU=y
-CONFIG_BAREBOX_MAX_PBLX_SIZE=0x1b400
+CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x1b400
 CONFIG_MALLOC_SIZE=0x0
 CONFIG_MALLOC_TLSF=y
 CONFIG_RELOCATABLE=y
diff --git a/common/Kconfig b/common/Kconfig
index 0ac83a22ca0c..2dd5842e530f 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -245,16 +245,6 @@ config BAREBOX_MAX_BARE_INIT_SIZE
 	  this will allow your bare_init to fit in SRAM as example
 	  ARCH can overwrite it via ARCH_BAREBOX_MAX_BARE_INIT_SIZE
 
-config BAREBOX_MAX_PBLX_SIZE
-	depends on PBL_MULTI_IMAGES
-	depends on IMAGE_COMPRESSION
-	prompt "Maximum PBLX size"
-	hex
-	default 0xffffffff
-	help
-	  Define the maximum size of the PBLX image.
-	  The pblx is a self extracting barebox binary.
-
 config HAVE_CONFIGURABLE_MEMORY_LAYOUT
 	bool
 
diff --git a/images/Makefile b/images/Makefile
index 4e82dc92ee76..59b81f9b6d8f 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -66,6 +66,7 @@ $(obj)/%.pbl: $(pbl-lds) $(barebox-pbl-common) $(obj)/piggy.o FORCE
 
 $(obj)/%.pblb: $(obj)/%.pbl FORCE
 	$(call if_changed,objcopy_bin,$(*F))
+	$(call cmd,check_file_size,$@,$(CONFIG_BAREBOX_MAX_IMAGE_SIZE))
 
 $(obj)/%.s: $(obj)/% FORCE
 	$(call if_changed,disasm)
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/2] images: allow overriding BAREBOX_MAX_IMAGE_SIZE from arch Kconfig
  2019-02-19 12:10 [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded Ahmad Fatoum
@ 2019-02-19 12:10 ` Ahmad Fatoum
  2019-02-19 12:15 ` [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded Ahmad Fatoum
  2019-03-04 14:16 ` Ahmad Fatoum
  2 siblings, 0 replies; 6+ messages in thread
From: Ahmad Fatoum @ 2019-02-19 12:10 UTC (permalink / raw)
  To: barebox

The size restriction imposed by the ROM code of the target SoC is the
upper limit on how big a barebox binary should get. Thus allow the
architecture Kconfig to define an optional (possibly subarch-specific
ARCH_BAREBOX_MAX_IMAGE_SIZE), as a ceiling for the resulting barebox
binary size.

As we define a min function to calculate this, define a max function
as well for symmetry.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
 Makefile               |  4 +++-
 arch/arm/pbl/Makefile  |  4 +++-
 arch/mips/pbl/Makefile |  4 +++-
 common/Kconfig         |  3 ++-
 images/Makefile        |  4 +++-
 scripts/Makefile.lib   | 13 +++++++++++++
 6 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index c4030ecbf12e..decba5ee572e 100644
--- a/Makefile
+++ b/Makefile
@@ -719,7 +719,9 @@ OBJCOPYFLAGS_barebox.bin = -O binary
 barebox.bin: barebox FORCE
 	$(call if_changed,objcopy)
 ifndef CONFIG_PBL_IMAGE
-	$(call cmd,check_file_size,$@,$(CONFIG_BAREBOX_MAX_IMAGE_SIZE))
+	$(call cmd,check_file_size,$@, \
+	  $(call min,$(CONFIG_ARCH_BAREBOX_MAX_IMAGE_SIZE) \
+	             $(CONFIG_BAREBOX_MAX_IMAGE_SIZE)))
 endif
 
 # By default the uImage load address is 2MB below CONFIG_TEXT_BASE,
diff --git a/arch/arm/pbl/Makefile b/arch/arm/pbl/Makefile
index 5d7e85b373a6..95b6772fc21b 100644
--- a/arch/arm/pbl/Makefile
+++ b/arch/arm/pbl/Makefile
@@ -22,7 +22,9 @@ endif
 
 $(obj)/zbarebox.bin:	$(obj)/zbarebox FORCE
 	$(call if_changed,objcopy)
-	$(call cmd,check_file_size,$@,$(CONFIG_BAREBOX_MAX_IMAGE_SIZE))
+	$(call cmd,check_file_size,$@, \
+	  $(call min,$(CONFIG_ARCH_BAREBOX_MAX_IMAGE_SIZE) \
+	             $(CONFIG_BAREBOX_MAX_IMAGE_SIZE)))
 	$(Q)$(kecho) '  Barebox: fix size'
 	$(Q)$(objtree)/scripts/fix_size -i -f $(objtree)/$@ $(FIX_SIZE)
 	$(Q)$(kecho) '  Barebox: $@ is ready'
diff --git a/arch/mips/pbl/Makefile b/arch/mips/pbl/Makefile
index 44ce3d1c922e..8904d269088a 100644
--- a/arch/mips/pbl/Makefile
+++ b/arch/mips/pbl/Makefile
@@ -16,7 +16,9 @@ extra-y       += piggy.gzip piggy.lz4 piggy.lzo piggy.lzma piggy.xzkern piggy.sh
 
 $(obj)/zbarebox.bin:	$(obj)/zbarebox FORCE
 	$(call if_changed,objcopy)
-	$(call cmd,check_file_size,$@,$(CONFIG_BAREBOX_MAX_IMAGE_SIZE))
+	$(call cmd,check_file_size,$@, \
+	  $(call min,$(CONFIG_ARCH_BAREBOX_MAX_IMAGE_SIZE) \
+	             $(CONFIG_BAREBOX_MAX_IMAGE_SIZE)))
 	$(Q)$(kecho) '  Barebox: $@ is ready'
 
 $(obj)/zbarebox.S: $(obj)/zbarebox FORCE
diff --git a/common/Kconfig b/common/Kconfig
index 2dd5842e530f..b109328b7887 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -225,7 +225,8 @@ config BAREBOX_MAX_IMAGE_SIZE
 	hex
 	default 0xffffffff
 	help
-	  Define the maximum size of barebox
+	  Define the maximum size of barebox unless ARCH_BAREBOX_MAX_IMAGE_SIZE
+	  is set to a more restrictive value.
 
 config BAREBOX_MAX_PBL_SIZE
 	depends on PBL_IMAGE
diff --git a/images/Makefile b/images/Makefile
index 59b81f9b6d8f..b6ec16467308 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -66,7 +66,9 @@ $(obj)/%.pbl: $(pbl-lds) $(barebox-pbl-common) $(obj)/piggy.o FORCE
 
 $(obj)/%.pblb: $(obj)/%.pbl FORCE
 	$(call if_changed,objcopy_bin,$(*F))
-	$(call cmd,check_file_size,$@,$(CONFIG_BAREBOX_MAX_IMAGE_SIZE))
+	$(call cmd,check_file_size,$@, \
+	  $(call min,$(CONFIG_ARCH_BAREBOX_MAX_IMAGE_SIZE) \
+	             $(CONFIG_BAREBOX_MAX_IMAGE_SIZE)))
 
 $(obj)/%.s: $(obj)/% FORCE
 	$(call if_changed,disasm)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 7b8643bf57a7..1c720515ba54 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -498,3 +498,16 @@ quiet_cmd_b64dec = B64DEC  $@
 
 %: %.base64
 	$(call cmd,b64dec)
+
+# Misc helpers
+# ---------------------------------------------------------------------------
+
+define min
+$(shell printf '%u ' $1 | awk 'BEGIN{ RS=" " } NR==1 { min=$$0 } \
+    NR>1 { if ($$0<min) min=$$0 } END{print min}')
+endef
+
+define max
+$(shell printf '%u ' $1 | awk 'BEGIN{ RS=" " } NR==1 { max=$$0 } \
+    NR>1 { if ($$0>max) max=$$0 } END{print max}')
+endef
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded
  2019-02-19 12:10 [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded Ahmad Fatoum
  2019-02-19 12:10 ` [PATCH 2/2] images: allow overriding BAREBOX_MAX_IMAGE_SIZE from arch Kconfig Ahmad Fatoum
@ 2019-02-19 12:15 ` Ahmad Fatoum
  2019-03-04 14:16 ` Ahmad Fatoum
  2 siblings, 0 replies; 6+ messages in thread
From: Ahmad Fatoum @ 2019-02-19 12:15 UTC (permalink / raw)
  To: barebox

On 19/2/19 13:10, Ahmad Fatoum wrote:
> 5a1a5ed253 ("ARM: images: use piggydata")

Should've added a Fixes: 5a1a5ed253 ("ARM: images: use piggydata") as well.

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded
  2019-02-19 12:10 [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded Ahmad Fatoum
  2019-02-19 12:10 ` [PATCH 2/2] images: allow overriding BAREBOX_MAX_IMAGE_SIZE from arch Kconfig Ahmad Fatoum
  2019-02-19 12:15 ` [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded Ahmad Fatoum
@ 2019-03-04 14:16 ` Ahmad Fatoum
  2019-03-07  7:32   ` Sascha Hauer
  2 siblings, 1 reply; 6+ messages in thread
From: Ahmad Fatoum @ 2019-03-04 14:16 UTC (permalink / raw)
  To: barebox

Hello,

On 19/2/19 13:10, Ahmad Fatoum wrote:
> For platforms such as the at91, the boot ROM imposes an upper limit
> on barebox file size.  Prior to 5a1a5ed253 ("ARM: images: use piggydata"),
> BAREBOX_MAX_PBLX_SIZE seems to have been the way to go for limiting
> the size of the final barebox binary when using the PBL.
> With pblx removed, this variable is of no use, so have the existing
> BAREBOX_MAX_IMAGE_SIZE replace its functionality.
> 
> Currently BAREBOX_MAX_IMAGE_SIZE is only checked against in the non-PBL
> case, so add a check in the PBL case as well.
> 
> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> ---
>  arch/arm/configs/am335x_mlo_defconfig |  2 +-
>  common/Kconfig                        | 10 ----------
>  images/Makefile                       |  1 +
>  3 files changed, 2 insertions(+), 11 deletions(-)
> 

any news on these two patches?

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded
  2019-03-04 14:16 ` Ahmad Fatoum
@ 2019-03-07  7:32   ` Sascha Hauer
  2019-03-07 10:45     ` Ahmad Fatoum
  0 siblings, 1 reply; 6+ messages in thread
From: Sascha Hauer @ 2019-03-07  7:32 UTC (permalink / raw)
  To: Ahmad Fatoum; +Cc: barebox

On Mon, Mar 04, 2019 at 03:16:51PM +0100, Ahmad Fatoum wrote:
> Hello,
> 
> On 19/2/19 13:10, Ahmad Fatoum wrote:
> > For platforms such as the at91, the boot ROM imposes an upper limit
> > on barebox file size.  Prior to 5a1a5ed253 ("ARM: images: use piggydata"),
> > BAREBOX_MAX_PBLX_SIZE seems to have been the way to go for limiting
> > the size of the final barebox binary when using the PBL.
> > With pblx removed, this variable is of no use, so have the existing
> > BAREBOX_MAX_IMAGE_SIZE replace its functionality.
> > 
> > Currently BAREBOX_MAX_IMAGE_SIZE is only checked against in the non-PBL
> > case, so add a check in the PBL case as well.
> > 
> > Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> > ---
> >  arch/arm/configs/am335x_mlo_defconfig |  2 +-
> >  common/Kconfig                        | 10 ----------
> >  images/Makefile                       |  1 +
> >  3 files changed, 2 insertions(+), 11 deletions(-)
> > 
> 
> any news on these two patches?

I applied the first one as I think it does nothing wrong. I am always
hesitating to apply such patches because I think we need to do this
better. For example when doing multi image builds different ROMs with
different size limitations might be involved, so putting the limitation
in Kconfig is wrong.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded
  2019-03-07  7:32   ` Sascha Hauer
@ 2019-03-07 10:45     ` Ahmad Fatoum
  0 siblings, 0 replies; 6+ messages in thread
From: Ahmad Fatoum @ 2019-03-07 10:45 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On 3/7/19 8:32 AM, Sascha Hauer wrote:
> On Mon, Mar 04, 2019 at 03:16:51PM +0100, Ahmad Fatoum wrote:
>> Hello,
>>
>> On 19/2/19 13:10, Ahmad Fatoum wrote:
>>> For platforms such as the at91, the boot ROM imposes an upper limit
>>> on barebox file size.  Prior to 5a1a5ed253 ("ARM: images: use piggydata"),
>>> BAREBOX_MAX_PBLX_SIZE seems to have been the way to go for limiting
>>> the size of the final barebox binary when using the PBL.
>>> With pblx removed, this variable is of no use, so have the existing
>>> BAREBOX_MAX_IMAGE_SIZE replace its functionality.
>>>
>>> Currently BAREBOX_MAX_IMAGE_SIZE is only checked against in the non-PBL
>>> case, so add a check in the PBL case as well.
>>>
>>> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
>>> ---
>>>  arch/arm/configs/am335x_mlo_defconfig |  2 +-
>>>  common/Kconfig                        | 10 ----------
>>>  images/Makefile                       |  1 +
>>>  3 files changed, 2 insertions(+), 11 deletions(-)
>>>
>>
>> any news on these two patches?
> 
> I applied the first one as I think it does nothing wrong. I am always
> hesitating to apply such patches because I think we need to do this
> better. For example when doing multi image builds different ROMs with
> different size limitations might be involved, so putting the limitation
> in Kconfig is wrong.

Ah, I didn't think about multi-image when I wrote this patch. I am
slowly getting it. Thanks for the feedback!

Specifying it entry-point-wise in images/Makefile.* seems to be the better
place then.

Cheers
Ahmad

> 
> Sascha
> 


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-03-07 10:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-19 12:10 [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded Ahmad Fatoum
2019-02-19 12:10 ` [PATCH 2/2] images: allow overriding BAREBOX_MAX_IMAGE_SIZE from arch Kconfig Ahmad Fatoum
2019-02-19 12:15 ` [PATCH 1/2] images: pbl: verify CONFIG_BAREBOX_MAX_IMAGE_SIZE is not exceeded Ahmad Fatoum
2019-03-04 14:16 ` Ahmad Fatoum
2019-03-07  7:32   ` Sascha Hauer
2019-03-07 10:45     ` Ahmad Fatoum

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox