* [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method
@ 2022-08-02 9:55 Pali Rohár
2022-08-02 21:50 ` Tony Dinh
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Pali Rohár @ 2022-08-02 9:55 UTC (permalink / raw)
To: Stefan Roese, Tony Dinh; +Cc: u-boot
BootROM boot method should always work so always add it as fallback method
to spl_boot_list. In case U-Boot SPI driver fails it is better to try using
BootROM than hanging as by default only one boot method is specified.
Signed-off-by: Pali Rohár <pali@kernel.org>
---
arch/arm/mach-mvebu/spl.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
index 13c99913c380..bfcba2e73bab 100644
--- a/arch/arm/mach-mvebu/spl.c
+++ b/arch/arm/mach-mvebu/spl.c
@@ -271,6 +271,13 @@ u32 spl_boot_device(void)
}
}
+void board_boot_order(u32 *spl_boot_list)
+{
+ spl_boot_list[0] = spl_boot_device();
+ if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM)
+ spl_boot_list[1] = BOOT_DEVICE_BOOTROM;
+}
+
#else
u32 spl_boot_device(void)
--
2.20.1
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-02 9:55 [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method Pali Rohár @ 2022-08-02 21:50 ` Tony Dinh 2022-08-02 22:00 ` Pali Rohár 2022-08-03 6:48 ` Stefan Roese 2022-08-09 11:33 ` Stefan Roese 2 siblings, 1 reply; 10+ messages in thread From: Tony Dinh @ 2022-08-02 21:50 UTC (permalink / raw) To: Pali Rohár; +Cc: Stefan Roese, U-Boot Mailing List Hi Pali, It works great! An observation: BootROM boot method is a lot faster than SPL SPI driver method on this Armada 385 board. The BootROM took a fraction of a second to load the u-boot image. SPL SPI driver took a few seconds to load. Perhaps the SPI flash speed vs some probing code in SPL SPI driver? I also include the boot log after signature. Tested-by: Tony Dinh <mibodhi@gmail.com> Thanks, Tony <Begin boot log> BootROM - 1.73 Booting from SPI flash U-Boot SPL 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) High speed PHY - Version: 2.0 Detected Device ID 6820 board SerDes lanes topology details: | Lane # | Speed | Type | -------------------------------- | 0 | 0 | SGMII0 | | 1 | 6 | SATA0 | | 4 | 5 | USB3 HOST0 | | 5 | 5 | USB3 HOST1 | -------------------------------- High speed PHY - Ended Successfully mv_ddr: 14.0.0 DDR3 Training Sequence - Switching XBAR Window to FastPath Window mv_ddr: completed successfully Trying to boot from SPI Invalid bus 0 (err=-19) SPI probe failed. Trying to boot from BOOTROM Returning to BootROM (return address 0xffff05c4)... BootROM: Image checksum verification PASSED U-Boot 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) Synology DS116 SoC: MV88F6820-A0 at 1866 MHz DRAM: 1 GiB (933 MHz, 32-bit, ECC not enabled) Core: 41 devices, 18 uclasses, devicetree: separate MMC: Loading Environment from SPIFlash... SF: Detected mx25l6405d with page size 256 Bytes, erase size 4 KiB, total 8 MiB OK Model: Synology DS116 Board: Synology DS116 Net: eth0: ethernet@70000 Hit any key to stop autoboot: 0 <End boot log> On Tue, Aug 2, 2022 at 2:55 AM Pali Rohár <pali@kernel.org> wrote: > > BootROM boot method should always work so always add it as fallback method > to spl_boot_list. In case U-Boot SPI driver fails it is better to try using > BootROM than hanging as by default only one boot method is specified. > > Signed-off-by: Pali Rohár <pali@kernel.org> > --- > arch/arm/mach-mvebu/spl.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > index 13c99913c380..bfcba2e73bab 100644 > --- a/arch/arm/mach-mvebu/spl.c > +++ b/arch/arm/mach-mvebu/spl.c > @@ -271,6 +271,13 @@ u32 spl_boot_device(void) > } > } > > +void board_boot_order(u32 *spl_boot_list) > +{ > + spl_boot_list[0] = spl_boot_device(); > + if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM) > + spl_boot_list[1] = BOOT_DEVICE_BOOTROM; > +} > + > #else > > u32 spl_boot_device(void) > -- > 2.20.1 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-02 21:50 ` Tony Dinh @ 2022-08-02 22:00 ` Pali Rohár 2022-08-02 22:13 ` Tony Dinh 0 siblings, 1 reply; 10+ messages in thread From: Pali Rohár @ 2022-08-02 22:00 UTC (permalink / raw) To: Tony Dinh; +Cc: Stefan Roese, U-Boot Mailing List, Marek Behún Hello! We have tested that A385 BootROM on Turris Omnia board is much slower when reading proper U-Boot from SPI NOR than native SPL SPI driver. If you have different test results on A385, could you check SPI speed used by U-Boot? I think that CONFIG_SF_DEFAULT_SPEED should define it. For Omnia we use CONFIG_SF_DEFAULT_SPEED=40000000. Also check value of DT property spi-max-frequency. We have: spi-max-frequency = <40000000>; On Tuesday 02 August 2022 14:50:32 Tony Dinh wrote: > Hi Pali, > > It works great! > > An observation: BootROM boot method is a lot faster than SPL SPI > driver method on this Armada 385 board. The BootROM took a fraction of > a second to load the u-boot image. SPL SPI driver took a few seconds > to load. Perhaps the SPI flash speed vs some probing code in SPL SPI > driver? I also include the boot log after signature. > > Tested-by: Tony Dinh <mibodhi@gmail.com> > > Thanks, > Tony > > <Begin boot log> > > BootROM - 1.73 > Booting from SPI flash > > U-Boot SPL 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > High speed PHY - Version: 2.0 > Detected Device ID 6820 > board SerDes lanes topology details: > | Lane # | Speed | Type | > -------------------------------- > | 0 | 0 | SGMII0 | > | 1 | 6 | SATA0 | > | 4 | 5 | USB3 HOST0 | > | 5 | 5 | USB3 HOST1 | > -------------------------------- > High speed PHY - Ended Successfully > mv_ddr: 14.0.0 > DDR3 Training Sequence - Switching XBAR Window to FastPath Window > mv_ddr: completed successfully > Trying to boot from SPI > Invalid bus 0 (err=-19) > SPI probe failed. > Trying to boot from BOOTROM > Returning to BootROM (return address 0xffff05c4)... > BootROM: Image checksum verification PASSED > > > U-Boot 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > Synology DS116 > > SoC: MV88F6820-A0 at 1866 MHz > DRAM: 1 GiB (933 MHz, 32-bit, ECC not enabled) > Core: 41 devices, 18 uclasses, devicetree: separate > MMC: > Loading Environment from SPIFlash... SF: Detected mx25l6405d with page > size 256 Bytes, erase size 4 KiB, total 8 MiB > OK > Model: Synology DS116 > Board: Synology DS116 > Net: eth0: ethernet@70000 > Hit any key to stop autoboot: 0 > > <End boot log> > > > On Tue, Aug 2, 2022 at 2:55 AM Pali Rohár <pali@kernel.org> wrote: > > > > BootROM boot method should always work so always add it as fallback method > > to spl_boot_list. In case U-Boot SPI driver fails it is better to try using > > BootROM than hanging as by default only one boot method is specified. > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > --- > > arch/arm/mach-mvebu/spl.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > > index 13c99913c380..bfcba2e73bab 100644 > > --- a/arch/arm/mach-mvebu/spl.c > > +++ b/arch/arm/mach-mvebu/spl.c > > @@ -271,6 +271,13 @@ u32 spl_boot_device(void) > > } > > } > > > > +void board_boot_order(u32 *spl_boot_list) > > +{ > > + spl_boot_list[0] = spl_boot_device(); > > + if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM) > > + spl_boot_list[1] = BOOT_DEVICE_BOOTROM; > > +} > > + > > #else > > > > u32 spl_boot_device(void) > > -- > > 2.20.1 > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-02 22:00 ` Pali Rohár @ 2022-08-02 22:13 ` Tony Dinh 2022-08-03 10:24 ` Pali Rohár 0 siblings, 1 reply; 10+ messages in thread From: Tony Dinh @ 2022-08-02 22:13 UTC (permalink / raw) To: Pali Rohár; +Cc: Stefan Roese, U-Boot Mailing List, Marek Behún Hi Pali, On Tue, Aug 2, 2022 at 3:00 PM Pali Rohár <pali@kernel.org> wrote: > > Hello! We have tested that A385 BootROM on Turris Omnia board is much > slower when reading proper U-Boot from SPI NOR than native SPL SPI > driver. > > If you have different test results on A385, could you check SPI speed > used by U-Boot? I think that CONFIG_SF_DEFAULT_SPEED should define it. > For Omnia we use CONFIG_SF_DEFAULT_SPEED=40000000. Also check value of > DT property spi-max-frequency. We have: spi-max-frequency = <40000000>; It seems the spi-max-frequency = <50000000> in the DTS took precedence here? #grep CONFIG_SF_DEFAULT_SPEED .config CONFIG_SF_DEFAULT_SPEED=1000000 #grep spi-max-frequency arch/arm/dts/armada-385-synology-ds116.dts spi-max-frequency = <50000000>; Thanks, Tony > On Tuesday 02 August 2022 14:50:32 Tony Dinh wrote: > > Hi Pali, > > > > It works great! > > > > An observation: BootROM boot method is a lot faster than SPL SPI > > driver method on this Armada 385 board. The BootROM took a fraction of > > a second to load the u-boot image. SPL SPI driver took a few seconds > > to load. Perhaps the SPI flash speed vs some probing code in SPL SPI > > driver? I also include the boot log after signature. > > > > Tested-by: Tony Dinh <mibodhi@gmail.com> > > > > Thanks, > > Tony > > > > <Begin boot log> > > > > BootROM - 1.73 > > Booting from SPI flash > > > > U-Boot SPL 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > > High speed PHY - Version: 2.0 > > Detected Device ID 6820 > > board SerDes lanes topology details: > > | Lane # | Speed | Type | > > -------------------------------- > > | 0 | 0 | SGMII0 | > > | 1 | 6 | SATA0 | > > | 4 | 5 | USB3 HOST0 | > > | 5 | 5 | USB3 HOST1 | > > -------------------------------- > > High speed PHY - Ended Successfully > > mv_ddr: 14.0.0 > > DDR3 Training Sequence - Switching XBAR Window to FastPath Window > > mv_ddr: completed successfully > > Trying to boot from SPI > > Invalid bus 0 (err=-19) > > SPI probe failed. > > Trying to boot from BOOTROM > > Returning to BootROM (return address 0xffff05c4)... > > BootROM: Image checksum verification PASSED > > > > > > U-Boot 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > > Synology DS116 > > > > SoC: MV88F6820-A0 at 1866 MHz > > DRAM: 1 GiB (933 MHz, 32-bit, ECC not enabled) > > Core: 41 devices, 18 uclasses, devicetree: separate > > MMC: > > Loading Environment from SPIFlash... SF: Detected mx25l6405d with page > > size 256 Bytes, erase size 4 KiB, total 8 MiB > > OK > > Model: Synology DS116 > > Board: Synology DS116 > > Net: eth0: ethernet@70000 > > Hit any key to stop autoboot: 0 > > > > <End boot log> > > > > > > On Tue, Aug 2, 2022 at 2:55 AM Pali Rohár <pali@kernel.org> wrote: > > > > > > BootROM boot method should always work so always add it as fallback method > > > to spl_boot_list. In case U-Boot SPI driver fails it is better to try using > > > BootROM than hanging as by default only one boot method is specified. > > > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > > --- > > > arch/arm/mach-mvebu/spl.c | 7 +++++++ > > > 1 file changed, 7 insertions(+) > > > > > > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > > > index 13c99913c380..bfcba2e73bab 100644 > > > --- a/arch/arm/mach-mvebu/spl.c > > > +++ b/arch/arm/mach-mvebu/spl.c > > > @@ -271,6 +271,13 @@ u32 spl_boot_device(void) > > > } > > > } > > > > > > +void board_boot_order(u32 *spl_boot_list) > > > +{ > > > + spl_boot_list[0] = spl_boot_device(); > > > + if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM) > > > + spl_boot_list[1] = BOOT_DEVICE_BOOTROM; > > > +} > > > + > > > #else > > > > > > u32 spl_boot_device(void) > > > -- > > > 2.20.1 > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-02 22:13 ` Tony Dinh @ 2022-08-03 10:24 ` Pali Rohár 2022-08-04 6:06 ` Tony Dinh 0 siblings, 1 reply; 10+ messages in thread From: Pali Rohár @ 2022-08-03 10:24 UTC (permalink / raw) To: Tony Dinh; +Cc: Stefan Roese, U-Boot Mailing List, Marek Behún On Tuesday 02 August 2022 15:13:13 Tony Dinh wrote: > Hi Pali, > > On Tue, Aug 2, 2022 at 3:00 PM Pali Rohár <pali@kernel.org> wrote: > > > > Hello! We have tested that A385 BootROM on Turris Omnia board is much > > slower when reading proper U-Boot from SPI NOR than native SPL SPI > > driver. > > > > If you have different test results on A385, could you check SPI speed > > used by U-Boot? I think that CONFIG_SF_DEFAULT_SPEED should define it. > > For Omnia we use CONFIG_SF_DEFAULT_SPEED=40000000. Also check value of > > DT property spi-max-frequency. We have: spi-max-frequency = <40000000>; > > It seems the spi-max-frequency = <50000000> in the DTS took precedence here? I'm not sure. It is possible that config option has higher priority. Try to set both values to same speed. > #grep CONFIG_SF_DEFAULT_SPEED .config > CONFIG_SF_DEFAULT_SPEED=1000000 > > #grep spi-max-frequency arch/arm/dts/armada-385-synology-ds116.dts > spi-max-frequency = <50000000>; > > Thanks, > Tony > > > > On Tuesday 02 August 2022 14:50:32 Tony Dinh wrote: > > > Hi Pali, > > > > > > It works great! > > > > > > An observation: BootROM boot method is a lot faster than SPL SPI > > > driver method on this Armada 385 board. The BootROM took a fraction of > > > a second to load the u-boot image. SPL SPI driver took a few seconds > > > to load. Perhaps the SPI flash speed vs some probing code in SPL SPI > > > driver? I also include the boot log after signature. > > > > > > Tested-by: Tony Dinh <mibodhi@gmail.com> > > > > > > Thanks, > > > Tony > > > > > > <Begin boot log> > > > > > > BootROM - 1.73 > > > Booting from SPI flash > > > > > > U-Boot SPL 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > > > High speed PHY - Version: 2.0 > > > Detected Device ID 6820 > > > board SerDes lanes topology details: > > > | Lane # | Speed | Type | > > > -------------------------------- > > > | 0 | 0 | SGMII0 | > > > | 1 | 6 | SATA0 | > > > | 4 | 5 | USB3 HOST0 | > > > | 5 | 5 | USB3 HOST1 | > > > -------------------------------- > > > High speed PHY - Ended Successfully > > > mv_ddr: 14.0.0 > > > DDR3 Training Sequence - Switching XBAR Window to FastPath Window > > > mv_ddr: completed successfully > > > Trying to boot from SPI > > > Invalid bus 0 (err=-19) > > > SPI probe failed. > > > Trying to boot from BOOTROM > > > Returning to BootROM (return address 0xffff05c4)... > > > BootROM: Image checksum verification PASSED > > > > > > > > > U-Boot 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > > > Synology DS116 > > > > > > SoC: MV88F6820-A0 at 1866 MHz > > > DRAM: 1 GiB (933 MHz, 32-bit, ECC not enabled) > > > Core: 41 devices, 18 uclasses, devicetree: separate > > > MMC: > > > Loading Environment from SPIFlash... SF: Detected mx25l6405d with page > > > size 256 Bytes, erase size 4 KiB, total 8 MiB > > > OK > > > Model: Synology DS116 > > > Board: Synology DS116 > > > Net: eth0: ethernet@70000 > > > Hit any key to stop autoboot: 0 > > > > > > <End boot log> > > > > > > > > > On Tue, Aug 2, 2022 at 2:55 AM Pali Rohár <pali@kernel.org> wrote: > > > > > > > > BootROM boot method should always work so always add it as fallback method > > > > to spl_boot_list. In case U-Boot SPI driver fails it is better to try using > > > > BootROM than hanging as by default only one boot method is specified. > > > > > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > > > --- > > > > arch/arm/mach-mvebu/spl.c | 7 +++++++ > > > > 1 file changed, 7 insertions(+) > > > > > > > > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > > > > index 13c99913c380..bfcba2e73bab 100644 > > > > --- a/arch/arm/mach-mvebu/spl.c > > > > +++ b/arch/arm/mach-mvebu/spl.c > > > > @@ -271,6 +271,13 @@ u32 spl_boot_device(void) > > > > } > > > > } > > > > > > > > +void board_boot_order(u32 *spl_boot_list) > > > > +{ > > > > + spl_boot_list[0] = spl_boot_device(); > > > > + if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM) > > > > + spl_boot_list[1] = BOOT_DEVICE_BOOTROM; > > > > +} > > > > + > > > > #else > > > > > > > > u32 spl_boot_device(void) > > > > -- > > > > 2.20.1 > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-03 10:24 ` Pali Rohár @ 2022-08-04 6:06 ` Tony Dinh 2022-08-04 23:06 ` Tony Dinh 0 siblings, 1 reply; 10+ messages in thread From: Tony Dinh @ 2022-08-04 6:06 UTC (permalink / raw) To: Pali Rohár; +Cc: Stefan Roese, U-Boot Mailing List, Marek Behún Hi Pali, On Wed, Aug 3, 2022 at 3:24 AM Pali Rohár <pali@kernel.org> wrote: > > On Tuesday 02 August 2022 15:13:13 Tony Dinh wrote: > > Hi Pali, > > > > On Tue, Aug 2, 2022 at 3:00 PM Pali Rohár <pali@kernel.org> wrote: > > > > > > Hello! We have tested that A385 BootROM on Turris Omnia board is much > > > slower when reading proper U-Boot from SPI NOR than native SPL SPI > > > driver. > > > > > > If you have different test results on A385, could you check SPI speed > > > used by U-Boot? I think that CONFIG_SF_DEFAULT_SPEED should define it. > > > For Omnia we use CONFIG_SF_DEFAULT_SPEED=40000000. Also check value of > > > DT property spi-max-frequency. We have: spi-max-frequency = <40000000>; > > > > It seems the spi-max-frequency = <50000000> in the DTS took precedence here? > > I'm not sure. It is possible that config option has higher priority. Try > to set both values to same speed. That's exactly what has caused the SPL SPI driver to slow down. Once I set the configurations for the default and the max to the same speed, SPL SPI driver boots instantly (no observable delay). CONFIG_ENV_SPI_MAX_HZ=50000000 CONFIG_SF_DEFAULT_SPEED=50000000 (and spi-max-frequency = <50000000> in the DTS) It is noticeably faster than BootROM loading the u-boot image, which takes an observable fraction of a second. So somewhere in the SPL SPL driver, the logic needs some improvement. Setting default speed and max speed to the same value apparently has short-circuit that logic. Thanks, Tony > > > #grep CONFIG_SF_DEFAULT_SPEED .config > > CONFIG_SF_DEFAULT_SPEED=1000000 > > > > #grep spi-max-frequency arch/arm/dts/armada-385-synology-ds116.dts > > spi-max-frequency = <50000000>; > > > > Thanks, > > Tony > > > > > > > On Tuesday 02 August 2022 14:50:32 Tony Dinh wrote: > > > > Hi Pali, > > > > > > > > It works great! > > > > > > > > An observation: BootROM boot method is a lot faster than SPL SPI > > > > driver method on this Armada 385 board. The BootROM took a fraction of > > > > a second to load the u-boot image. SPL SPI driver took a few seconds > > > > to load. Perhaps the SPI flash speed vs some probing code in SPL SPI > > > > driver? I also include the boot log after signature. > > > > > > > > Tested-by: Tony Dinh <mibodhi@gmail.com> > > > > > > > > Thanks, > > > > Tony > > > > > > > > <Begin boot log> > > > > > > > > BootROM - 1.73 > > > > Booting from SPI flash > > > > > > > > U-Boot SPL 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > > > > High speed PHY - Version: 2.0 > > > > Detected Device ID 6820 > > > > board SerDes lanes topology details: > > > > | Lane # | Speed | Type | > > > > -------------------------------- > > > > | 0 | 0 | SGMII0 | > > > > | 1 | 6 | SATA0 | > > > > | 4 | 5 | USB3 HOST0 | > > > > | 5 | 5 | USB3 HOST1 | > > > > -------------------------------- > > > > High speed PHY - Ended Successfully > > > > mv_ddr: 14.0.0 > > > > DDR3 Training Sequence - Switching XBAR Window to FastPath Window > > > > mv_ddr: completed successfully > > > > Trying to boot from SPI > > > > Invalid bus 0 (err=-19) > > > > SPI probe failed. > > > > Trying to boot from BOOTROM > > > > Returning to BootROM (return address 0xffff05c4)... > > > > BootROM: Image checksum verification PASSED > > > > > > > > > > > > U-Boot 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > > > > Synology DS116 > > > > > > > > SoC: MV88F6820-A0 at 1866 MHz > > > > DRAM: 1 GiB (933 MHz, 32-bit, ECC not enabled) > > > > Core: 41 devices, 18 uclasses, devicetree: separate > > > > MMC: > > > > Loading Environment from SPIFlash... SF: Detected mx25l6405d with page > > > > size 256 Bytes, erase size 4 KiB, total 8 MiB > > > > OK > > > > Model: Synology DS116 > > > > Board: Synology DS116 > > > > Net: eth0: ethernet@70000 > > > > Hit any key to stop autoboot: 0 > > > > > > > > <End boot log> > > > > > > > > > > > > On Tue, Aug 2, 2022 at 2:55 AM Pali Rohár <pali@kernel.org> wrote: > > > > > > > > > > BootROM boot method should always work so always add it as fallback method > > > > > to spl_boot_list. In case U-Boot SPI driver fails it is better to try using > > > > > BootROM than hanging as by default only one boot method is specified. > > > > > > > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > > > > --- > > > > > arch/arm/mach-mvebu/spl.c | 7 +++++++ > > > > > 1 file changed, 7 insertions(+) > > > > > > > > > > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > > > > > index 13c99913c380..bfcba2e73bab 100644 > > > > > --- a/arch/arm/mach-mvebu/spl.c > > > > > +++ b/arch/arm/mach-mvebu/spl.c > > > > > @@ -271,6 +271,13 @@ u32 spl_boot_device(void) > > > > > } > > > > > } > > > > > > > > > > +void board_boot_order(u32 *spl_boot_list) > > > > > +{ > > > > > + spl_boot_list[0] = spl_boot_device(); > > > > > + if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM) > > > > > + spl_boot_list[1] = BOOT_DEVICE_BOOTROM; > > > > > +} > > > > > + > > > > > #else > > > > > > > > > > u32 spl_boot_device(void) > > > > > -- > > > > > 2.20.1 > > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-04 6:06 ` Tony Dinh @ 2022-08-04 23:06 ` Tony Dinh 2022-08-05 12:27 ` Pali Rohár 0 siblings, 1 reply; 10+ messages in thread From: Tony Dinh @ 2022-08-04 23:06 UTC (permalink / raw) To: Pali Rohár; +Cc: Stefan Roese, U-Boot Mailing List, Marek Behún Hi Pali, Follow up on the topic of slow/fast SPL SPI loading. common/spl/spl_spi.c /* * Load U-Boot image from SPI flash into RAM * In DM mode: defaults speed and mode will be * taken from DT when available */ flash = spi_flash_probe(sf_bus, sf_cs, CONFIG_SF_DEFAULT_SPEED, CONFIG_SF_DEFAULT_MODE); if (!flash) { puts("SPI probe failed.\n"); return -ENODEV; } So that spi-max-frequency = <50000000> in the DTS is not used in the probe. Thanks, Tony On Wed, Aug 3, 2022 at 11:06 PM Tony Dinh <mibodhi@gmail.com> wrote: > > Hi Pali, > > On Wed, Aug 3, 2022 at 3:24 AM Pali Rohár <pali@kernel.org> wrote: > > > > On Tuesday 02 August 2022 15:13:13 Tony Dinh wrote: > > > Hi Pali, > > > > > > On Tue, Aug 2, 2022 at 3:00 PM Pali Rohár <pali@kernel.org> wrote: > > > > > > > > Hello! We have tested that A385 BootROM on Turris Omnia board is much > > > > slower when reading proper U-Boot from SPI NOR than native SPL SPI > > > > driver. > > > > > > > > If you have different test results on A385, could you check SPI speed > > > > used by U-Boot? I think that CONFIG_SF_DEFAULT_SPEED should define it. > > > > For Omnia we use CONFIG_SF_DEFAULT_SPEED=40000000. Also check value of > > > > DT property spi-max-frequency. We have: spi-max-frequency = <40000000>; > > > > > > It seems the spi-max-frequency = <50000000> in the DTS took precedence here? > > > > I'm not sure. It is possible that config option has higher priority. Try > > to set both values to same speed. > > That's exactly what has caused the SPL SPI driver to slow down. Once I > set the configurations for the default and the max to the same speed, > SPL SPI driver boots instantly (no observable delay). > > CONFIG_ENV_SPI_MAX_HZ=50000000 > CONFIG_SF_DEFAULT_SPEED=50000000 > (and spi-max-frequency = <50000000> in the DTS) > > It is noticeably faster than BootROM loading the u-boot image, which > takes an observable fraction of a second. > > So somewhere in the SPL SPL driver, the logic needs some improvement. > Setting default speed and max speed to the same value apparently has > short-circuit that logic. > > Thanks, > Tony > > > > > > > > > > #grep CONFIG_SF_DEFAULT_SPEED .config > > > CONFIG_SF_DEFAULT_SPEED=1000000 > > > > > > #grep spi-max-frequency arch/arm/dts/armada-385-synology-ds116.dts > > > spi-max-frequency = <50000000>; > > > > > > Thanks, > > > Tony > > > > > > > > > > On Tuesday 02 August 2022 14:50:32 Tony Dinh wrote: > > > > > Hi Pali, > > > > > > > > > > It works great! > > > > > > > > > > An observation: BootROM boot method is a lot faster than SPL SPI > > > > > driver method on this Armada 385 board. The BootROM took a fraction of > > > > > a second to load the u-boot image. SPL SPI driver took a few seconds > > > > > to load. Perhaps the SPI flash speed vs some probing code in SPL SPI > > > > > driver? I also include the boot log after signature. > > > > > > > > > > Tested-by: Tony Dinh <mibodhi@gmail.com> > > > > > > > > > > Thanks, > > > > > Tony > > > > > > > > > > <Begin boot log> > > > > > > > > > > BootROM - 1.73 > > > > > Booting from SPI flash > > > > > > > > > > U-Boot SPL 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > > > > > High speed PHY - Version: 2.0 > > > > > Detected Device ID 6820 > > > > > board SerDes lanes topology details: > > > > > | Lane # | Speed | Type | > > > > > -------------------------------- > > > > > | 0 | 0 | SGMII0 | > > > > > | 1 | 6 | SATA0 | > > > > > | 4 | 5 | USB3 HOST0 | > > > > > | 5 | 5 | USB3 HOST1 | > > > > > -------------------------------- > > > > > High speed PHY - Ended Successfully > > > > > mv_ddr: 14.0.0 > > > > > DDR3 Training Sequence - Switching XBAR Window to FastPath Window > > > > > mv_ddr: completed successfully > > > > > Trying to boot from SPI > > > > > Invalid bus 0 (err=-19) > > > > > SPI probe failed. > > > > > Trying to boot from BOOTROM > > > > > Returning to BootROM (return address 0xffff05c4)... > > > > > BootROM: Image checksum verification PASSED > > > > > > > > > > > > > > > U-Boot 2022.10-rc1-00212-g80e1491a03-dirty (Aug 02 2022 - 14:07:12 -0700) > > > > > Synology DS116 > > > > > > > > > > SoC: MV88F6820-A0 at 1866 MHz > > > > > DRAM: 1 GiB (933 MHz, 32-bit, ECC not enabled) > > > > > Core: 41 devices, 18 uclasses, devicetree: separate > > > > > MMC: > > > > > Loading Environment from SPIFlash... SF: Detected mx25l6405d with page > > > > > size 256 Bytes, erase size 4 KiB, total 8 MiB > > > > > OK > > > > > Model: Synology DS116 > > > > > Board: Synology DS116 > > > > > Net: eth0: ethernet@70000 > > > > > Hit any key to stop autoboot: 0 > > > > > > > > > > <End boot log> > > > > > > > > > > > > > > > On Tue, Aug 2, 2022 at 2:55 AM Pali Rohár <pali@kernel.org> wrote: > > > > > > > > > > > > BootROM boot method should always work so always add it as fallback method > > > > > > to spl_boot_list. In case U-Boot SPI driver fails it is better to try using > > > > > > BootROM than hanging as by default only one boot method is specified. > > > > > > > > > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > > > > > --- > > > > > > arch/arm/mach-mvebu/spl.c | 7 +++++++ > > > > > > 1 file changed, 7 insertions(+) > > > > > > > > > > > > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > > > > > > index 13c99913c380..bfcba2e73bab 100644 > > > > > > --- a/arch/arm/mach-mvebu/spl.c > > > > > > +++ b/arch/arm/mach-mvebu/spl.c > > > > > > @@ -271,6 +271,13 @@ u32 spl_boot_device(void) > > > > > > } > > > > > > } > > > > > > > > > > > > +void board_boot_order(u32 *spl_boot_list) > > > > > > +{ > > > > > > + spl_boot_list[0] = spl_boot_device(); > > > > > > + if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM) > > > > > > + spl_boot_list[1] = BOOT_DEVICE_BOOTROM; > > > > > > +} > > > > > > + > > > > > > #else > > > > > > > > > > > > u32 spl_boot_device(void) > > > > > > -- > > > > > > 2.20.1 > > > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-04 23:06 ` Tony Dinh @ 2022-08-05 12:27 ` Pali Rohár 0 siblings, 0 replies; 10+ messages in thread From: Pali Rohár @ 2022-08-05 12:27 UTC (permalink / raw) To: Tony Dinh; +Cc: Stefan Roese, U-Boot Mailing List, Marek Behún On Thursday 04 August 2022 16:06:30 Tony Dinh wrote: > Hi Pali, > > Follow up on the topic of slow/fast SPL SPI loading. > > common/spl/spl_spi.c > /* > * Load U-Boot image from SPI flash into RAM > * In DM mode: defaults speed and mode will be > * taken from DT when available > */ > flash = spi_flash_probe(sf_bus, sf_cs, > CONFIG_SF_DEFAULT_SPEED, > CONFIG_SF_DEFAULT_MODE); > if (!flash) { > puts("SPI probe failed.\n"); > return -ENODEV; > } > > So that spi-max-frequency = <50000000> in the DTS is not used in the probe. Based on that comment, spi_flash_probe() function should read spi-max-frequency from device tree when DM mode is enabled. And fallback to CONFIG_SF_DEFAULT_SPEED value. Probably there is a bug in DM spi_flash_probe() function implementation... ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-02 9:55 [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method Pali Rohár 2022-08-02 21:50 ` Tony Dinh @ 2022-08-03 6:48 ` Stefan Roese 2022-08-09 11:33 ` Stefan Roese 2 siblings, 0 replies; 10+ messages in thread From: Stefan Roese @ 2022-08-03 6:48 UTC (permalink / raw) To: Pali Rohár, Tony Dinh; +Cc: u-boot On 02.08.22 11:55, Pali Rohár wrote: > BootROM boot method should always work so always add it as fallback method > to spl_boot_list. In case U-Boot SPI driver fails it is better to try using > BootROM than hanging as by default only one boot method is specified. > > Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > arch/arm/mach-mvebu/spl.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > index 13c99913c380..bfcba2e73bab 100644 > --- a/arch/arm/mach-mvebu/spl.c > +++ b/arch/arm/mach-mvebu/spl.c > @@ -271,6 +271,13 @@ u32 spl_boot_device(void) > } > } > > +void board_boot_order(u32 *spl_boot_list) > +{ > + spl_boot_list[0] = spl_boot_device(); > + if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM) > + spl_boot_list[1] = BOOT_DEVICE_BOOTROM; > +} > + > #else > > u32 spl_boot_device(void) Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method 2022-08-02 9:55 [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method Pali Rohár 2022-08-02 21:50 ` Tony Dinh 2022-08-03 6:48 ` Stefan Roese @ 2022-08-09 11:33 ` Stefan Roese 2 siblings, 0 replies; 10+ messages in thread From: Stefan Roese @ 2022-08-09 11:33 UTC (permalink / raw) To: Pali Rohár, Tony Dinh; +Cc: u-boot On 02.08.22 11:55, Pali Rohár wrote: > BootROM boot method should always work so always add it as fallback method > to spl_boot_list. In case U-Boot SPI driver fails it is better to try using > BootROM than hanging as by default only one boot method is specified. > > Signed-off-by: Pali Rohár <pali@kernel.org> Applied to u-boot-marvell/master Thanks, Stefan > --- > arch/arm/mach-mvebu/spl.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > index 13c99913c380..bfcba2e73bab 100644 > --- a/arch/arm/mach-mvebu/spl.c > +++ b/arch/arm/mach-mvebu/spl.c > @@ -271,6 +271,13 @@ u32 spl_boot_device(void) > } > } > > +void board_boot_order(u32 *spl_boot_list) > +{ > + spl_boot_list[0] = spl_boot_device(); > + if (spl_boot_list[0] != BOOT_DEVICE_BOOTROM) > + spl_boot_list[1] = BOOT_DEVICE_BOOTROM; > +} > + > #else > > u32 spl_boot_device(void) Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-08-09 11:34 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-08-02 9:55 [PATCH] arm: mvebu: spl: Always fallback to BootROM boot method Pali Rohár 2022-08-02 21:50 ` Tony Dinh 2022-08-02 22:00 ` Pali Rohár 2022-08-02 22:13 ` Tony Dinh 2022-08-03 10:24 ` Pali Rohár 2022-08-04 6:06 ` Tony Dinh 2022-08-04 23:06 ` Tony Dinh 2022-08-05 12:27 ` Pali Rohár 2022-08-03 6:48 ` Stefan Roese 2022-08-09 11:33 ` Stefan Roese
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox