Broken commit d433c74eecdce1e4952ef4e8c712a9289c0dfcc2

Pali Rohár pali at kernel.org
Fri Dec 23 22:39:00 CET 2022


On Friday 23 December 2022 14:18:32 Tom Rini wrote:
> On Fri, Dec 23, 2022 at 08:10:14PM +0100, Pali Rohár wrote:
> > On Thursday 22 December 2022 13:22:50 Tom Rini wrote:
> > > On Thu, Dec 22, 2022 at 06:56:40PM +0100, Pali Rohár wrote:
> > > > On Thursday 22 December 2022 12:33:32 Tom Rini wrote:
> > > > > I'm sorry you're frustrated here. I'm also frustrated here because the
> > > > > #ifdef games that PowerPC used, in a number of places have been very
> > > > > hard to un-wrap so that we can have something other than a home-grown
> > > > > build system.
> > > > 
> > > > I was already trying to reduce it too, some patches I sent, some other I
> > > > was preparing and some other are part of turris 1.x platform, which is
> > > > waiting there for 6 months. I planned to apply removal of MMC symbols to
> > > > other P1/P2 boards, like it is in turris patch, but after turris patch
> > > > is merged... which did not happen yet.
> > > 
> > > Right, and thanks for what you've done already.
> > > 
> > > > > And I've tried to take your other feedback in to
> > > > > consideration, which has resulted in a large number of symbols being
> > > > > moved to CFG_... instead of Kconfig, as you're right, it wasn't the
> > > > > right mechanism for them.
> > > > > 
> > > > > So, is it really just the 3 platforms that use p1_p2_rdb.h that need
> > > > > neither SDCARD nor SPIFLASH for the NAND and no extra suffix defconfigs?
> > > > > Or is it the P1010RDB ones too?
> > > > 
> > > > It applies for e500 v1/v2 cores, which is cpu/mpc85xx in u-boot and
> > > > predates P3 platform. If there are not some suspicious symbol names then
> > > > it should match any board which uses ARCH_MPC85??? or ARCH_P1?? or
> > > > ARCH_P2020 symbol.
> > > > 
> > > > P2040 and T???? do not have e500 v1/v2 cores (they have e500mc or e5500
> > > > or e6500), so you can ignore these.
> > > 
> > > OK.
> > > 
> > > > Is there any tool which can list all defconfig files which defines some
> > > > of those symbols, including transitionally?
> > > 
> > > With the caveat of only symbols in Kconfig, tools/moveconfig.py -b will
> > > make a database that you can consult with -f. That takes both SYMBOL and
> > > ~SYMBOL to list configs with SYMBOL enabled or disabled, respectively.
> > > And you can chain them together. For example:
> > > $ ./tools/moveconfig.py -f ARCH_P1010 SDCARD
> > > 8 matches
> > > P1010RDB-PB_36BIT_NOR P1010RDB-PA_NOR P1010RDB-PB_SDCARD P1010RDB-PB_36BIT_SDCARD P1010RDB-PA_36BIT_NOR P1010RDB-PA_36BIT_SDCARD P1010RDB-PB_NOR P1010RDB-PA_SDCARD
> > > $ ./tools/moveconfig.py -f ARCH_P1010 ~SDCARD
> > > 8 matches
> > > P1010RDB-PA_NAND P1010RDB-PB_SPIFLASH P1010RDB-PB_36BIT_SPIFLASH P1010RDB-PA_36BIT_NAND P1010RDB-PA_36BIT_SPIFLASH P1010RDB-PA_SPIFLASH P1010RDB-PB_NAND P1010RDB-PB_36BIT_NAND
> > 
> > Ok, I tried to build database and list of the affected defconfig files:
> > (all except T, P3+ and P204x)
> > 
> > $ for arch in `git grep 'config ARCH' arch/powerpc/cpu/mpc85xx/Kconfig | sed 's/.* //' | grep -v 'ARCH_T\|ARCH_P[345]\|ARCH_P204'`; do ./tools/moveconfig.py -f $arch SDCARD; done | grep -v ' matches\|^$'
> > P1010RDB-PB_36BIT_NOR P1010RDB-PA_SDCARD P1010RDB-PB_NOR P1010RDB-PB_SDCARD P1010RDB-PA_36BIT_NOR P1010RDB-PB_36BIT_SDCARD P1010RDB-PA_NOR P1010RDB-PA_36BIT_SDCARD
> > P1020RDB-PC P1020RDB-PD_SDCARD P1020RDB-PC_SDCARD P1020RDB-PC_36BIT P1020RDB-PD P1020RDB-PC_36BIT_SDCARD
> > P2020RDB-PC_SDCARD P2020RDB-PC_36BIT P2020RDB-PC_36BIT_SDCARD P2020RDB-PC
> > 
> > So it means that these defconfigs are broken and CONFIG_SDCARD for them
> > must be turned off:
> > 
> > P1010RDB-PB_36BIT_NOR
> > P1010RDB-PB_NOR
> > P1010RDB-PA_36BIT_NOR
> > P1010RDB-PA_NOR
> > P1020RDB-PC
> > P1020RDB-PC_36BIT
> > P1020RDB-PD
> > P2020RDB-PC_36BIT
> > P2020RDB-PC
> > 
> > 
> > These defconfigs have already CONFIG_SDCARD turned off:
> > 
> > $ for arch in `git grep 'config ARCH' arch/powerpc/cpu/mpc85xx/Kconfig | sed 's/.* //' | grep -v 'ARCH_T\|ARCH_P[345]\|ARCH_P204'`; do ./tools/moveconfig.py -f $arch ~SDCARD; done | grep -v ' matches\|^$'
> > socrates
> > MPC8548CDS MPC8548CDS_legacy MPC8548CDS_36BIT
> > P1010RDB-PB_36BIT_NAND P1010RDB-PB_NAND P1010RDB-PA_36BIT_SPIFLASH P1010RDB-PB_SPIFLASH P1010RDB-PA_36BIT_NAND P1010RDB-PA_NAND P1010RDB-PB_36BIT_SPIFLASH P1010RDB-PA_SPIFLASH
> > P1020RDB-PC_NAND P1020RDB-PC_36BIT_SPIFLASH P1020RDB-PD_SPIFLASH P1020RDB-PC_SPIFLASH P1020RDB-PD_NAND P1020RDB-PC_36BIT_NAND
> > P2020RDB-PC_SPIFLASH P2020RDB-PC_36BIT_SPIFLASH P2020RDB-PC_NAND P2020RDB-PC_36BIT_NAND
> > qemu-ppce500
> > 
> > And seems that no of them is sd card related (hopefully).
> 
> Thanks!  Does the following look reasonable to you
> (CONFIG_FSL_FIXED_MMC_LOCATION was enabled due to SDCARD)? If so I'll
> make a proper patch next:

Just to note that possibility of booting pre-PBL devices from SD or SPI
is described in document AN3659 - Booting from On-Chip ROM (eSDHC or eSPI):
https://www.nxp.com/docs/en/application-note/AN3659.pdf
In P2020 documentation it is named "On-chip boot ROM-eSDHC".

> 
> 
> diff --git a/boot/Kconfig b/boot/Kconfig
> index 4a001bcee851..424ad0e466da 100644
> --- a/boot/Kconfig
> +++ b/boot/Kconfig
> @@ -724,16 +724,19 @@ config RAMBOOT_PBL
>  	  For more details refer to doc/README.pblimage
>  
>  choice
> -	prompt "Freescale PBL load location"
> +	prompt "Freescale PBL (or predecessor) load location"
>  	depends on RAMBOOT_PBL || ((TARGET_P1010RDB_PA || TARGET_P1010RDB_PB \
>  		|| TARGET_P1020RDB_PC || TARGET_P1020RDB_PD || TARGET_P2020RDB) \
>  		&& !CMD_NAND)
>  
>  config SDCARD
> -	bool "Freescale PBL is found on SD card"
> +	bool "Freescale PBL (or similar) is found on SD card"
>  
>  config SPIFLASH
> -	bool "Freescale PBL is found on SPI flash"
> +	bool "Freescale PBL (or similar) is found on SPI flash"
> +
> +config NO_PBL
> +	bool "Freescale PBL (or similar) is not used in this case"
>  
>  endchoice
>  

Ok! I did runtime tests with P2020RDB-PC_defconfig on P2020 based board.


1. directly on v2022.04 tag

==> works fine


2. merged problematic commit d433c74eecdc with v2022.04 tag

$ ll u-boot.bin
-rw-r--r-- 1 pali pali 151781376 dec 23 21:24 u-boot.bin

==> not possible to flash --> binary toooooo big (due to broken commit)


3. merged problematic commit d433c74eecdc with v2022.04 tag and applying
above boot/Kconfig change and adding CONFIG_NO_PBL=y into file
P2020RDB-PC_defconfig. Also I added to include/configs/p1_p2_rdb_pc.h
check:

#ifdef CONFIG_SDCARD
#error "CONFIG_SDCARD is defined"
#endif

Whole steps:
$ git checkout v2022.04
$ git merge d433c74eecdc
(resolve merge conflict for doc/)
$ git checkout --theirs doc/usage/index.rst
$ git add doc/usage/index.rst
$ git commit
apply change
add CONFIG_NO_PBL=y
$ make CROSS_COMPILE=powerpc-linux-gnuspe- P2020RDB-PC_defconfig
$ make CROSS_COMPILE=powerpc-linux-gnuspe- -j12

Binary now has correct size (it must have exactly 768 kB)

$ ll u-boot.bin
-rw-r--r-- 1 pali pali 786432 dec 23 21:33 u-boot.bin

U-Boot 2022.04-00286-g72336d158369-dirty (Dec 23 2022 - 21:18:23 +0100)

CPU0:  P2020E, Version: 2.1, (0x80ea0021)
Core:  e500, Version: 5.1, (0x80211051)
Clock Configuration:
       CPU0:1200 MHz, CPU1:1200 MHz, 
       CCB:600  MHz,
       DDR:400  MHz (800 MT/s data rate) (Asynchronous), LBC:600  MHz
L1:    D-cache 32 KiB enabled
       I-cache 32 KiB enabled
