diff mbox

[U-Boot] arm: mx6: specify SPL padding

Message ID 20161115020612.32725-1-stefan@agner.ch
State Superseded
Headers show

Commit Message

Stefan Agner Nov. 15, 2016, 2:06 a.m. UTC
From: Stefan Agner <stefan.agner@toradex.com>

When building SPL with eMMC boot support, specify standard padding
for payload to match the load sector during boot. This allows to
use the u-boot-with-spl.imx build target to generate a direcly
flashable image which can be flashed using:

  dd if=u-boot-with-spl.imx of=/dev/mmcblk0 bs=512 skip=2

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>

---

 include/configs/imx6_spl.h | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Max Krummenacher Nov. 15, 2016, 9:59 a.m. UTC | #1
Hi Stefan

On Mon, 2016-11-14 at 18:06 -0800, Stefan Agner wrote:
> From: Stefan Agner <stefan.agner@toradex.com>

> 

> When building SPL with eMMC boot support, specify standard padding

> for payload to match the load sector during boot. This allows to

> use the u-boot-with-spl.imx build target to generate a direcly

> flashable image which can be flashed using:

> 

>   dd if=u-boot-with-spl.imx of=/dev/mmcblk0 bs=512 skip=2

> 

> Signed-off-by: Stefan Agner <stefan.agner@toradex.com>

> 

> ---

> 

>  include/configs/imx6_spl.h | 6 ++++++

>  1 file changed, 6 insertions(+)

> 

> diff --git a/include/configs/imx6_spl.h b/include/configs/imx6_spl.h

> index 76d1ca0..ca3ed19 100644

> --- a/include/configs/imx6_spl.h

> +++ b/include/configs/imx6_spl.h

> @@ -42,6 +42,12 @@

>  #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1

>  #define

> CONFIG_SYS_MONITOR_LEN  (CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS/2*1024)

>  #define CONFIG_SPL_ABORT_ON_RAW_IMAGE

> +/*

> + * SPL starts at 1KB (ROM offset), hence we need to pad SPL up to

> 68KB so

> + * that payload (U-Boot) will be at 69KB (sector 138) on the eMMC/SD

> card.

> + * Required for targets such as u-boot-with-spl.imx.

> + */

> +#define CONFIG_SPL_PAD_TO			0x11000

>  #endif

>  

>  /* SATA support */


This has been brought up already:
https://www.mail-archive.com/u-boot@lists.denx.de/msg228246.html
I agreed with Marek that this might disrupt other boot sources
(NOR/SPI/ ...) which may or may not decide to use another offset
between SPL and U-Boot.
Thus it is advisable to move that define to the individual board
configuration where one knows for what boot device one wants to
use the combined u-boot-with-spl.imx binary.

Max

P.S. Sorry for the noise to your individual mail addresses, I had
issues getting to the mailinglist through gmane.
Tom Rini Nov. 15, 2016, 4:12 p.m. UTC | #2
On Tue, Nov 15, 2016 at 09:59:22AM +0000, Max Krummenacher wrote:
> Hi Stefan
> 
> On Mon, 2016-11-14 at 18:06 -0800, Stefan Agner wrote:
> > From: Stefan Agner <stefan.agner@toradex.com>
> > 
> > When building SPL with eMMC boot support, specify standard padding
> > for payload to match the load sector during boot. This allows to
> > use the u-boot-with-spl.imx build target to generate a direcly
> > flashable image which can be flashed using:
> > 
> >   dd if=u-boot-with-spl.imx of=/dev/mmcblk0 bs=512 skip=2
> > 
> > Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
> > 
> > ---
> > 
> >  include/configs/imx6_spl.h | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/include/configs/imx6_spl.h b/include/configs/imx6_spl.h
> > index 76d1ca0..ca3ed19 100644
> > --- a/include/configs/imx6_spl.h
> > +++ b/include/configs/imx6_spl.h
> > @@ -42,6 +42,12 @@
> >  #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
> >  #define
> > CONFIG_SYS_MONITOR_LEN  (CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS/2*1024)
> >  #define CONFIG_SPL_ABORT_ON_RAW_IMAGE
> > +/*
> > + * SPL starts at 1KB (ROM offset), hence we need to pad SPL up to
> > 68KB so
> > + * that payload (U-Boot) will be at 69KB (sector 138) on the eMMC/SD
> > card.
> > + * Required for targets such as u-boot-with-spl.imx.
> > + */
> > +#define CONFIG_SPL_PAD_TO			0x11000
> >  #endif
> >  
> >  /* SATA support */
> 
> This has been brought up already:
> https://www.mail-archive.com/u-boot@lists.denx.de/msg228246.html
> I agreed with Marek that this might disrupt other boot sources
> (NOR/SPI/ ...) which may or may not decide to use another offset
> between SPL and U-Boot.
> Thus it is advisable to move that define to the individual board
> configuration where one knows for what boot device one wants to
> use the combined u-boot-with-spl.imx binary.

