[PATCH RFC u-boot-mvebu 0/2] arm: mvebu: Fix eMMC boot

Martin Rowe martin.p.rowe at gmail.com
Mon Mar 20 12:48:59 CET 2023


On Sun, 19 Mar 2023 at 16:22, Pali Rohár <pali at kernel.org> wrote:

> On Sunday 19 March 2023 00:32:01 Martin Rowe wrote:
> > On Mon, 6 Mar 2023 at 11:53, Pali Rohár <pali at kernel.org> wrote:
> >
> > > Could you try to print mmc->part_config (ideally as early as possible)?
> > >
> >
> > In SPL mmc->part_config is 255
> > In main u-boot at the start of clearfog.c board_init() mmc->part_config
> is
> > 255
> > In main u-boot at the start of clearfog.c checkboard() mmc->part_config
> is
> > 8 (ack: 0, partition_enable: 1, access: 0)
>
> 255 is uninitialized value.
>
> > If I set partition_enable to 2, I get the same result except the value is
> > 16  (ack: 0, partition_enable: 2, access: 0) instead of 8 for the last
> value
>
> Try to change "access" bits.
>
> > <partition_enable 1>
> > BootROM - 1.73
> >
> > Booting from MMC
> >
> > U-Boot SPL 2023.04-rc3-00159-gd1653548d2-dirty (Mar 19 2023 - 10:05:32
> > +1000)
> > High speed PHY - Version: 2.0
> > EEPROM TLV detection failed: Using static config for Clearfog Pro.
> > Detected Device ID 6828
> > board SerDes lanes topology details:
> >  | Lane # | Speed |  Type       |
> >  --------------------------------
> >  |   0    |   3   | SATA0       |
> >  |   1    |   0   | SGMII1      |
> >  |   2    |   5   | PCIe1       |
> >  |   3    |   5   | USB3 HOST1  |
> >  |   4    |   5   | PCIe2       |
> >  |   5    |   0   | SGMII2      |
> >  --------------------------------
> > High speed PHY - Ended Successfully
> > mv_ddr: 14.0.0
> > DDR3 Training Sequence - Switching XBAR Window to FastPath Window
> > mv_ddr: completed successfully
> > spl.c spl_boot_device part_config = 255
> > Trying to boot from MMC1
> >
> >
> > U-Boot 2023.04-rc3-00159-gd1653548d2-dirty (Mar 19 2023 - 10:05:32 +1000)
> >
> > SoC:   MV88F6828-A0 at 1600 MHz
> > DRAM:  1 GiB (800 MHz, 32-bit, ECC not enabled)
> > clearfog.c board_init part_config = 255
> > Core:  38 devices, 22 uclasses, devicetree: separate
> > MMC:   mv_sdh: 0
> > Loading Environment from MMC... *** Warning - bad CRC, using default
> > environment
> >
> > Model: SolidRun Clearfog A1
> > clearfog.c checkboard part_config = 8
> > Board: SolidRun Clearfog Pro
> > Net:
> > Warning: ethernet at 70000 (eth1) using random MAC address -
> 32:16:0e:b4:d1:d8
> > eth1: ethernet at 70000
> > Warning: ethernet at 30000 (eth2) using random MAC address -
> 72:30:3f:79:07:12
> > , eth2: ethernet at 30000
> > Warning: ethernet at 34000 (eth3) using random MAC address -
> 82:fb:71:23:46:4f
> > , eth3: ethernet at 34000
> > Hit any key to stop autoboot:  0
> > => mmc partconf 0
> > EXT_CSD[179], PARTITION_CONFIG:
> > BOOT_ACK: 0x0
> > BOOT_PARTITION_ENABLE: 0x1
> > PARTITION_ACCESS: 0x0
> > </partition_enable 1>
> >
> > <partition_enable 2>
> > BootROM - 1.73
> >
> > Booting from MMC
> >
> > U-Boot SPL 2023.04-rc3-00159-gd1653548d2-dirty (Mar 19 2023 - 10:05:32
> > +1000)
> > High speed PHY - Version: 2.0
> > EEPROM TLV detection failed: Using static config for Clearfog Pro.
> > Detected Device ID 6828
> > board SerDes lanes topology details:
> >  | Lane # | Speed |  Type       |
> >  --------------------------------
> >  |   0    |   3   | SATA0       |
> >  |   1    |   0   | SGMII1      |
> >  |   2    |   5   | PCIe1       |
> >  |   3    |   5   | USB3 HOST1  |
> >  |   4    |   5   | PCIe2       |
> >  |   5    |   0   | SGMII2      |
> >  --------------------------------
> > High speed PHY - Ended Successfully
> > mv_ddr: 14.0.0
> > DDR3 Training Sequence - Switching XBAR Window to FastPath Window
> > mv_ddr: completed successfully
> > spl.c spl_boot_device part_config = 255
> > Trying to boot from MMC1
> >
> >
> > U-Boot 2023.04-rc3-00159-gd1653548d2-dirty (Mar 19 2023 - 10:05:32 +1000)
> >
> > SoC:   MV88F6828-A0 at 1600 MHz
> > DRAM:  1 GiB (800 MHz, 32-bit, ECC not enabled)
> > clearfog.c board_init part_config = 255
> > Core:  38 devices, 22 uclasses, devicetree: separate
> > MMC:   mv_sdh: 0
> > Loading Environment from MMC... *** Warning - bad CRC, using default
> > environment
> >
> > Model: SolidRun Clearfog A1
> > clearfog.c checkboard part_config = 16
> > Board: SolidRun Clearfog Pro
> > Net:
> > Warning: ethernet at 70000 (eth1) using random MAC address -
> 92:5a:fc:14:e8:f6
> > eth1: ethernet at 70000
> > Warning: ethernet at 30000 (eth2) using random MAC address -
> 42:9c:d8:3a:cb:b2
> > , eth2: ethernet at 30000
> > Warning: ethernet at 34000 (eth3) using random MAC address -
> c6:99:20:f4:02:a0
> > , eth3: ethernet at 34000
> > Hit any key to stop autoboot:  0
> > => mmc partconf 0
> > EXT_CSD[179], PARTITION_CONFIG:
> > BOOT_ACK: 0x0
> > BOOT_PARTITION_ENABLE: 0x2
> > PARTITION_ACCESS: 0x0
> > </partition_enable 2>
>
> Are both logs from the configuration when SPL+u-boot is stored on Boot0?
> Could you try to erase Boot0 and store SPL+u-boot to Boot1? I'm
> interested to see if "access" bits are changed in SPL (before loading
> main u-boot).
>
> > I'm having trouble trying to find the hooks which run between board_init
> > and checkboard. If you can point me in the right direction I'm happy to
> > re-run and try to narrow down where the valid values are being set from.
>
> Print it directly in drivers/mmc/mmc.c mmc_startup_v4() where
> mmc->part_config = is set from ext_csd[EXT_CSD_PART_CONF] register.
> I want to see original value from EXT_CSD_PART_CONF.
>
> I do not know which hook is the best, so printing it from mmc.c driver
> should work better.
>

u-boot in boot0, partconf set to 0x1:
mmc->part_config = 8

u-boot in boot0, partconf set to 0x2:
mmc->part_config = 16

u-boot in boot1 (boot0 zeroed), partconf set to 0x1:
mmc->part_config = 8

u-boot in boot1 (boot0 zeroed), partconf set to 0x2:
mmc->part_config = 16


More information about the U-Boot mailing list