Model: fsl,P2020RDB-PC
Board: P2020RDB-PC CPLD: V4.1 PCBA: V4.0
rom_loc: nor upper bank
SD/MMC : 4-bit Mode
eSPI : Enabled
DRAM:  Detected UDIMM 9905594-003.A00G  
2 GiB (DDR3, 64-bit, CL=6, ECC off)
Core:  11 devices, 9 uclasses, devicetree: embed
No address specified for VSC7385 microcode.
Flash: 16 MiB
L2:    512 KiB enabled
MMC:   fsl_esdhc: Internal clock never stabilised.
FSL_SDHC: 0
Loading Environment from Flash... OK
In:    serial
Out:   serial
Err:   serial
Net:   eTSEC1
Error: eTSEC1 address not set.
, eTSEC2
Error: eTSEC2 address not set.
, eTSEC3
Error: eTSEC3 address not set.

=> 

==> So works fine!


4. u-boot master with this patch

==> does not work, no output on console; but SDCARD version is working,
so clearly some other commit broke non-SDCARD version too.

So go ahead and apply this fix to master branch. You can add my
Tested-by: Pali Rohár <pali at kernel.org>

> diff --git a/configs/P1010RDB-PA_36BIT_NOR_defconfig b/configs/P1010RDB-PA_36BIT_NOR_defconfig
> index dcf74f5d6af5..deff04bf881d 100644
> --- a/configs/P1010RDB-PA_36BIT_NOR_defconfig
> +++ b/configs/P1010RDB-PA_36BIT_NOR_defconfig
> @@ -19,7 +19,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs ramdisk_size=$ramdisk_size;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr"
> diff --git a/configs/P1010RDB-PA_NOR_defconfig b/configs/P1010RDB-PA_NOR_defconfig
> index 537d8bf576b0..98486a0ae2ff 100644
> --- a/configs/P1010RDB-PA_NOR_defconfig
> +++ b/configs/P1010RDB-PA_NOR_defconfig
> @@ -18,7 +18,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs ramdisk_size=$ramdisk_size;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr"
> diff --git a/configs/P1010RDB-PB_36BIT_NOR_defconfig b/configs/P1010RDB-PB_36BIT_NOR_defconfig
> index 92a7e0966936..41a1a852b986 100644
> --- a/configs/P1010RDB-PB_36BIT_NOR_defconfig
> +++ b/configs/P1010RDB-PB_36BIT_NOR_defconfig
> @@ -19,7 +19,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs ramdisk_size=$ramdisk_size;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr"
> diff --git a/configs/P1010RDB-PB_NOR_defconfig b/configs/P1010RDB-PB_NOR_defconfig
> index 3e16470608e5..16c076bc9aaa 100644
> --- a/configs/P1010RDB-PB_NOR_defconfig
> +++ b/configs/P1010RDB-PB_NOR_defconfig
> @@ -18,7 +18,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs ramdisk_size=$ramdisk_size;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr"
> diff --git a/configs/P1020RDB-PC_36BIT_defconfig b/configs/P1020RDB-PC_36BIT_defconfig
> index ce0ba0e37574..e60c92cedae9 100644
> --- a/configs/P1020RDB-PC_36BIT_defconfig
> +++ b/configs/P1020RDB-PC_36BIT_defconfig
> @@ -21,7 +21,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr"
> diff --git a/configs/P1020RDB-PC_defconfig b/configs/P1020RDB-PC_defconfig
> index aae886b75c4e..f0f0eee65d29 100644
> --- a/configs/P1020RDB-PC_defconfig
> +++ b/configs/P1020RDB-PC_defconfig
> @@ -20,7 +20,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr"
> diff --git a/configs/P1020RDB-PD_defconfig b/configs/P1020RDB-PD_defconfig
> index 5fecb6684735..8b7f9310b1a4 100644
> --- a/configs/P1020RDB-PD_defconfig
> +++ b/configs/P1020RDB-PD_defconfig
> @@ -20,7 +20,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr"
> diff --git a/configs/P2020RDB-PC_36BIT_defconfig b/configs/P2020RDB-PC_36BIT_defconfig
> index b1dbca6e7ea3..1640f2379863 100644
> --- a/configs/P2020RDB-PC_36BIT_defconfig
> +++ b/configs/P2020RDB-PC_36BIT_defconfig
> @@ -21,7 +21,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr"
> diff --git a/configs/P2020RDB-PC_defconfig b/configs/P2020RDB-PC_defconfig
> index 1ee46f9fbe9f..ca9f44728845 100644
> --- a/configs/P2020RDB-PC_defconfig
> +++ b/configs/P2020RDB-PC_defconfig
> @@ -20,7 +20,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_OF_BOARD_SETUP=y
>  CONFIG_OF_STDOUT_VIA_ALIAS=y
> -CONFIG_FSL_FIXED_MMC_LOCATION=y
> +CONFIG_NO_PBL=y
>  CONFIG_BOOTDELAY=10
>  CONFIG_USE_BOOTCOMMAND=y
>  CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr"
> 
> -- 
> Tom




More information about the U-Boot mailing list