I'm going to have to disagree with Marek here then.  Looking over the
explanation in include/configs/imx6_spl.h we have:
1KiB up front "wasted" for a partition table
4KiB up next for the ROM-mandated header
64KiB for SPL itself, which is our max size, unconditionally set above
this bit of context.  But it is the lowest common denominator in terms
of IRAM size in the families.

Which brings us to the SPL_PAD_TO above, 68KiB.  We cannot go lower than
this.  No one is changing any of this either today nor setting
SPL_PAD_TO so
u-boot-with-spl.imx isn't usable today.  None of this breaks using
separate files.
Stefan Agner Nov. 15, 2016, 5:42 p.m. UTC | #3
On 2016-11-15 08:12, Tom Rini wrote:
> On Tue, Nov 15, 2016 at 09:59:22AM +0000, Max Krummenacher wrote:
>> Hi Stefan
>>
>> On Mon, 2016-11-14 at 18:06 -0800, Stefan Agner wrote:
>> > From: Stefan Agner <stefan.agner@toradex.com>
>> >
>> > When building SPL with eMMC boot support, specify standard padding
>> > for payload to match the load sector during boot. This allows to
>> > use the u-boot-with-spl.imx build target to generate a direcly
>> > flashable image which can be flashed using:
>> >
>> >   dd if=u-boot-with-spl.imx of=/dev/mmcblk0 bs=512 skip=2
>> >
>> > Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
>> >
>> > ---
>> >
>> >  include/configs/imx6_spl.h | 6 ++++++
>> >  1 file changed, 6 insertions(+)
>> >
>> > diff --git a/include/configs/imx6_spl.h b/include/configs/imx6_spl.h
>> > index 76d1ca0..ca3ed19 100644
>> > --- a/include/configs/imx6_spl.h
>> > +++ b/include/configs/imx6_spl.h
>> > @@ -42,6 +42,12 @@
>> >  #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
>> >  #define
>> > CONFIG_SYS_MONITOR_LEN  (CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS/2*1024)
>> >  #define CONFIG_SPL_ABORT_ON_RAW_IMAGE
>> > +/*
>> > + * SPL starts at 1KB (ROM offset), hence we need to pad SPL up to
>> > 68KB so
>> > + * that payload (U-Boot) will be at 69KB (sector 138) on the eMMC/SD
>> > card.
>> > + * Required for targets such as u-boot-with-spl.imx.
>> > + */
>> > +#define CONFIG_SPL_PAD_TO			0x11000
>> >  #endif
>> >  
>> >  /* SATA support */
>>
>> This has been brought up already:
>> https://www.mail-archive.com/u-boot@lists.denx.de/msg228246.html
>> I agreed with Marek that this might disrupt other boot sources
>> (NOR/SPI/ ...) which may or may not decide to use another offset
>> between SPL and U-Boot.
>> Thus it is advisable to move that define to the individual board
>> configuration where one knows for what boot device one wants to
>> use the combined u-boot-with-spl.imx binary.
> 
> I'm going to have to disagree with Marek here then.  Looking over the
> explanation in include/configs/imx6_spl.h we have:
> 1KiB up front "wasted" for a partition table
> 4KiB up next for the ROM-mandated header
> 64KiB for SPL itself, which is our max size, unconditionally set above
> this bit of context.  But it is the lowest common denominator in terms
> of IRAM size in the families.
> 
> Which brings us to the SPL_PAD_TO above, 68KiB.  We cannot go lower than
> this.  No one is changing any of this either today nor setting
> SPL_PAD_TO so
> u-boot-with-spl.imx isn't usable today.  None of this breaks using
> separate files.

I agree here, the pad seems pretty natural and should be usable across
boot devices. In fact, it probably should not be inside
CONFIG_SPL_MMC_SUPPORT, but at the top along with CONFIG_SPL_MAX_SIZE.

