Message ID | 20231029034845.1169614-1-seanga2@gmail.com |
---|---|
Headers | show |
Series | nand: Add sandbox tests | expand |
Sean, All, On Sun, Oct 29, 2023 at 4:48 AM Sean Anderson <seanga2@gmail.com> wrote: > > This series tests raw nand flash in sandbox and fixes various bugs discovered in > the process. I've tried to do things in a contemporary manner, avoiding the > (numerous) variations present on only a few boards. The test is pretty minimal. > Future work could test the rest of the nand API as well as the MTD API. > > Bloat at [1] (for boards with SPL_NAND_SUPPORT enabled). Almost > everything grows by a few bytes due to nand_page_size. A few boards grow more, > mostly those using nand_spl_loaders.c. > > [1] https://gist.github.com/Forty-Bot/9694f3401893c9e706ccc374922de6c2 > > > Sean Anderson (15): > spl: nand: Fix NULL-pointer dereference > nand: Don't dereference NULL manufacturer_desc > nand: Calculate SYS_NAND_PAGE_COUNT automatically > nand: spl_loaders: Only read enough pages to load the image > spl: legacy: Honor bl_len when decompressing > spl: nand: Set bl_len to page size > cmd: nand: Map memory before accessing it > spl: nand: Map memory before accessing it > mtd: Rename SPL_MTD_SUPPORT to SPL_MTD > mtd: Add some fallbacks for add/del_mtd_device > nand: Add function to unregister NAND devices > nand: Allow reinitialization > arch: sandbox: Add function to create temporary files > nand: Add sandbox driver > test: spl: Add a test for NAND > > README | 9 +- > arch/sandbox/cpu/os.c | 17 + > arch/sandbox/dts/test.dts | 67 ++ > arch/sandbox/include/asm/spl.h | 1 + > cmd/nand.c | 26 +- > common/spl/Kconfig | 2 +- > common/spl/spl_legacy.c | 18 +- > common/spl/spl_nand.c | 22 +- > configs/am335x_baltos_defconfig | 3 +- > configs/am335x_evm_defconfig | 3 +- > configs/am335x_evm_spiboot_defconfig | 2 +- > configs/am335x_guardian_defconfig | 1 - > configs/am335x_hs_evm_defconfig | 2 +- > configs/am335x_hs_evm_uart_defconfig | 2 +- > configs/am335x_igep003x_defconfig | 3 +- > configs/am335x_sl50_defconfig | 2 +- > configs/am3517_evm_defconfig | 3 +- > configs/am43xx_evm_defconfig | 3 +- > configs/am43xx_evm_rtconly_defconfig | 3 +- > configs/am43xx_evm_usbhost_boot_defconfig | 3 +- > configs/am43xx_hs_evm_defconfig | 3 +- > configs/am62ax_evm_r5_defconfig | 2 +- > configs/am65x_evm_a53_defconfig | 2 +- > configs/axm_defconfig | 1 - > configs/chiliboard_defconfig | 1 - > configs/cm_t43_defconfig | 2 +- > configs/corvus_defconfig | 1 - > configs/da850evm_nand_defconfig | 1 - > configs/devkit3250_defconfig | 1 - > configs/devkit8000_defconfig | 1 - > configs/dra7xx_evm_defconfig | 1 - > configs/draco_defconfig | 1 - > configs/etamin_defconfig | 1 - > .../gardena-smart-gateway-at91sam_defconfig | 1 - > configs/igep00x0_defconfig | 3 +- > configs/imx6ulz_smm_m2_defconfig | 2 +- > configs/imx8mn_bsh_smm_s2_defconfig | 2 +- > configs/j7200_evm_a72_defconfig | 2 +- > configs/j7200_evm_r5_defconfig | 2 +- > configs/j721e_evm_a72_defconfig | 2 +- > configs/j721e_evm_r5_defconfig | 2 +- > configs/j721s2_evm_a72_defconfig | 2 +- > configs/j721s2_evm_r5_defconfig | 2 +- > configs/m53menlo_defconfig | 1 - > configs/omap35_logic_defconfig | 3 +- > configs/omap35_logic_somlv_defconfig | 3 +- > configs/omap3_beagle_defconfig | 3 +- > configs/omap3_evm_defconfig | 3 +- > configs/omap3_logic_defconfig | 3 +- > configs/omap3_logic_somlv_defconfig | 3 +- > configs/omapl138_lcdk_defconfig | 1 - > configs/phycore-am335x-r2-regor_defconfig | 3 +- > configs/phycore-am335x-r2-wega_defconfig | 3 +- > configs/pxm2_defconfig | 1 - > configs/rastaban_defconfig | 1 - > configs/rut_defconfig | 1 - > configs/sama5d3_xplained_nandflash_defconfig | 1 - > configs/sama5d3xek_nandflash_defconfig | 1 - > configs/sama5d4_xplained_nandflash_defconfig | 1 - > configs/sama5d4ek_nandflash_defconfig | 1 - > configs/sandbox64_defconfig | 10 +- > configs/sandbox_defconfig | 9 + > configs/sandbox_noinst_defconfig | 21 +- > configs/smartweb_defconfig | 1 - > configs/socfpga_secu1_defconfig | 2 +- > configs/stm32746g-eval_spl_defconfig | 2 +- > configs/stm32f746-disco_spl_defconfig | 2 +- > configs/stm32f769-disco_spl_defconfig | 2 +- > configs/stm32mp15_basic_defconfig | 2 +- > configs/stm32mp15_dhcom_basic_defconfig | 2 +- > configs/stm32mp15_dhcor_basic_defconfig | 2 +- > configs/taurus_defconfig | 1 - > configs/thuban_defconfig | 1 - > drivers/mtd/Makefile | 2 +- > drivers/mtd/nand/raw/Kconfig | 27 +- > drivers/mtd/nand/raw/Makefile | 1 + > drivers/mtd/nand/raw/am335x_spl_bch.c | 8 +- > drivers/mtd/nand/raw/atmel_nand.c | 10 +- > drivers/mtd/nand/raw/denali_spl.c | 5 + > drivers/mtd/nand/raw/fsl_ifc_spl.c | 8 + > drivers/mtd/nand/raw/lpc32xx_nand_mlc.c | 5 + > drivers/mtd/nand/raw/mt7621_nand_spl.c | 5 + > drivers/mtd/nand/raw/mxc_nand_spl.c | 10 +- > drivers/mtd/nand/raw/mxs_nand_spl.c | 5 + > drivers/mtd/nand/raw/nand.c | 66 +- > drivers/mtd/nand/raw/nand_base.c | 7 +- > drivers/mtd/nand/raw/nand_spl_loaders.c | 5 +- > drivers/mtd/nand/raw/nand_spl_simple.c | 10 +- > drivers/mtd/nand/raw/omap_gpmc.c | 3 +- > drivers/mtd/nand/raw/sand_nand.c | 711 ++++++++++++++++++ > drivers/mtd/nand/raw/sunxi_nand_spl.c | 8 +- > drivers/mtd/onenand/onenand_uboot.c | 2 - > include/linux/mtd/mtd.h | 12 + > include/mtd/cfi_flash.h | 2 +- > include/nand.h | 3 + > include/os.h | 13 + > include/system-constants.h | 3 + > test/dm/Makefile | 1 + > test/dm/nand.c | 106 +++ > test/image/Kconfig | 9 + > test/image/Makefile | 1 + > test/image/spl_load_nand.c | 54 ++ > 102 files changed, 1269 insertions(+), 153 deletions(-) > create mode 100644 drivers/mtd/nand/raw/sand_nand.c > create mode 100644 test/dm/nand.c > create mode 100644 test/image/spl_load_nand.c > > -- > 2.37.1 > The CI pipeline fails: https://source.denx.de/u-boot/custodians/u-boot-nand-flash/-/pipelines/18409 It seems like the problem is only for the clang tests (sandbox64 with clang test.py and sandbox with clang test.py) Regards, Dario
On 11/2/23 10:01, Dario Binacchi wrote: > Sean, All, > > On Sun, Oct 29, 2023 at 4:48 AM Sean Anderson <seanga2@gmail.com> wrote: >> >> This series tests raw nand flash in sandbox and fixes various bugs discovered in >> the process. I've tried to do things in a contemporary manner, avoiding the >> (numerous) variations present on only a few boards. The test is pretty minimal. >> Future work could test the rest of the nand API as well as the MTD API. >> >> Bloat at [1] (for boards with SPL_NAND_SUPPORT enabled). Almost >> everything grows by a few bytes due to nand_page_size. A few boards grow more, >> mostly those using nand_spl_loaders.c. >> >> [1] https://gist.github.com/Forty-Bot/9694f3401893c9e706ccc374922de6c2 >> >> >> Sean Anderson (15): >> spl: nand: Fix NULL-pointer dereference >> nand: Don't dereference NULL manufacturer_desc >> nand: Calculate SYS_NAND_PAGE_COUNT automatically >> nand: spl_loaders: Only read enough pages to load the image >> spl: legacy: Honor bl_len when decompressing >> spl: nand: Set bl_len to page size >> cmd: nand: Map memory before accessing it >> spl: nand: Map memory before accessing it >> mtd: Rename SPL_MTD_SUPPORT to SPL_MTD >> mtd: Add some fallbacks for add/del_mtd_device >> nand: Add function to unregister NAND devices >> nand: Allow reinitialization >> arch: sandbox: Add function to create temporary files >> nand: Add sandbox driver >> test: spl: Add a test for NAND >> >> README | 9 +- >> arch/sandbox/cpu/os.c | 17 + >> arch/sandbox/dts/test.dts | 67 ++ >> arch/sandbox/include/asm/spl.h | 1 + >> cmd/nand.c | 26 +- >> common/spl/Kconfig | 2 +- >> common/spl/spl_legacy.c | 18 +- >> common/spl/spl_nand.c | 22 +- >> configs/am335x_baltos_defconfig | 3 +- >> configs/am335x_evm_defconfig | 3 +- >> configs/am335x_evm_spiboot_defconfig | 2 +- >> configs/am335x_guardian_defconfig | 1 - >> configs/am335x_hs_evm_defconfig | 2 +- >> configs/am335x_hs_evm_uart_defconfig | 2 +- >> configs/am335x_igep003x_defconfig | 3 +- >> configs/am335x_sl50_defconfig | 2 +- >> configs/am3517_evm_defconfig | 3 +- >> configs/am43xx_evm_defconfig | 3 +- >> configs/am43xx_evm_rtconly_defconfig | 3 +- >> configs/am43xx_evm_usbhost_boot_defconfig | 3 +- >> configs/am43xx_hs_evm_defconfig | 3 +- >> configs/am62ax_evm_r5_defconfig | 2 +- >> configs/am65x_evm_a53_defconfig | 2 +- >> configs/axm_defconfig | 1 - >> configs/chiliboard_defconfig | 1 - >> configs/cm_t43_defconfig | 2 +- >> configs/corvus_defconfig | 1 - >> configs/da850evm_nand_defconfig | 1 - >> configs/devkit3250_defconfig | 1 - >> configs/devkit8000_defconfig | 1 - >> configs/dra7xx_evm_defconfig | 1 - >> configs/draco_defconfig | 1 - >> configs/etamin_defconfig | 1 - >> .../gardena-smart-gateway-at91sam_defconfig | 1 - >> configs/igep00x0_defconfig | 3 +- >> configs/imx6ulz_smm_m2_defconfig | 2 +- >> configs/imx8mn_bsh_smm_s2_defconfig | 2 +- >> configs/j7200_evm_a72_defconfig | 2 +- >> configs/j7200_evm_r5_defconfig | 2 +- >> configs/j721e_evm_a72_defconfig | 2 +- >> configs/j721e_evm_r5_defconfig | 2 +- >> configs/j721s2_evm_a72_defconfig | 2 +- >> configs/j721s2_evm_r5_defconfig | 2 +- >> configs/m53menlo_defconfig | 1 - >> configs/omap35_logic_defconfig | 3 +- >> configs/omap35_logic_somlv_defconfig | 3 +- >> configs/omap3_beagle_defconfig | 3 +- >> configs/omap3_evm_defconfig | 3 +- >> configs/omap3_logic_defconfig | 3 +- >> configs/omap3_logic_somlv_defconfig | 3 +- >> configs/omapl138_lcdk_defconfig | 1 - >> configs/phycore-am335x-r2-regor_defconfig | 3 +- >> configs/phycore-am335x-r2-wega_defconfig | 3 +- >> configs/pxm2_defconfig | 1 - >> configs/rastaban_defconfig | 1 - >> configs/rut_defconfig | 1 - >> configs/sama5d3_xplained_nandflash_defconfig | 1 - >> configs/sama5d3xek_nandflash_defconfig | 1 - >> configs/sama5d4_xplained_nandflash_defconfig | 1 - >> configs/sama5d4ek_nandflash_defconfig | 1 - >> configs/sandbox64_defconfig | 10 +- >> configs/sandbox_defconfig | 9 + >> configs/sandbox_noinst_defconfig | 21 +- >> configs/smartweb_defconfig | 1 - >> configs/socfpga_secu1_defconfig | 2 +- >> configs/stm32746g-eval_spl_defconfig | 2 +- >> configs/stm32f746-disco_spl_defconfig | 2 +- >> configs/stm32f769-disco_spl_defconfig | 2 +- >> configs/stm32mp15_basic_defconfig | 2 +- >> configs/stm32mp15_dhcom_basic_defconfig | 2 +- >> configs/stm32mp15_dhcor_basic_defconfig | 2 +- >> configs/taurus_defconfig | 1 - >> configs/thuban_defconfig | 1 - >> drivers/mtd/Makefile | 2 +- >> drivers/mtd/nand/raw/Kconfig | 27 +- >> drivers/mtd/nand/raw/Makefile | 1 + >> drivers/mtd/nand/raw/am335x_spl_bch.c | 8 +- >> drivers/mtd/nand/raw/atmel_nand.c | 10 +- >> drivers/mtd/nand/raw/denali_spl.c | 5 + >> drivers/mtd/nand/raw/fsl_ifc_spl.c | 8 + >> drivers/mtd/nand/raw/lpc32xx_nand_mlc.c | 5 + >> drivers/mtd/nand/raw/mt7621_nand_spl.c | 5 + >> drivers/mtd/nand/raw/mxc_nand_spl.c | 10 +- >> drivers/mtd/nand/raw/mxs_nand_spl.c | 5 + >> drivers/mtd/nand/raw/nand.c | 66 +- >> drivers/mtd/nand/raw/nand_base.c | 7 +- >> drivers/mtd/nand/raw/nand_spl_loaders.c | 5 +- >> drivers/mtd/nand/raw/nand_spl_simple.c | 10 +- >> drivers/mtd/nand/raw/omap_gpmc.c | 3 +- >> drivers/mtd/nand/raw/sand_nand.c | 711 ++++++++++++++++++ >> drivers/mtd/nand/raw/sunxi_nand_spl.c | 8 +- >> drivers/mtd/onenand/onenand_uboot.c | 2 - >> include/linux/mtd/mtd.h | 12 + >> include/mtd/cfi_flash.h | 2 +- >> include/nand.h | 3 + >> include/os.h | 13 + >> include/system-constants.h | 3 + >> test/dm/Makefile | 1 + >> test/dm/nand.c | 106 +++ >> test/image/Kconfig | 9 + >> test/image/Makefile | 1 + >> test/image/spl_load_nand.c | 54 ++ >> 102 files changed, 1269 insertions(+), 153 deletions(-) >> create mode 100644 drivers/mtd/nand/raw/sand_nand.c >> create mode 100644 test/dm/nand.c >> create mode 100644 test/image/spl_load_nand.c >> >> -- >> 2.37.1 >> > > The CI pipeline fails: > https://source.denx.de/u-boot/custodians/u-boot-nand-flash/-/pipelines/18409 > > It seems like the problem is only for the clang tests (sandbox64 with > clang test.py and sandbox with clang test.py) I can't view that link. Can you post the error somewhere else? I saw a clang error [1] when running CI before sending this out, but I thought I had fixed it. --Sean [1] https://source.denx.de/u-boot/custodians/u-boot-clk/-/pipelines/18355 sandbox: + sandbox +drivers/mtd/nand/raw/sand_nand.c:386:2: error: variable 'src' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized] + default: + ^~~~~~~ +drivers/mtd/nand/raw/sand_nand.c:395:14: note: uninitialized use occurs here + memcpy(buf, src + chip->column, to_copy); + ^~~ +drivers/mtd/nand/raw/sand_nand.c:362:6: error: variable 'src' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] + if (!chip->selected) + ^~~~~~~~~~~~~~~ +drivers/mtd/nand/raw/sand_nand.c:362:2: note: remove the 'if' if its condition is always false + ^~~~~~~~~~~~~~~~~~~~ +drivers/mtd/nand/raw/sand_nand.c:360:15: note: initialize the variable 'src' to silence this warning + const u8 *src; + ^ + = NULL +2 errors generated. +make[5]: *** [scripts/Makefile.build:256: drivers/mtd/nand/raw/sand_nand.o] Error 1 +make[4]: *** [scripts/Makefile.build:397: drivers/mtd/nand/raw] Error 2 +make[3]: *** [scripts/Makefile.build:397: drivers/mtd/nand] Error 2 +make[2]: *** [scripts/Makefile.build:397: drivers/mtd] Error 2 +make[1]: *** [Makefile:1858: drivers] Error 2 +make: *** [Makefile:177: sub-make] Error 2
On Thu, Nov 2, 2023 at 3:06 PM Sean Anderson <seanga2@gmail.com> wrote: > > On 11/2/23 10:01, Dario Binacchi wrote: > > Sean, All, > > > > On Sun, Oct 29, 2023 at 4:48 AM Sean Anderson <seanga2@gmail.com> wrote: > >> > >> This series tests raw nand flash in sandbox and fixes various bugs discovered in > >> the process. I've tried to do things in a contemporary manner, avoiding the > >> (numerous) variations present on only a few boards. The test is pretty minimal. > >> Future work could test the rest of the nand API as well as the MTD API. > >> > >> Bloat at [1] (for boards with SPL_NAND_SUPPORT enabled). Almost > >> everything grows by a few bytes due to nand_page_size. A few boards grow more, > >> mostly those using nand_spl_loaders.c. > >> > >> [1] https://gist.github.com/Forty-Bot/9694f3401893c9e706ccc374922de6c2 > >> > >> > >> Sean Anderson (15): > >> spl: nand: Fix NULL-pointer dereference > >> nand: Don't dereference NULL manufacturer_desc > >> nand: Calculate SYS_NAND_PAGE_COUNT automatically > >> nand: spl_loaders: Only read enough pages to load the image > >> spl: legacy: Honor bl_len when decompressing > >> spl: nand: Set bl_len to page size > >> cmd: nand: Map memory before accessing it > >> spl: nand: Map memory before accessing it > >> mtd: Rename SPL_MTD_SUPPORT to SPL_MTD > >> mtd: Add some fallbacks for add/del_mtd_device > >> nand: Add function to unregister NAND devices > >> nand: Allow reinitialization > >> arch: sandbox: Add function to create temporary files > >> nand: Add sandbox driver > >> test: spl: Add a test for NAND > >> > >> README | 9 +- > >> arch/sandbox/cpu/os.c | 17 + > >> arch/sandbox/dts/test.dts | 67 ++ > >> arch/sandbox/include/asm/spl.h | 1 + > >> cmd/nand.c | 26 +- > >> common/spl/Kconfig | 2 +- > >> common/spl/spl_legacy.c | 18 +- > >> common/spl/spl_nand.c | 22 +- > >> configs/am335x_baltos_defconfig | 3 +- > >> configs/am335x_evm_defconfig | 3 +- > >> configs/am335x_evm_spiboot_defconfig | 2 +- > >> configs/am335x_guardian_defconfig | 1 - > >> configs/am335x_hs_evm_defconfig | 2 +- > >> configs/am335x_hs_evm_uart_defconfig | 2 +- > >> configs/am335x_igep003x_defconfig | 3 +- > >> configs/am335x_sl50_defconfig | 2 +- > >> configs/am3517_evm_defconfig | 3 +- > >> configs/am43xx_evm_defconfig | 3 +- > >> configs/am43xx_evm_rtconly_defconfig | 3 +- > >> configs/am43xx_evm_usbhost_boot_defconfig | 3 +- > >> configs/am43xx_hs_evm_defconfig | 3 +- > >> configs/am62ax_evm_r5_defconfig | 2 +- > >> configs/am65x_evm_a53_defconfig | 2 +- > >> configs/axm_defconfig | 1 - > >> configs/chiliboard_defconfig | 1 - > >> configs/cm_t43_defconfig | 2 +- > >> configs/corvus_defconfig | 1 - > >> configs/da850evm_nand_defconfig | 1 - > >> configs/devkit3250_defconfig | 1 - > >> configs/devkit8000_defconfig | 1 - > >> configs/dra7xx_evm_defconfig | 1 - > >> configs/draco_defconfig | 1 - > >> configs/etamin_defconfig | 1 - > >> .../gardena-smart-gateway-at91sam_defconfig | 1 - > >> configs/igep00x0_defconfig | 3 +- > >> configs/imx6ulz_smm_m2_defconfig | 2 +- > >> configs/imx8mn_bsh_smm_s2_defconfig | 2 +- > >> configs/j7200_evm_a72_defconfig | 2 +- > >> configs/j7200_evm_r5_defconfig | 2 +- > >> configs/j721e_evm_a72_defconfig | 2 +- > >> configs/j721e_evm_r5_defconfig | 2 +- > >> configs/j721s2_evm_a72_defconfig | 2 +- > >> configs/j721s2_evm_r5_defconfig | 2 +- > >> configs/m53menlo_defconfig | 1 - > >> configs/omap35_logic_defconfig | 3 +- > >> configs/omap35_logic_somlv_defconfig | 3 +- > >> configs/omap3_beagle_defconfig | 3 +- > >> configs/omap3_evm_defconfig | 3 +- > >> configs/omap3_logic_defconfig | 3 +- > >> configs/omap3_logic_somlv_defconfig | 3 +- > >> configs/omapl138_lcdk_defconfig | 1 - > >> configs/phycore-am335x-r2-regor_defconfig | 3 +- > >> configs/phycore-am335x-r2-wega_defconfig | 3 +- > >> configs/pxm2_defconfig | 1 - > >> configs/rastaban_defconfig | 1 - > >> configs/rut_defconfig | 1 - > >> configs/sama5d3_xplained_nandflash_defconfig | 1 - > >> configs/sama5d3xek_nandflash_defconfig | 1 - > >> configs/sama5d4_xplained_nandflash_defconfig | 1 - > >> configs/sama5d4ek_nandflash_defconfig | 1 - > >> configs/sandbox64_defconfig | 10 +- > >> configs/sandbox_defconfig | 9 + > >> configs/sandbox_noinst_defconfig | 21 +- > >> configs/smartweb_defconfig | 1 - > >> configs/socfpga_secu1_defconfig | 2 +- > >> configs/stm32746g-eval_spl_defconfig | 2 +- > >> configs/stm32f746-disco_spl_defconfig | 2 +- > >> configs/stm32f769-disco_spl_defconfig | 2 +- > >> configs/stm32mp15_basic_defconfig | 2 +- > >> configs/stm32mp15_dhcom_basic_defconfig | 2 +- > >> configs/stm32mp15_dhcor_basic_defconfig | 2 +- > >> configs/taurus_defconfig | 1 - > >> configs/thuban_defconfig | 1 - > >> drivers/mtd/Makefile | 2 +- > >> drivers/mtd/nand/raw/Kconfig | 27 +- > >> drivers/mtd/nand/raw/Makefile | 1 + > >> drivers/mtd/nand/raw/am335x_spl_bch.c | 8 +- > >> drivers/mtd/nand/raw/atmel_nand.c | 10 +- > >> drivers/mtd/nand/raw/denali_spl.c | 5 + > >> drivers/mtd/nand/raw/fsl_ifc_spl.c | 8 + > >> drivers/mtd/nand/raw/lpc32xx_nand_mlc.c | 5 + > >> drivers/mtd/nand/raw/mt7621_nand_spl.c | 5 + > >> drivers/mtd/nand/raw/mxc_nand_spl.c | 10 +- > >> drivers/mtd/nand/raw/mxs_nand_spl.c | 5 + > >> drivers/mtd/nand/raw/nand.c | 66 +- > >> drivers/mtd/nand/raw/nand_base.c | 7 +- > >> drivers/mtd/nand/raw/nand_spl_loaders.c | 5 +- > >> drivers/mtd/nand/raw/nand_spl_simple.c | 10 +- > >> drivers/mtd/nand/raw/omap_gpmc.c | 3 +- > >> drivers/mtd/nand/raw/sand_nand.c | 711 ++++++++++++++++++ > >> drivers/mtd/nand/raw/sunxi_nand_spl.c | 8 +- > >> drivers/mtd/onenand/onenand_uboot.c | 2 - > >> include/linux/mtd/mtd.h | 12 + > >> include/mtd/cfi_flash.h | 2 +- > >> include/nand.h | 3 + > >> include/os.h | 13 + > >> include/system-constants.h | 3 + > >> test/dm/Makefile | 1 + > >> test/dm/nand.c | 106 +++ > >> test/image/Kconfig | 9 + > >> test/image/Makefile | 1 + > >> test/image/spl_load_nand.c | 54 ++ > >> 102 files changed, 1269 insertions(+), 153 deletions(-) > >> create mode 100644 drivers/mtd/nand/raw/sand_nand.c > >> create mode 100644 test/dm/nand.c > >> create mode 100644 test/image/spl_load_nand.c > >> > >> -- > >> 2.37.1 > >> > > > > The CI pipeline fails: > > https://source.denx.de/u-boot/custodians/u-boot-nand-flash/-/pipelines/18409 > > > > It seems like the problem is only for the clang tests (sandbox64 with > > clang test.py and sandbox with clang test.py) > > I can't view that link. Can you post the error somewhere else? > > I saw a clang error [1] when running CI before sending this out, but I thought I had fixed it. > > --Sean > > [1] https://source.denx.de/u-boot/custodians/u-boot-clk/-/pipelines/18355 > > sandbox: + sandbox > +drivers/mtd/nand/raw/sand_nand.c:386:2: error: variable 'src' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized] > + default: > + ^~~~~~~ > +drivers/mtd/nand/raw/sand_nand.c:395:14: note: uninitialized use occurs here > + memcpy(buf, src + chip->column, to_copy); > + ^~~ > +drivers/mtd/nand/raw/sand_nand.c:362:6: error: variable 'src' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] > + if (!chip->selected) > + ^~~~~~~~~~~~~~~ > +drivers/mtd/nand/raw/sand_nand.c:362:2: note: remove the 'if' if its condition is always false > + ^~~~~~~~~~~~~~~~~~~~ > +drivers/mtd/nand/raw/sand_nand.c:360:15: note: initialize the variable 'src' to silence this warning > + const u8 *src; > + ^ > + = NULL > +2 errors generated. > +make[5]: *** [scripts/Makefile.build:256: drivers/mtd/nand/raw/sand_nand.o] Error 1 > +make[4]: *** [scripts/Makefile.build:397: drivers/mtd/nand/raw] Error 2 > +make[3]: *** [scripts/Makefile.build:397: drivers/mtd/nand] Error 2 > +make[2]: *** [scripts/Makefile.build:397: drivers/mtd] Error 2 > +make[1]: *** [Makefile:1858: drivers] Error 2 > +make: *** [Makefile:177: sub-make] Error 2 > > [0KRunning with gitlab-runner 16.5.0 (853330f9) [0;m [0K on kaka wgFtTy4z, system ID: s_7c66e37ef434 [0;m section_start:1698925804:prepare_executor [0K [0K [36;1mPreparing the "docker" executor [0;m [0;m [0KUsing Docker executor with image docker.io/trini/u-boot-gitlab-ci-runner:jammy-20230804-25Aug2023 ... [0;m [0KPulling docker image docker.io/trini/u-boot-gitlab-ci-runner:jammy-20230804-25Aug2023 ... [0;m [0KUsing docker image sha256:1744666558bd76db2a46ea8d0e55b253c7570f134aff9b7e8fc91e13d99bbecc for docker.io/trini/u-boot-gitlab-ci-runner:jammy-20230804-25Aug2023 with digest trini/u-boot-gitlab-ci-runner@sha256:42925546cba6b1b0e819e91fb0269f0b700d72e4a2a5faf5d3102ec130fb859d ... [0;m section_end:1698925807:prepare_executor [0Ksection_start:1698925807:prepare_script [0K [0K [36;1mPreparing environment [0;m [0;m Running on runner-wgftty4z-project-568-concurrent-0 via kaka... section_end:1698925808:prepare_script [0Ksection_start:1698925808:get_sources [0K [0K [36;1mGetting source from Git repository [0;m [0;m [32;1mFetching changes... [0;m Reinitialized existing Git repository in /builds/u-boot/custodians/u-boot-nand-flash/.git/ [32;1mChecking out 94b91f7c as detached HEAD (ref is nand-next)... [0;m Removing multiplexed_log.css Removing test-log.html Removing tools/buildman/__pycache__/ Removing tools/patman/__pycache__/ Removing tools/u_boot_pylib/__pycache__/ [32;1mSkipping Git submodules setup [0;m section_end:1698925811:get_sources [0Ksection_start:1698925811:step_script [0K [0K [36;1mExecuting "step_script" stage of the job script [0;m [0;m [0KUsing docker image sha256:1744666558bd76db2a46ea8d0e55b253c7570f134aff9b7e8fc91e13d99bbecc for docker.io/trini/u-boot-gitlab-ci-runner:jammy-20230804-25Aug2023 with digest trini/u-boot-gitlab-ci-runner@sha256:42925546cba6b1b0e819e91fb0269f0b700d72e4a2a5faf5d3102ec130fb859d ... [0;m [32;1m$ git config --global --add safe.directory "${CI_PROJECT_DIR}" [0;m [32;1m$ git clone --depth=1 https://source.denx.de/u-boot/u-boot-test-hooks /tmp/uboot-test-hooks [0;m Cloning into '/tmp/uboot-test-hooks'... warning: redirecting to https://source.denx.de/u-boot/u-boot-test-hooks.git/ [32;1m$ ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname` [0;m [32;1m$ ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname` [0;m [32;1m$ grub-mkimage --prefix="" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd [0;m [32;1m$ grub-mkimage --prefix="" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd [0;m [32;1m$ if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.2/opensbi-1.2-rv-bin.tar.xz | tar -C /tmp -xJ; export OPENSBI=/tmp/opensbi-1.2-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin; fi [0;m [32;1m$ if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]] || [[ "${TEST_PY_BD}" == "sifive_unleashed" ]]; then wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.2/opensbi-1.2-rv-bin.tar.xz | tar -C /tmp -xJ; export OPENSBI=/tmp/opensbi-1.2-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.bin; fi [0;m [32;1m$ export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD} [0;m [32;1m$ echo BUILD_ENV ${BUILD_ENV} [0;m BUILD_ENV [32;1m$ if [ -n "${BUILD_ENV}" ]; then export ${BUILD_ENV}; fi [0;m [32;1m$ tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e --board ${TEST_PY_BD} ${OVERRIDE} [0;m Building current source for 1 boards (1 thread, 32 jobs per thread) Starting build... 0 0 0 /1 -1 (starting) sandbox: + sandbox64 +test/dm/nand.c:83:2: error: expression result unused [-Werror,-Wunused-value] + ut_assertok(nand_erase_opts(mtd, &opts)); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +include/test/ut.h:309:27: note: expanded from macro 'ut_assertok' +#define ut_assertok(cond) ut_asserteq(0, cond) + ^~~~~~~~~~~~~~~~~~~~ +include/test/ut.h:162:2: note: expanded from macro 'ut_asserteq' + __ret; \ + ^~~~~ +1 error generated. +make[3]: *** [scripts/Makefile.build:257: test/dm/nand.o] Error 1 +make[2]: *** [scripts/Makefile.build:397: test/dm] Error 2 +make[1]: *** [Makefile:1858: test] Error 2 +make: *** [Makefile:177: sub-make] Error 2 0 0 1 /1 sandbox64 Completed: 1 total built, 1 newly), duration 0:00:10, rate 0.10 section_end:1698925825:step_script [0Ksection_start:1698925825:after_script [0K [0K [36;1mRunning after_script [0;m [0;m [32;1mRunning after script... [0;m [32;1m$ cp -v /tmp/${TEST_PY_BD}/*.{html,css} . [0;m cp: cannot stat '/tmp/sandbox64/*.html': No such file or directory cp: cannot stat '/tmp/sandbox64/*.css': No such file or directory section_end:1698925826:after_script [0K [0;33mWARNING: after_script failed, but job will continue unaffected: exit code 1 [0;m section_start:1698925826:upload_artifacts_on_failure [0K [0K [36;1mUploading artifacts for failed job [0;m [0;m [32;1mUploading artifacts... [0;m [0;33mWARNING: *.html: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-nand-flash) [0;m [0;33mWARNING: *.css: no matching files. Ensure that the artifact path is relative to the working directory (/builds/u-boot/custodians/u-boot-nand-flash) [0;m [31;1mERROR: No files to upload [0;m section_end:1698925827:upload_artifacts_on_failure [0Ksection_start:1698925827:cleanup_file_variables [0K [0K [36;1mCleaning up project directory and file based variables [0;m [0;m section_end:1698925827:cleanup_file_variables [0K [31;1mERROR: Job failed: exit code 1 [0;m Thanks and regards, Dario
On 11/2/23 10:08, Dario Binacchi wrote: > On Thu, Nov 2, 2023 at 3:06 PM Sean Anderson <seanga2@gmail.com> wrote: >> >> On 11/2/23 10:01, Dario Binacchi wrote: >>> Sean, All, >>> >>> On Sun, Oct 29, 2023 at 4:48 AM Sean Anderson <seanga2@gmail.com> wrote: >>>> >>>> This series tests raw nand flash in sandbox and fixes various bugs discovered in >>>> the process. I've tried to do things in a contemporary manner, avoiding the >>>> (numerous) variations present on only a few boards. The test is pretty minimal. >>>> Future work could test the rest of the nand API as well as the MTD API. >>>> >>>> Bloat at [1] (for boards with SPL_NAND_SUPPORT enabled). Almost >>>> everything grows by a few bytes due to nand_page_size. A few boards grow more, >>>> mostly those using nand_spl_loaders.c. >>>> >>>> [1] https://gist.github.com/Forty-Bot/9694f3401893c9e706ccc374922de6c2 >>>> >>>> >>>> Sean Anderson (15): >>>> spl: nand: Fix NULL-pointer dereference >>>> nand: Don't dereference NULL manufacturer_desc >>>> nand: Calculate SYS_NAND_PAGE_COUNT automatically >>>> nand: spl_loaders: Only read enough pages to load the image >>>> spl: legacy: Honor bl_len when decompressing >>>> spl: nand: Set bl_len to page size >>>> cmd: nand: Map memory before accessing it >>>> spl: nand: Map memory before accessing it >>>> mtd: Rename SPL_MTD_SUPPORT to SPL_MTD >>>> mtd: Add some fallbacks for add/del_mtd_device >>>> nand: Add function to unregister NAND devices >>>> nand: Allow reinitialization >>>> arch: sandbox: Add function to create temporary files >>>> nand: Add sandbox driver >>>> test: spl: Add a test for NAND >>>> >>>> README | 9 +- >>>> arch/sandbox/cpu/os.c | 17 + >>>> arch/sandbox/dts/test.dts | 67 ++ >>>> arch/sandbox/include/asm/spl.h | 1 + >>>> cmd/nand.c | 26 +- >>>> common/spl/Kconfig | 2 +- >>>> common/spl/spl_legacy.c | 18 +- >>>> common/spl/spl_nand.c | 22 +- >>>> configs/am335x_baltos_defconfig | 3 +- >>>> configs/am335x_evm_defconfig | 3 +- >>>> configs/am335x_evm_spiboot_defconfig | 2 +- >>>> configs/am335x_guardian_defconfig | 1 - >>>> configs/am335x_hs_evm_defconfig | 2 +- >>>> configs/am335x_hs_evm_uart_defconfig | 2 +- >>>> configs/am335x_igep003x_defconfig | 3 +- >>>> configs/am335x_sl50_defconfig | 2 +- >>>> configs/am3517_evm_defconfig | 3 +- >>>> configs/am43xx_evm_defconfig | 3 +- >>>> configs/am43xx_evm_rtconly_defconfig | 3 +- >>>> configs/am43xx_evm_usbhost_boot_defconfig | 3 +- >>>> configs/am43xx_hs_evm_defconfig | 3 +- >>>> configs/am62ax_evm_r5_defconfig | 2 +- >>>> configs/am65x_evm_a53_defconfig | 2 +- >>>> configs/axm_defconfig | 1 - >>>> configs/chiliboard_defconfig | 1 - >>>> configs/cm_t43_defconfig | 2 +- >>>> configs/corvus_defconfig | 1 - >>>> configs/da850evm_nand_defconfig | 1 - >>>> configs/devkit3250_defconfig | 1 - >>>> configs/devkit8000_defconfig | 1 - >>>> configs/dra7xx_evm_defconfig | 1 - >>>> configs/draco_defconfig | 1 - >>>> configs/etamin_defconfig | 1 - >>>> .../gardena-smart-gateway-at91sam_defconfig | 1 - >>>> configs/igep00x0_defconfig | 3 +- >>>> configs/imx6ulz_smm_m2_defconfig | 2 +- >>>> configs/imx8mn_bsh_smm_s2_defconfig | 2 +- >>>> configs/j7200_evm_a72_defconfig | 2 +- >>>> configs/j7200_evm_r5_defconfig | 2 +- >>>> configs/j721e_evm_a72_defconfig | 2 +- >>>> configs/j721e_evm_r5_defconfig | 2 +- >>>> configs/j721s2_evm_a72_defconfig | 2 +- >>>> configs/j721s2_evm_r5_defconfig | 2 +- >>>> configs/m53menlo_defconfig | 1 - >>>> configs/omap35_logic_defconfig | 3 +- >>>> configs/omap35_logic_somlv_defconfig | 3 +- >>>> configs/omap3_beagle_defconfig | 3 +- >>>> configs/omap3_evm_defconfig | 3 +- >>>> configs/omap3_logic_defconfig | 3 +- >>>> configs/omap3_logic_somlv_defconfig | 3 +- >>>> configs/omapl138_lcdk_defconfig | 1 - >>>> configs/phycore-am335x-r2-regor_defconfig | 3 +- >>>> configs/phycore-am335x-r2-wega_defconfig | 3 +- >>>> configs/pxm2_defconfig | 1 - >>>> configs/rastaban_defconfig | 1 - >>>> configs/rut_defconfig | 1 - >>>> configs/sama5d3_xplained_nandflash_defconfig | 1 - >>>> configs/sama5d3xek_nandflash_defconfig | 1 - >>>> configs/sama5d4_xplained_nandflash_defconfig | 1 - >>>> configs/sama5d4ek_nandflash_defconfig | 1 - >>>> configs/sandbox64_defconfig | 10 +- >>>> configs/sandbox_defconfig | 9 + >>>> configs/sandbox_noinst_defconfig | 21 +- >>>> configs/smartweb_defconfig | 1 - >>>> configs/socfpga_secu1_defconfig | 2 +- >>>> configs/stm32746g-eval_spl_defconfig | 2 +- >>>> configs/stm32f746-disco_spl_defconfig | 2 +- >>>> configs/stm32f769-disco_spl_defconfig | 2 +- >>>> configs/stm32mp15_basic_defconfig | 2 +- >>>> configs/stm32mp15_dhcom_basic_defconfig | 2 +- >>>> configs/stm32mp15_dhcor_basic_defconfig | 2 +- >>>> configs/taurus_defconfig | 1 - >>>> configs/thuban_defconfig | 1 - >>>> drivers/mtd/Makefile | 2 +- >>>> drivers/mtd/nand/raw/Kconfig | 27 +- >>>> drivers/mtd/nand/raw/Makefile | 1 + >>>> drivers/mtd/nand/raw/am335x_spl_bch.c | 8 +- >>>> drivers/mtd/nand/raw/atmel_nand.c | 10 +- >>>> drivers/mtd/nand/raw/denali_spl.c | 5 + >>>> drivers/mtd/nand/raw/fsl_ifc_spl.c | 8 + >>>> drivers/mtd/nand/raw/lpc32xx_nand_mlc.c | 5 + >>>> drivers/mtd/nand/raw/mt7621_nand_spl.c | 5 + >>>> drivers/mtd/nand/raw/mxc_nand_spl.c | 10 +- >>>> drivers/mtd/nand/raw/mxs_nand_spl.c | 5 + >>>> drivers/mtd/nand/raw/nand.c | 66 +- >>>> drivers/mtd/nand/raw/nand_base.c | 7 +- >>>> drivers/mtd/nand/raw/nand_spl_loaders.c | 5 +- >>>> drivers/mtd/nand/raw/nand_spl_simple.c | 10 +- >>>> drivers/mtd/nand/raw/omap_gpmc.c | 3 +- >>>> drivers/mtd/nand/raw/sand_nand.c | 711 ++++++++++++++++++ >>>> drivers/mtd/nand/raw/sunxi_nand_spl.c | 8 +- >>>> drivers/mtd/onenand/onenand_uboot.c | 2 - >>>> include/linux/mtd/mtd.h | 12 + >>>> include/mtd/cfi_flash.h | 2 +- >>>> include/nand.h | 3 + >>>> include/os.h | 13 + >>>> include/system-constants.h | 3 + >>>> test/dm/Makefile | 1 + >>>> test/dm/nand.c | 106 +++ >>>> test/image/Kconfig | 9 + >>>> test/image/Makefile | 1 + >>>> test/image/spl_load_nand.c | 54 ++ >>>> 102 files changed, 1269 insertions(+), 153 deletions(-) >>>> create mode 100644 drivers/mtd/nand/raw/sand_nand.c >>>> create mode 100644 test/dm/nand.c >>>> create mode 100644 test/image/spl_load_nand.c >>>> >>>> -- >>>> 2.37.1 >>>> >>> >>> The CI pipeline fails: >>> https://source.denx.de/u-boot/custodians/u-boot-nand-flash/-/pipelines/18409 >>> >>> It seems like the problem is only for the clang tests (sandbox64 with >>> clang test.py and sandbox with clang test.py) >> >> I can't view that link. Can you post the error somewhere else? >> >> I saw a clang error [1] when running CI before sending this out, but I thought I had fixed it. >> >> --Sean >> >> [1] https://source.denx.de/u-boot/custodians/u-boot-clk/-/pipelines/18355 >> >> sandbox: + sandbox >> +drivers/mtd/nand/raw/sand_nand.c:386:2: error: variable 'src' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized] >> + default: >> + ^~~~~~~ >> +drivers/mtd/nand/raw/sand_nand.c:395:14: note: uninitialized use occurs here >> + memcpy(buf, src + chip->column, to_copy); >> + ^~~ >> +drivers/mtd/nand/raw/sand_nand.c:362:6: error: variable 'src' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] >> + if (!chip->selected) >> + ^~~~~~~~~~~~~~~ >> +drivers/mtd/nand/raw/sand_nand.c:362:2: note: remove the 'if' if its condition is always false >> + ^~~~~~~~~~~~~~~~~~~~ >> +drivers/mtd/nand/raw/sand_nand.c:360:15: note: initialize the variable 'src' to silence this warning >> + const u8 *src; >> + ^ >> + = NULL >> +2 errors generated. >> +make[5]: *** [scripts/Makefile.build:256: drivers/mtd/nand/raw/sand_nand.o] Error 1 >> +make[4]: *** [scripts/Makefile.build:397: drivers/mtd/nand/raw] Error 2 >> +make[3]: *** [scripts/Makefile.build:397: drivers/mtd/nand] Error 2 >> +make[2]: *** [scripts/Makefile.build:397: drivers/mtd] Error 2 >> +make[1]: *** [Makefile:1858: drivers] Error 2 >> +make: *** [Makefile:177: sub-make] Error 2 >> >> > > +test/dm/nand.c:83:2: error: expression result unused [-Werror,-Wunused-value] > + ut_assertok(nand_erase_opts(mtd, &opts)); > + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > +include/test/ut.h:309:27: note: expanded from macro 'ut_assertok' > +#define ut_assertok(cond) ut_asserteq(0, cond) > + ^~~~~~~~~~~~~~~~~~~~ > +include/test/ut.h:162:2: note: expanded from macro 'ut_asserteq' > + __ret; \ > + ^~~~~ > +1 error generated. > +make[3]: *** [scripts/Makefile.build:257: test/dm/nand.o] Error 1 > +make[2]: *** [scripts/Makefile.build:397: test/dm] Error 2 > +make[1]: *** [Makefile:1858: test] Error 2 > +make: *** [Makefile:177: sub-make] Error 2 ...well that's a new one. Wonder why it doesn't complain about all the other uses of ut_assertok (which, invariably, discard the value in the same way). --Sean
On Thu, Nov 2, 2023 at 3:13 PM Sean Anderson <seanga2@gmail.com> wrote: > > On 11/2/23 10:08, Dario Binacchi wrote: > > On Thu, Nov 2, 2023 at 3:06 PM Sean Anderson <seanga2@gmail.com> wrote: > >> > >> On 11/2/23 10:01, Dario Binacchi wrote: > >>> Sean, All, > >>> > >>> On Sun, Oct 29, 2023 at 4:48 AM Sean Anderson <seanga2@gmail.com> wrote: > >>>> > >>>> This series tests raw nand flash in sandbox and fixes various bugs discovered in > >>>> the process. I've tried to do things in a contemporary manner, avoiding the > >>>> (numerous) variations present on only a few boards. The test is pretty minimal. > >>>> Future work could test the rest of the nand API as well as the MTD API. > >>>> > >>>> Bloat at [1] (for boards with SPL_NAND_SUPPORT enabled). Almost > >>>> everything grows by a few bytes due to nand_page_size. A few boards grow more, > >>>> mostly those using nand_spl_loaders.c. > >>>> > >>>> [1] https://gist.github.com/Forty-Bot/9694f3401893c9e706ccc374922de6c2 > >>>> > >>>> > >>>> Sean Anderson (15): > >>>> spl: nand: Fix NULL-pointer dereference > >>>> nand: Don't dereference NULL manufacturer_desc > >>>> nand: Calculate SYS_NAND_PAGE_COUNT automatically > >>>> nand: spl_loaders: Only read enough pages to load the image > >>>> spl: legacy: Honor bl_len when decompressing > >>>> spl: nand: Set bl_len to page size > >>>> cmd: nand: Map memory before accessing it > >>>> spl: nand: Map memory before accessing it > >>>> mtd: Rename SPL_MTD_SUPPORT to SPL_MTD > >>>> mtd: Add some fallbacks for add/del_mtd_device > >>>> nand: Add function to unregister NAND devices > >>>> nand: Allow reinitialization > >>>> arch: sandbox: Add function to create temporary files > >>>> nand: Add sandbox driver > >>>> test: spl: Add a test for NAND > >>>> > >>>> README | 9 +- > >>>> arch/sandbox/cpu/os.c | 17 + > >>>> arch/sandbox/dts/test.dts | 67 ++ > >>>> arch/sandbox/include/asm/spl.h | 1 + > >>>> cmd/nand.c | 26 +- > >>>> common/spl/Kconfig | 2 +- > >>>> common/spl/spl_legacy.c | 18 +- > >>>> common/spl/spl_nand.c | 22 +- > >>>> configs/am335x_baltos_defconfig | 3 +- > >>>> configs/am335x_evm_defconfig | 3 +- > >>>> configs/am335x_evm_spiboot_defconfig | 2 +- > >>>> configs/am335x_guardian_defconfig | 1 - > >>>> configs/am335x_hs_evm_defconfig | 2 +- > >>>> configs/am335x_hs_evm_uart_defconfig | 2 +- > >>>> configs/am335x_igep003x_defconfig | 3 +- > >>>> configs/am335x_sl50_defconfig | 2 +- > >>>> configs/am3517_evm_defconfig | 3 +- > >>>> configs/am43xx_evm_defconfig | 3 +- > >>>> configs/am43xx_evm_rtconly_defconfig | 3 +- > >>>> configs/am43xx_evm_usbhost_boot_defconfig | 3 +- > >>>> configs/am43xx_hs_evm_defconfig | 3 +- > >>>> configs/am62ax_evm_r5_defconfig | 2 +- > >>>> configs/am65x_evm_a53_defconfig | 2 +- > >>>> configs/axm_defconfig | 1 - > >>>> configs/chiliboard_defconfig | 1 - > >>>> configs/cm_t43_defconfig | 2 +- > >>>> configs/corvus_defconfig | 1 - > >>>> configs/da850evm_nand_defconfig | 1 - > >>>> configs/devkit3250_defconfig | 1 - > >>>> configs/devkit8000_defconfig | 1 - > >>>> configs/dra7xx_evm_defconfig | 1 - > >>>> configs/draco_defconfig | 1 - > >>>> configs/etamin_defconfig | 1 - > >>>> .../gardena-smart-gateway-at91sam_defconfig | 1 - > >>>> configs/igep00x0_defconfig | 3 +- > >>>> configs/imx6ulz_smm_m2_defconfig | 2 +- > >>>> configs/imx8mn_bsh_smm_s2_defconfig | 2 +- > >>>> configs/j7200_evm_a72_defconfig | 2 +- > >>>> configs/j7200_evm_r5_defconfig | 2 +- > >>>> configs/j721e_evm_a72_defconfig | 2 +- > >>>> configs/j721e_evm_r5_defconfig | 2 +- > >>>> configs/j721s2_evm_a72_defconfig | 2 +- > >>>> configs/j721s2_evm_r5_defconfig | 2 +- > >>>> configs/m53menlo_defconfig | 1 - > >>>> configs/omap35_logic_defconfig | 3 +- > >>>> configs/omap35_logic_somlv_defconfig | 3 +- > >>>> configs/omap3_beagle_defconfig | 3 +- > >>>> configs/omap3_evm_defconfig | 3 +- > >>>> configs/omap3_logic_defconfig | 3 +- > >>>> configs/omap3_logic_somlv_defconfig | 3 +- > >>>> configs/omapl138_lcdk_defconfig | 1 - > >>>> configs/phycore-am335x-r2-regor_defconfig | 3 +- > >>>> configs/phycore-am335x-r2-wega_defconfig | 3 +- > >>>> configs/pxm2_defconfig | 1 - > >>>> configs/rastaban_defconfig | 1 - > >>>> configs/rut_defconfig | 1 - > >>>> configs/sama5d3_xplained_nandflash_defconfig | 1 - > >>>> configs/sama5d3xek_nandflash_defconfig | 1 - > >>>> configs/sama5d4_xplained_nandflash_defconfig | 1 - > >>>> configs/sama5d4ek_nandflash_defconfig | 1 - > >>>> configs/sandbox64_defconfig | 10 +- > >>>> configs/sandbox_defconfig | 9 + > >>>> configs/sandbox_noinst_defconfig | 21 +- > >>>> configs/smartweb_defconfig | 1 - > >>>> configs/socfpga_secu1_defconfig | 2 +- > >>>> configs/stm32746g-eval_spl_defconfig | 2 +- > >>>> configs/stm32f746-disco_spl_defconfig | 2 +- > >>>> configs/stm32f769-disco_spl_defconfig | 2 +- > >>>> configs/stm32mp15_basic_defconfig | 2 +- > >>>> configs/stm32mp15_dhcom_basic_defconfig | 2 +- > >>>> configs/stm32mp15_dhcor_basic_defconfig | 2 +- > >>>> configs/taurus_defconfig | 1 - > >>>> configs/thuban_defconfig | 1 - > >>>> drivers/mtd/Makefile | 2 +- > >>>> drivers/mtd/nand/raw/Kconfig | 27 +- > >>>> drivers/mtd/nand/raw/Makefile | 1 + > >>>> drivers/mtd/nand/raw/am335x_spl_bch.c | 8 +- > >>>> drivers/mtd/nand/raw/atmel_nand.c | 10 +- > >>>> drivers/mtd/nand/raw/denali_spl.c | 5 + > >>>> drivers/mtd/nand/raw/fsl_ifc_spl.c | 8 + > >>>> drivers/mtd/nand/raw/lpc32xx_nand_mlc.c | 5 + > >>>> drivers/mtd/nand/raw/mt7621_nand_spl.c | 5 + > >>>> drivers/mtd/nand/raw/mxc_nand_spl.c | 10 +- > >>>> drivers/mtd/nand/raw/mxs_nand_spl.c | 5 + > >>>> drivers/mtd/nand/raw/nand.c | 66 +- > >>>> drivers/mtd/nand/raw/nand_base.c | 7 +- > >>>> drivers/mtd/nand/raw/nand_spl_loaders.c | 5 +- > >>>> drivers/mtd/nand/raw/nand_spl_simple.c | 10 +- > >>>> drivers/mtd/nand/raw/omap_gpmc.c | 3 +- > >>>> drivers/mtd/nand/raw/sand_nand.c | 711 ++++++++++++++++++ > >>>> drivers/mtd/nand/raw/sunxi_nand_spl.c | 8 +- > >>>> drivers/mtd/onenand/onenand_uboot.c | 2 - > >>>> include/linux/mtd/mtd.h | 12 + > >>>> include/mtd/cfi_flash.h | 2 +- > >>>> include/nand.h | 3 + > >>>> include/os.h | 13 + > >>>> include/system-constants.h | 3 + > >>>> test/dm/Makefile | 1 + > >>>> test/dm/nand.c | 106 +++ > >>>> test/image/Kconfig | 9 + > >>>> test/image/Makefile | 1 + > >>>> test/image/spl_load_nand.c | 54 ++ > >>>> 102 files changed, 1269 insertions(+), 153 deletions(-) > >>>> create mode 100644 drivers/mtd/nand/raw/sand_nand.c > >>>> create mode 100644 test/dm/nand.c > >>>> create mode 100644 test/image/spl_load_nand.c > >>>> > >>>> -- > >>>> 2.37.1 > >>>> > >>> > >>> The CI pipeline fails: > >>> https://source.denx.de/u-boot/custodians/u-boot-nand-flash/-/pipelines/18409 > >>> > >>> It seems like the problem is only for the clang tests (sandbox64 with > >>> clang test.py and sandbox with clang test.py) > >> > >> I can't view that link. Can you post the error somewhere else? > >> > >> I saw a clang error [1] when running CI before sending this out, but I thought I had fixed it. > >> > >> --Sean > >> > >> [1] https://source.denx.de/u-boot/custodians/u-boot-clk/-/pipelines/18355 > >> > >> sandbox: + sandbox > >> +drivers/mtd/nand/raw/sand_nand.c:386:2: error: variable 'src' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized] > >> + default: > >> + ^~~~~~~ > >> +drivers/mtd/nand/raw/sand_nand.c:395:14: note: uninitialized use occurs here > >> + memcpy(buf, src + chip->column, to_copy); > >> + ^~~ > >> +drivers/mtd/nand/raw/sand_nand.c:362:6: error: variable 'src' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] > >> + if (!chip->selected) > >> + ^~~~~~~~~~~~~~~ > >> +drivers/mtd/nand/raw/sand_nand.c:362:2: note: remove the 'if' if its condition is always false > >> + ^~~~~~~~~~~~~~~~~~~~ > >> +drivers/mtd/nand/raw/sand_nand.c:360:15: note: initialize the variable 'src' to silence this warning > >> + const u8 *src; > >> + ^ > >> + = NULL > >> +2 errors generated. > >> +make[5]: *** [scripts/Makefile.build:256: drivers/mtd/nand/raw/sand_nand.o] Error 1 > >> +make[4]: *** [scripts/Makefile.build:397: drivers/mtd/nand/raw] Error 2 > >> +make[3]: *** [scripts/Makefile.build:397: drivers/mtd/nand] Error 2 > >> +make[2]: *** [scripts/Makefile.build:397: drivers/mtd] Error 2 > >> +make[1]: *** [Makefile:1858: drivers] Error 2 > >> +make: *** [Makefile:177: sub-make] Error 2 > >> > >> > > > > +test/dm/nand.c:83:2: error: expression result unused [-Werror,-Wunused-value] > > + ut_assertok(nand_erase_opts(mtd, &opts)); > > + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > +include/test/ut.h:309:27: note: expanded from macro 'ut_assertok' > > +#define ut_assertok(cond) ut_asserteq(0, cond) > > + ^~~~~~~~~~~~~~~~~~~~ > > +include/test/ut.h:162:2: note: expanded from macro 'ut_asserteq' > > + __ret; \ > > + ^~~~~ > > +1 error generated. > > +make[3]: *** [scripts/Makefile.build:257: test/dm/nand.o] Error 1 > > +make[2]: *** [scripts/Makefile.build:397: test/dm] Error 2 > > +make[1]: *** [Makefile:1858: test] Error 2 > > +make: *** [Makefile:177: sub-make] Error 2 > > ...well that's a new one. Wonder why it doesn't complain about all the other uses of > ut_assertok (which, invariably, discard the value in the same way). That's what I thought as well. It seems to be related to CLANG. Could it be the 'unused-value' flag? I can't figure out why it causes the problem at that point, given that the 'ut_assertok()' is called even before the one that generates the error. Dario > > --Sean > -- Dario Binacchi Senior Embedded Linux Developer dario.binacchi@amarulasolutions.com
On 11/2/23 10:18, Dario Binacchi wrote: > On Thu, Nov 2, 2023 at 3:13 PM Sean Anderson <seanga2@gmail.com> wrote: >> >> On 11/2/23 10:08, Dario Binacchi wrote: >>> On Thu, Nov 2, 2023 at 3:06 PM Sean Anderson <seanga2@gmail.com> wrote: >>>> >>>> On 11/2/23 10:01, Dario Binacchi wrote: >>>>> Sean, All, >>>>> >>>>> On Sun, Oct 29, 2023 at 4:48 AM Sean Anderson <seanga2@gmail.com> wrote: >>>>>> >>>>>> This series tests raw nand flash in sandbox and fixes various bugs discovered in >>>>>> the process. I've tried to do things in a contemporary manner, avoiding the >>>>>> (numerous) variations present on only a few boards. The test is pretty minimal. >>>>>> Future work could test the rest of the nand API as well as the MTD API. >>>>>> >>>>>> Bloat at [1] (for boards with SPL_NAND_SUPPORT enabled). Almost >>>>>> everything grows by a few bytes due to nand_page_size. A few boards grow more, >>>>>> mostly those using nand_spl_loaders.c. >>>>>> >>>>>> [1] https://gist.github.com/Forty-Bot/9694f3401893c9e706ccc374922de6c2 >>>>>> >>>>>> >>>>>> Sean Anderson (15): >>>>>> spl: nand: Fix NULL-pointer dereference >>>>>> nand: Don't dereference NULL manufacturer_desc >>>>>> nand: Calculate SYS_NAND_PAGE_COUNT automatically >>>>>> nand: spl_loaders: Only read enough pages to load the image >>>>>> spl: legacy: Honor bl_len when decompressing >>>>>> spl: nand: Set bl_len to page size >>>>>> cmd: nand: Map memory before accessing it >>>>>> spl: nand: Map memory before accessing it >>>>>> mtd: Rename SPL_MTD_SUPPORT to SPL_MTD >>>>>> mtd: Add some fallbacks for add/del_mtd_device >>>>>> nand: Add function to unregister NAND devices >>>>>> nand: Allow reinitialization >>>>>> arch: sandbox: Add function to create temporary files >>>>>> nand: Add sandbox driver >>>>>> test: spl: Add a test for NAND >>>>>> >>>>>> README | 9 +- >>>>>> arch/sandbox/cpu/os.c | 17 + >>>>>> arch/sandbox/dts/test.dts | 67 ++ >>>>>> arch/sandbox/include/asm/spl.h | 1 + >>>>>> cmd/nand.c | 26 +- >>>>>> common/spl/Kconfig | 2 +- >>>>>> common/spl/spl_legacy.c | 18 +- >>>>>> common/spl/spl_nand.c | 22 +- >>>>>> configs/am335x_baltos_defconfig | 3 +- >>>>>> configs/am335x_evm_defconfig | 3 +- >>>>>> configs/am335x_evm_spiboot_defconfig | 2 +- >>>>>> configs/am335x_guardian_defconfig | 1 - >>>>>> configs/am335x_hs_evm_defconfig | 2 +- >>>>>> configs/am335x_hs_evm_uart_defconfig | 2 +- >>>>>> configs/am335x_igep003x_defconfig | 3 +- >>>>>> configs/am335x_sl50_defconfig | 2 +- >>>>>> configs/am3517_evm_defconfig | 3 +- >>>>>> configs/am43xx_evm_defconfig | 3 +- >>>>>> configs/am43xx_evm_rtconly_defconfig | 3 +- >>>>>> configs/am43xx_evm_usbhost_boot_defconfig | 3 +- >>>>>> configs/am43xx_hs_evm_defconfig | 3 +- >>>>>> configs/am62ax_evm_r5_defconfig | 2 +- >>>>>> configs/am65x_evm_a53_defconfig | 2 +- >>>>>> configs/axm_defconfig | 1 - >>>>>> configs/chiliboard_defconfig | 1 - >>>>>> configs/cm_t43_defconfig | 2 +- >>>>>> configs/corvus_defconfig | 1 - >>>>>> configs/da850evm_nand_defconfig | 1 - >>>>>> configs/devkit3250_defconfig | 1 - >>>>>> configs/devkit8000_defconfig | 1 - >>>>>> configs/dra7xx_evm_defconfig | 1 - >>>>>> configs/draco_defconfig | 1 - >>>>>> configs/etamin_defconfig | 1 - >>>>>> .../gardena-smart-gateway-at91sam_defconfig | 1 - >>>>>> configs/igep00x0_defconfig | 3 +- >>>>>> configs/imx6ulz_smm_m2_defconfig | 2 +- >>>>>> configs/imx8mn_bsh_smm_s2_defconfig | 2 +- >>>>>> configs/j7200_evm_a72_defconfig | 2 +- >>>>>> configs/j7200_evm_r5_defconfig | 2 +- >>>>>> configs/j721e_evm_a72_defconfig | 2 +- >>>>>> configs/j721e_evm_r5_defconfig | 2 +- >>>>>> configs/j721s2_evm_a72_defconfig | 2 +- >>>>>> configs/j721s2_evm_r5_defconfig | 2 +- >>>>>> configs/m53menlo_defconfig | 1 - >>>>>> configs/omap35_logic_defconfig | 3 +- >>>>>> configs/omap35_logic_somlv_defconfig | 3 +- >>>>>> configs/omap3_beagle_defconfig | 3 +- >>>>>> configs/omap3_evm_defconfig | 3 +- >>>>>> configs/omap3_logic_defconfig | 3 +- >>>>>> configs/omap3_logic_somlv_defconfig | 3 +- >>>>>> configs/omapl138_lcdk_defconfig | 1 - >>>>>> configs/phycore-am335x-r2-regor_defconfig | 3 +- >>>>>> configs/phycore-am335x-r2-wega_defconfig | 3 +- >>>>>> configs/pxm2_defconfig | 1 - >>>>>> configs/rastaban_defconfig | 1 - >>>>>> configs/rut_defconfig | 1 - >>>>>> configs/sama5d3_xplained_nandflash_defconfig | 1 - >>>>>> configs/sama5d3xek_nandflash_defconfig | 1 - >>>>>> configs/sama5d4_xplained_nandflash_defconfig | 1 - >>>>>> configs/sama5d4ek_nandflash_defconfig | 1 - >>>>>> configs/sandbox64_defconfig | 10 +- >>>>>> configs/sandbox_defconfig | 9 + >>>>>> configs/sandbox_noinst_defconfig | 21 +- >>>>>> configs/smartweb_defconfig | 1 - >>>>>> configs/socfpga_secu1_defconfig | 2 +- >>>>>> configs/stm32746g-eval_spl_defconfig | 2 +- >>>>>> configs/stm32f746-disco_spl_defconfig | 2 +- >>>>>> configs/stm32f769-disco_spl_defconfig | 2 +- >>>>>> configs/stm32mp15_basic_defconfig | 2 +- >>>>>> configs/stm32mp15_dhcom_basic_defconfig | 2 +- >>>>>> configs/stm32mp15_dhcor_basic_defconfig | 2 +- >>>>>> configs/taurus_defconfig | 1 - >>>>>> configs/thuban_defconfig | 1 - >>>>>> drivers/mtd/Makefile | 2 +- >>>>>> drivers/mtd/nand/raw/Kconfig | 27 +- >>>>>> drivers/mtd/nand/raw/Makefile | 1 + >>>>>> drivers/mtd/nand/raw/am335x_spl_bch.c | 8 +- >>>>>> drivers/mtd/nand/raw/atmel_nand.c | 10 +- >>>>>> drivers/mtd/nand/raw/denali_spl.c | 5 + >>>>>> drivers/mtd/nand/raw/fsl_ifc_spl.c | 8 + >>>>>> drivers/mtd/nand/raw/lpc32xx_nand_mlc.c | 5 + >>>>>> drivers/mtd/nand/raw/mt7621_nand_spl.c | 5 + >>>>>> drivers/mtd/nand/raw/mxc_nand_spl.c | 10 +- >>>>>> drivers/mtd/nand/raw/mxs_nand_spl.c | 5 + >>>>>> drivers/mtd/nand/raw/nand.c | 66 +- >>>>>> drivers/mtd/nand/raw/nand_base.c | 7 +- >>>>>> drivers/mtd/nand/raw/nand_spl_loaders.c | 5 +- >>>>>> drivers/mtd/nand/raw/nand_spl_simple.c | 10 +- >>>>>> drivers/mtd/nand/raw/omap_gpmc.c | 3 +- >>>>>> drivers/mtd/nand/raw/sand_nand.c | 711 ++++++++++++++++++ >>>>>> drivers/mtd/nand/raw/sunxi_nand_spl.c | 8 +- >>>>>> drivers/mtd/onenand/onenand_uboot.c | 2 - >>>>>> include/linux/mtd/mtd.h | 12 + >>>>>> include/mtd/cfi_flash.h | 2 +- >>>>>> include/nand.h | 3 + >>>>>> include/os.h | 13 + >>>>>> include/system-constants.h | 3 + >>>>>> test/dm/Makefile | 1 + >>>>>> test/dm/nand.c | 106 +++ >>>>>> test/image/Kconfig | 9 + >>>>>> test/image/Makefile | 1 + >>>>>> test/image/spl_load_nand.c | 54 ++ >>>>>> 102 files changed, 1269 insertions(+), 153 deletions(-) >>>>>> create mode 100644 drivers/mtd/nand/raw/sand_nand.c >>>>>> create mode 100644 test/dm/nand.c >>>>>> create mode 100644 test/image/spl_load_nand.c >>>>>> >>>>>> -- >>>>>> 2.37.1 >>>>>> >>>>> >>>>> The CI pipeline fails: >>>>> https://source.denx.de/u-boot/custodians/u-boot-nand-flash/-/pipelines/18409 >>>>> >>>>> It seems like the problem is only for the clang tests (sandbox64 with >>>>> clang test.py and sandbox with clang test.py) >>>> >>>> I can't view that link. Can you post the error somewhere else? >>>> >>>> I saw a clang error [1] when running CI before sending this out, but I thought I had fixed it. >>>> >>>> --Sean >>>> >>>> [1] https://source.denx.de/u-boot/custodians/u-boot-clk/-/pipelines/18355 >>>> >>>> sandbox: + sandbox >>>> +drivers/mtd/nand/raw/sand_nand.c:386:2: error: variable 'src' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized] >>>> + default: >>>> + ^~~~~~~ >>>> +drivers/mtd/nand/raw/sand_nand.c:395:14: note: uninitialized use occurs here >>>> + memcpy(buf, src + chip->column, to_copy); >>>> + ^~~ >>>> +drivers/mtd/nand/raw/sand_nand.c:362:6: error: variable 'src' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] >>>> + if (!chip->selected) >>>> + ^~~~~~~~~~~~~~~ >>>> +drivers/mtd/nand/raw/sand_nand.c:362:2: note: remove the 'if' if its condition is always false >>>> + ^~~~~~~~~~~~~~~~~~~~ >>>> +drivers/mtd/nand/raw/sand_nand.c:360:15: note: initialize the variable 'src' to silence this warning >>>> + const u8 *src; >>>> + ^ >>>> + = NULL >>>> +2 errors generated. >>>> +make[5]: *** [scripts/Makefile.build:256: drivers/mtd/nand/raw/sand_nand.o] Error 1 >>>> +make[4]: *** [scripts/Makefile.build:397: drivers/mtd/nand/raw] Error 2 >>>> +make[3]: *** [scripts/Makefile.build:397: drivers/mtd/nand] Error 2 >>>> +make[2]: *** [scripts/Makefile.build:397: drivers/mtd] Error 2 >>>> +make[1]: *** [Makefile:1858: drivers] Error 2 >>>> +make: *** [Makefile:177: sub-make] Error 2 >>>> >>>> >>> >>> +test/dm/nand.c:83:2: error: expression result unused [-Werror,-Wunused-value] >>> + ut_assertok(nand_erase_opts(mtd, &opts)); >>> + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> +include/test/ut.h:309:27: note: expanded from macro 'ut_assertok' >>> +#define ut_assertok(cond) ut_asserteq(0, cond) >>> + ^~~~~~~~~~~~~~~~~~~~ >>> +include/test/ut.h:162:2: note: expanded from macro 'ut_asserteq' >>> + __ret; \ >>> + ^~~~~ >>> +1 error generated. >>> +make[3]: *** [scripts/Makefile.build:257: test/dm/nand.o] Error 1 >>> +make[2]: *** [scripts/Makefile.build:397: test/dm] Error 2 >>> +make[1]: *** [Makefile:1858: test] Error 2 >>> +make: *** [Makefile:177: sub-make] Error 2 >> >> ...well that's a new one. Wonder why it doesn't complain about all the other uses of >> ut_assertok (which, invariably, discard the value in the same way). > > That's what I thought as well. It seems to be related to CLANG. Could it be the > 'unused-value' flag? I can't figure out why it causes the problem at > that point, > given that the 'ut_assertok()' is called even before the one that > generates the error. It was because of the comma instead of a semicolon on the previous line. --Sean
Sean, All On Sat, Nov 4, 2023 at 8:46 PM Sean Anderson <seanga2@gmail.com> wrote: > > On 11/2/23 10:18, Dario Binacchi wrote: > > On Thu, Nov 2, 2023 at 3:13 PM Sean Anderson <seanga2@gmail.com> wrote: > >> > >> On 11/2/23 10:08, Dario Binacchi wrote: > >>> On Thu, Nov 2, 2023 at 3:06 PM Sean Anderson <seanga2@gmail.com> wrote: > >>>> > >>>> On 11/2/23 10:01, Dario Binacchi wrote: > >>>>> Sean, All, > >>>>> > >>>>> On Sun, Oct 29, 2023 at 4:48 AM Sean Anderson <seanga2@gmail.com> wrote: > >>>>>> > >>>>>> This series tests raw nand flash in sandbox and fixes various bugs discovered in > >>>>>> the process. I've tried to do things in a contemporary manner, avoiding the > >>>>>> (numerous) variations present on only a few boards. The test is pretty minimal. > >>>>>> Future work could test the rest of the nand API as well as the MTD API. > >>>>>> > >>>>>> Bloat at [1] (for boards with SPL_NAND_SUPPORT enabled). Almost > >>>>>> everything grows by a few bytes due to nand_page_size. A few boards grow more, > >>>>>> mostly those using nand_spl_loaders.c. > >>>>>> > >>>>>> [1] https://gist.github.com/Forty-Bot/9694f3401893c9e706ccc374922de6c2 > >>>>>> > >>>>>> > >>>>>> Sean Anderson (15): > >>>>>> spl: nand: Fix NULL-pointer dereference > >>>>>> nand: Don't dereference NULL manufacturer_desc > >>>>>> nand: Calculate SYS_NAND_PAGE_COUNT automatically > >>>>>> nand: spl_loaders: Only read enough pages to load the image > >>>>>> spl: legacy: Honor bl_len when decompressing > >>>>>> spl: nand: Set bl_len to page size > >>>>>> cmd: nand: Map memory before accessing it > >>>>>> spl: nand: Map memory before accessing it > >>>>>> mtd: Rename SPL_MTD_SUPPORT to SPL_MTD > >>>>>> mtd: Add some fallbacks for add/del_mtd_device > >>>>>> nand: Add function to unregister NAND devices > >>>>>> nand: Allow reinitialization > >>>>>> arch: sandbox: Add function to create temporary files > >>>>>> nand: Add sandbox driver > >>>>>> test: spl: Add a test for NAND > >>>>>> > >>>>>> README | 9 +- > >>>>>> arch/sandbox/cpu/os.c | 17 + > >>>>>> arch/sandbox/dts/test.dts | 67 ++ > >>>>>> arch/sandbox/include/asm/spl.h | 1 + > >>>>>> cmd/nand.c | 26 +- > >>>>>> common/spl/Kconfig | 2 +- > >>>>>> common/spl/spl_legacy.c | 18 +- > >>>>>> common/spl/spl_nand.c | 22 +- > >>>>>> configs/am335x_baltos_defconfig | 3 +- > >>>>>> configs/am335x_evm_defconfig | 3 +- > >>>>>> configs/am335x_evm_spiboot_defconfig | 2 +- > >>>>>> configs/am335x_guardian_defconfig | 1 - > >>>>>> configs/am335x_hs_evm_defconfig | 2 +- > >>>>>> configs/am335x_hs_evm_uart_defconfig | 2 +- > >>>>>> configs/am335x_igep003x_defconfig | 3 +- > >>>>>> configs/am335x_sl50_defconfig | 2 +- > >>>>>> configs/am3517_evm_defconfig | 3 +- > >>>>>> configs/am43xx_evm_defconfig | 3 +- > >>>>>> configs/am43xx_evm_rtconly_defconfig | 3 +- > >>>>>> configs/am43xx_evm_usbhost_boot_defconfig | 3 +- > >>>>>> configs/am43xx_hs_evm_defconfig | 3 +- > >>>>>> configs/am62ax_evm_r5_defconfig | 2 +- > >>>>>> configs/am65x_evm_a53_defconfig | 2 +- > >>>>>> configs/axm_defconfig | 1 - > >>>>>> configs/chiliboard_defconfig | 1 - > >>>>>> configs/cm_t43_defconfig | 2 +- > >>>>>> configs/corvus_defconfig | 1 - > >>>>>> configs/da850evm_nand_defconfig | 1 - > >>>>>> configs/devkit3250_defconfig | 1 - > >>>>>> configs/devkit8000_defconfig | 1 - > >>>>>> configs/dra7xx_evm_defconfig | 1 - > >>>>>> configs/draco_defconfig | 1 - > >>>>>> configs/etamin_defconfig | 1 - > >>>>>> .../gardena-smart-gateway-at91sam_defconfig | 1 - > >>>>>> configs/igep00x0_defconfig | 3 +- > >>>>>> configs/imx6ulz_smm_m2_defconfig | 2 +- > >>>>>> configs/imx8mn_bsh_smm_s2_defconfig | 2 +- > >>>>>> configs/j7200_evm_a72_defconfig | 2 +- > >>>>>> configs/j7200_evm_r5_defconfig | 2 +- > >>>>>> configs/j721e_evm_a72_defconfig | 2 +- > >>>>>> configs/j721e_evm_r5_defconfig | 2 +- > >>>>>> configs/j721s2_evm_a72_defconfig | 2 +- > >>>>>> configs/j721s2_evm_r5_defconfig | 2 +- > >>>>>> configs/m53menlo_defconfig | 1 - > >>>>>> configs/omap35_logic_defconfig | 3 +- > >>>>>> configs/omap35_logic_somlv_defconfig | 3 +- > >>>>>> configs/omap3_beagle_defconfig | 3 +- > >>>>>> configs/omap3_evm_defconfig | 3 +- > >>>>>> configs/omap3_logic_defconfig | 3 +- > >>>>>> configs/omap3_logic_somlv_defconfig | 3 +- > >>>>>> configs/omapl138_lcdk_defconfig | 1 - > >>>>>> configs/phycore-am335x-r2-regor_defconfig | 3 +- > >>>>>> configs/phycore-am335x-r2-wega_defconfig | 3 +- > >>>>>> configs/pxm2_defconfig | 1 - > >>>>>> configs/rastaban_defconfig | 1 - > >>>>>> configs/rut_defconfig | 1 - > >>>>>> configs/sama5d3_xplained_nandflash_defconfig | 1 - > >>>>>> configs/sama5d3xek_nandflash_defconfig | 1 - > >>>>>> configs/sama5d4_xplained_nandflash_defconfig | 1 - > >>>>>> configs/sama5d4ek_nandflash_defconfig | 1 - > >>>>>> configs/sandbox64_defconfig | 10 +- > >>>>>> configs/sandbox_defconfig | 9 + > >>>>>> configs/sandbox_noinst_defconfig | 21 +- > >>>>>> configs/smartweb_defconfig | 1 - > >>>>>> configs/socfpga_secu1_defconfig | 2 +- > >>>>>> configs/stm32746g-eval_spl_defconfig | 2 +- > >>>>>> configs/stm32f746-disco_spl_defconfig | 2 +- > >>>>>> configs/stm32f769-disco_spl_defconfig | 2 +- > >>>>>> configs/stm32mp15_basic_defconfig | 2 +- > >>>>>> configs/stm32mp15_dhcom_basic_defconfig | 2 +- > >>>>>> configs/stm32mp15_dhcor_basic_defconfig | 2 +- > >>>>>> configs/taurus_defconfig | 1 - > >>>>>> configs/thuban_defconfig | 1 - > >>>>>> drivers/mtd/Makefile | 2 +- > >>>>>> drivers/mtd/nand/raw/Kconfig | 27 +- > >>>>>> drivers/mtd/nand/raw/Makefile | 1 + > >>>>>> drivers/mtd/nand/raw/am335x_spl_bch.c | 8 +- > >>>>>> drivers/mtd/nand/raw/atmel_nand.c | 10 +- > >>>>>> drivers/mtd/nand/raw/denali_spl.c | 5 + > >>>>>> drivers/mtd/nand/raw/fsl_ifc_spl.c | 8 + > >>>>>> drivers/mtd/nand/raw/lpc32xx_nand_mlc.c | 5 + > >>>>>> drivers/mtd/nand/raw/mt7621_nand_spl.c | 5 + > >>>>>> drivers/mtd/nand/raw/mxc_nand_spl.c | 10 +- > >>>>>> drivers/mtd/nand/raw/mxs_nand_spl.c | 5 + > >>>>>> drivers/mtd/nand/raw/nand.c | 66 +- > >>>>>> drivers/mtd/nand/raw/nand_base.c | 7 +- > >>>>>> drivers/mtd/nand/raw/nand_spl_loaders.c | 5 +- > >>>>>> drivers/mtd/nand/raw/nand_spl_simple.c | 10 +- > >>>>>> drivers/mtd/nand/raw/omap_gpmc.c | 3 +- > >>>>>> drivers/mtd/nand/raw/sand_nand.c | 711 ++++++++++++++++++ > >>>>>> drivers/mtd/nand/raw/sunxi_nand_spl.c | 8 +- > >>>>>> drivers/mtd/onenand/onenand_uboot.c | 2 - > >>>>>> include/linux/mtd/mtd.h | 12 + > >>>>>> include/mtd/cfi_flash.h | 2 +- > >>>>>> include/nand.h | 3 + > >>>>>> include/os.h | 13 + > >>>>>> include/system-constants.h | 3 + > >>>>>> test/dm/Makefile | 1 + > >>>>>> test/dm/nand.c | 106 +++ > >>>>>> test/image/Kconfig | 9 + > >>>>>> test/image/Makefile | 1 + > >>>>>> test/image/spl_load_nand.c | 54 ++ > >>>>>> 102 files changed, 1269 insertions(+), 153 deletions(-) > >>>>>> create mode 100644 drivers/mtd/nand/raw/sand_nand.c > >>>>>> create mode 100644 test/dm/nand.c > >>>>>> create mode 100644 test/image/spl_load_nand.c > >>>>>> > >>>>>> -- > >>>>>> 2.37.1 > >>>>>> > >>>>> > >>>>> The CI pipeline fails: > >>>>> https://source.denx.de/u-boot/custodians/u-boot-nand-flash/-/pipelines/18409 > >>>>> > >>>>> It seems like the problem is only for the clang tests (sandbox64 with > >>>>> clang test.py and sandbox with clang test.py) > >>>> > >>>> I can't view that link. Can you post the error somewhere else? > >>>> > >>>> I saw a clang error [1] when running CI before sending this out, but I thought I had fixed it. > >>>> > >>>> --Sean > >>>> > >>>> [1] https://source.denx.de/u-boot/custodians/u-boot-clk/-/pipelines/18355 > >>>> > >>>> sandbox: + sandbox > >>>> +drivers/mtd/nand/raw/sand_nand.c:386:2: error: variable 'src' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized] > >>>> + default: > >>>> + ^~~~~~~ > >>>> +drivers/mtd/nand/raw/sand_nand.c:395:14: note: uninitialized use occurs here > >>>> + memcpy(buf, src + chip->column, to_copy); > >>>> + ^~~ > >>>> +drivers/mtd/nand/raw/sand_nand.c:362:6: error: variable 'src' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] > >>>> + if (!chip->selected) > >>>> + ^~~~~~~~~~~~~~~ > >>>> +drivers/mtd/nand/raw/sand_nand.c:362:2: note: remove the 'if' if its condition is always false > >>>> + ^~~~~~~~~~~~~~~~~~~~ > >>>> +drivers/mtd/nand/raw/sand_nand.c:360:15: note: initialize the variable 'src' to silence this warning > >>>> + const u8 *src; > >>>> + ^ > >>>> + = NULL > >>>> +2 errors generated. > >>>> +make[5]: *** [scripts/Makefile.build:256: drivers/mtd/nand/raw/sand_nand.o] Error 1 > >>>> +make[4]: *** [scripts/Makefile.build:397: drivers/mtd/nand/raw] Error 2 > >>>> +make[3]: *** [scripts/Makefile.build:397: drivers/mtd/nand] Error 2 > >>>> +make[2]: *** [scripts/Makefile.build:397: drivers/mtd] Error 2 > >>>> +make[1]: *** [Makefile:1858: drivers] Error 2 > >>>> +make: *** [Makefile:177: sub-make] Error 2 > >>>> > >>>> > >>> > >>> +test/dm/nand.c:83:2: error: expression result unused [-Werror,-Wunused-value] > >>> + ut_assertok(nand_erase_opts(mtd, &opts)); > >>> + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >>> +include/test/ut.h:309:27: note: expanded from macro 'ut_assertok' > >>> +#define ut_assertok(cond) ut_asserteq(0, cond) > >>> + ^~~~~~~~~~~~~~~~~~~~ > >>> +include/test/ut.h:162:2: note: expanded from macro 'ut_asserteq' > >>> + __ret; \ > >>> + ^~~~~ > >>> +1 error generated. > >>> +make[3]: *** [scripts/Makefile.build:257: test/dm/nand.o] Error 1 > >>> +make[2]: *** [scripts/Makefile.build:397: test/dm] Error 2 > >>> +make[1]: *** [Makefile:1858: test] Error 2 > >>> +make: *** [Makefile:177: sub-make] Error 2 > >> > >> ...well that's a new one. Wonder why it doesn't complain about all the other uses of > >> ut_assertok (which, invariably, discard the value in the same way). > > > > That's what I thought as well. It seems to be related to CLANG. Could it be the > > 'unused-value' flag? I can't figure out why it causes the problem at > > that point, > > given that the 'ut_assertok()' is called even before the one that > > generates the error. > > It was because of the comma instead of a semicolon on the previous line. Great! 5022c5112 < + opts.length = mtd->erasesize * 2, --- > + opts.length = mtd->erasesize * 2; Just before the ut_assertok() pointed by the test failure message. And I confirm to you that the CI pipeline has now finished successfully. Many thanks! Regards Dario > > --Sean