So far, include/config_fallbacks.h defined SPL_PAD_TO to 64KiB, which
renders u-boot-with-spl.imx unusable for SD/eMMC boot. Other boot
devices probably know a similar define (CONFIG_SYS_NAND_U_BOOT_OFFS).
Judging from existing board files it does not seem that anybody relied
on that 64kB padding so far... I guess if a board with a different boot
device wants to make use of u-boot-with-spl.imx, then it should make
sure that the offset is set correctly in its board file (e.g. using
#define CONFIG_SYS_NAND_U_BOOT_OFFS SPL_PAD_TO).

Marek?

--
Stefan
Marek Vasut Nov. 15, 2016, 6:04 p.m. UTC | #4
On 11/15/2016 06:42 PM, Stefan Agner wrote:
> On 2016-11-15 08:12, Tom Rini wrote:
>> On Tue, Nov 15, 2016 at 09:59:22AM +0000, Max Krummenacher wrote:
>>> Hi Stefan
>>>
>>> On Mon, 2016-11-14 at 18:06 -0800, Stefan Agner wrote:
>>>> From: Stefan Agner <stefan.agner@toradex.com>
>>>>
>>>> When building SPL with eMMC boot support, specify standard padding
>>>> for payload to match the load sector during boot. This allows to
>>>> use the u-boot-with-spl.imx build target to generate a direcly
>>>> flashable image which can be flashed using:
>>>>
>>>>   dd if=u-boot-with-spl.imx of=/dev/mmcblk0 bs=512 skip=2
>>>>
>>>> Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
>>>>
>>>> ---
>>>>
>>>>  include/configs/imx6_spl.h | 6 ++++++
>>>>  1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/include/configs/imx6_spl.h b/include/configs/imx6_spl.h
>>>> index 76d1ca0..ca3ed19 100644
>>>> --- a/include/configs/imx6_spl.h
>>>> +++ b/include/configs/imx6_spl.h
>>>> @@ -42,6 +42,12 @@
>>>>  #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
>>>>  #define
>>>> CONFIG_SYS_MONITOR_LEN  (CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS/2*1024)
>>>>  #define CONFIG_SPL_ABORT_ON_RAW_IMAGE
>>>> +/*
>>>> + * SPL starts at 1KB (ROM offset), hence we need to pad SPL up to
>>>> 68KB so
>>>> + * that payload (U-Boot) will be at 69KB (sector 138) on the eMMC/SD
>>>> card.
>>>> + * Required for targets such as u-boot-with-spl.imx.
>>>> + */
>>>> +#define CONFIG_SPL_PAD_TO			0x11000
>>>>  #endif
>>>>  
>>>>  /* SATA support */
>>>
>>> This has been brought up already:
>>> https://www.mail-archive.com/u-boot@lists.denx.de/msg228246.html
>>> I agreed with Marek that this might disrupt other boot sources
>>> (NOR/SPI/ ...) which may or may not decide to use another offset
>>> between SPL and U-Boot.
>>> Thus it is advisable to move that define to the individual board
>>> configuration where one knows for what boot device one wants to
>>> use the combined u-boot-with-spl.imx binary.
>>
>> I'm going to have to disagree with Marek here then.  Looking over the
>> explanation in include/configs/imx6_spl.h we have:
>> 1KiB up front "wasted" for a partition table
>> 4KiB up next for the ROM-mandated header
>> 64KiB for SPL itself, which is our max size, unconditionally set above
>> this bit of context.  But it is the lowest common denominator in terms
>> of IRAM size in the families.
>>
>> Which brings us to the SPL_PAD_TO above, 68KiB.  We cannot go lower than
>> this.  No one is changing any of this either today nor setting
>> SPL_PAD_TO so
>> u-boot-with-spl.imx isn't usable today.  None of this breaks using
>> separate files.
> 
> I agree here, the pad seems pretty natural and should be usable across
> boot devices. In fact, it probably should not be inside
> CONFIG_SPL_MMC_SUPPORT, but at the top along with CONFIG_SPL_MAX_SIZE.
> 
> So far, include/config_fallbacks.h defined SPL_PAD_TO to 64KiB, which
> renders u-boot-with-spl.imx unusable for SD/eMMC boot. Other boot
> devices probably know a similar define (CONFIG_SYS_NAND_U_BOOT_OFFS).
> Judging from existing board files it does not seem that anybody relied
> on that 64kB padding so far... I guess if a board with a different boot
> device wants to make use of u-boot-with-spl.imx, then it should make
> sure that the offset is set correctly in its board file (e.g. using
> #define CONFIG_SYS_NAND_U_BOOT_OFFS SPL_PAD_TO).
> 
> Marek?

I'm fine with it, esp. now that the other boot media are checked. Thanks
Stefan Agner Nov. 15, 2016, 6:04 p.m. UTC | #5
On 2016-11-15 10:04, Marek Vasut wrote:
> On 11/15/2016 06:42 PM, Stefan Agner wrote:
>> On 2016-11-15 08:12, Tom Rini wrote:
>>> On Tue, Nov 15, 2016 at 09:59:22AM +0000, Max Krummenacher wrote:
>>>> Hi Stefan
>>>>
>>>> On Mon, 2016-11-14 at 18:06 -0800, Stefan Agner wrote:
>>>>> From: Stefan Agner <stefan.agner@toradex.com>
>>>>>
>>>>> When building SPL with eMMC boot support, specify standard padding
>>>>> for payload to match the load sector during boot. This allows to
>>>>> use the u-boot-with-spl.imx build target to generate a direcly
>>>>> flashable image which can be flashed using:
>>>>>
>>>>>   dd if=u-boot-with-spl.imx of=/dev/mmcblk0 bs=512 skip=2
>>>>>
>>>>> Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
>>>>>
>>>>> ---
>>>>>
>>>>>  include/configs/imx6_spl.h | 6 ++++++
>>>>>  1 file changed, 6 insertions(+)
>>>>>
>>>>> diff --git a/include/configs/imx6_spl.h b/include/configs/imx6_spl.h
>>>>> index 76d1ca0..ca3ed19 100644
>>>>> --- a/include/configs/imx6_spl.h
>>>>> +++ b/include/configs/imx6_spl.h
>>>>> @@ -42,6 +42,12 @@
>>>>>  #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
>>>>>  #define
>>>>> CONFIG_SYS_MONITOR_LEN  (CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS/2*1024)
>>>>>  #define CONFIG_SPL_ABORT_ON_RAW_IMAGE
>>>>> +/*
>>>>> + * SPL starts at 1KB (ROM offset), hence we need to pad SPL up to
>>>>> 68KB so
>>>>> + * that payload (U-Boot) will be at 69KB (sector 138) on the eMMC/SD
>>>>> card.
>>>>> + * Required for targets such as u-boot-with-spl.imx.
>>>>> + */
>>>>> +#define CONFIG_SPL_PAD_TO			0x11000
>>>>>  #endif
>>>>>
>>>>>  /* SATA support */
>>>>
>>>> This has been brought up already:
>>>> https://www.mail-archive.com/u-boot@lists.denx.de/msg228246.html
>>>> I agreed with Marek that this might disrupt other boot sources
>>>> (NOR/SPI/ ...) which may or may not decide to use another offset
>>>> between SPL and U-Boot.
>>>> Thus it is advisable to move that define to the individual board
>>>> configuration where one knows for what boot device one wants to
>>>> use the combined u-boot-with-spl.imx binary.
>>>
>>> I'm going to have to disagree with Marek here then.  Looking over the
>>> explanation in include/configs/imx6_spl.h we have:
>>> 1KiB up front "wasted" for a partition table
>>> 4KiB up next for the ROM-mandated header
>>> 64KiB for SPL itself, which is our max size, unconditionally set above
>>> this bit of context.  But it is the lowest common denominator in terms
>>> of IRAM size in the families.
>>>
>>> Which brings us to the SPL_PAD_TO above, 68KiB.  We cannot go lower than
>>> this.  No one is changing any of this either today nor setting
>>> SPL_PAD_TO so
>>> u-boot-with-spl.imx isn't usable today.  None of this breaks using
>>> separate files.
>>
>> I agree here, the pad seems pretty natural and should be usable across
>> boot devices. In fact, it probably should not be inside
>> CONFIG_SPL_MMC_SUPPORT, but at the top along with CONFIG_SPL_MAX_SIZE.
>>
>> So far, include/config_fallbacks.h defined SPL_PAD_TO to 64KiB, which
>> renders u-boot-with-spl.imx unusable for SD/eMMC boot. Other boot
>> devices probably know a similar define (CONFIG_SYS_NAND_U_BOOT_OFFS).
>> Judging from existing board files it does not seem that anybody relied
>> on that 64kB padding so far... I guess if a board with a different boot
>> device wants to make use of u-boot-with-spl.imx, then it should make
>> sure that the offset is set correctly in its board file (e.g. using
>> #define CONFIG_SYS_NAND_U_BOOT_OFFS SPL_PAD_TO).
>>
>> Marek?
> 
> I'm fine with it, esp. now that the other boot media are checked. Thanks

Ok, I will send a v2 which moves it outside CONFIG_SPL_MMC_SUPPORT.

--
Stefan
diff mbox

Patch

diff --git a/include/configs/imx6_spl.h b/include/configs/imx6_spl.h
index 76d1ca0..ca3ed19 100644
--- a/include/configs/imx6_spl.h
+++ b/include/configs/imx6_spl.h
@@ -42,6 +42,12 @@ 
 #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
 #define CONFIG_SYS_MONITOR_LEN  (CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS/2*1024)
 #define CONFIG_SPL_ABORT_ON_RAW_IMAGE
+/*
+ * SPL starts at 1KB (ROM offset), hence we need to pad SPL up to 68KB so
+ * that payload (U-Boot) will be at 69KB (sector 138) on the eMMC/SD card.
+ * Required for targets such as u-boot-with-spl.imx.
+ */
+#define CONFIG_SPL_PAD_TO			0x11000
 #endif
 
 /* SATA support */