Messages in this thread | | | From | Tudor Ambarus <> | Subject | [PATCH 0/3] mtd: rawnand: Fix HW ECC handling | Date | Thu, 17 Sep 2020 10:52:10 +0300 |
| |
Fix a wrongful fallthrough NAND_ECC_SOFT when a valid HW ECC is available. Follow with two patches to make the code more readable.
Following error was seen in case of a valid HW ECC: nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda nand: Micron MT29F2G08ABAEAWP nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64 ------------[ cut here ]------------ WARNING: CPU: 0 PID: 1 at drivers/mtd/nand/raw/nand_base.c:5148 nand_scan_with_ids+0x12b8/0x1674 Modules linked in: CPU: 0 PID: 1 Comm: swapper Not tainted 5.9.0-rc5-next-20200914 #2 Hardware name: Atmel SAMA5 [<c010c1e0>] (unwind_backtrace) from [<c0109aac>] (show_stack+0x10/0x14) [<c0109aac>] (show_stack) from [<c07e9380>] (__warn+0xb8/0xd0) [<c07e9380>] (__warn) from [<c07e93f8>] (warn_slowpath_fmt+0x60/0xbc) [<c07e93f8>] (warn_slowpath_fmt) from [<c04cbc84>] (nand_scan_with_ids+0x12b8/0x1674) [<c04cbc84>] (nand_scan_with_ids) from [<c04d32e0>] (atmel_nand_controller_add_nand+0x54/0x100) [<c04d32e0>] (atmel_nand_controller_add_nand) from [<c04d36a8>] (atmel_nand_controller_add_nands+0x31c/0x60c) [<c04d36a8>] (atmel_nand_controller_add_nands) from [<c04d55c0>] (atmel_hsmc_nand_controller_probe+0x188/0x284) [<c04d55c0>] (atmel_hsmc_nand_controller_probe) from [<c04d40ec>] (atmel_nand_controller_probe+0x54/0x134) [<c04d40ec>] (atmel_nand_controller_probe) from [<c047ef2c>] (platform_drv_probe+0x48/0x98) [<c047ef2c>] (platform_drv_probe) from [<c047cfd0>] (really_probe+0x1e0/0x3b8) [<c047cfd0>] (really_probe) from [<c047d310>] (driver_probe_device+0x5c/0xb4) [<c047d310>] (driver_probe_device) from [<c047b3c0>] (bus_for_each_drv+0x80/0xc4) [<c047b3c0>] (bus_for_each_drv) from [<c047cd7c>] (__device_attach+0xe0/0x14c) [<c047cd7c>] (__device_attach) from [<c047c064>] (bus_probe_device+0x84/0x8c) [<c047c064>] (bus_probe_device) from [<c04790bc>] (device_add+0x408/0x774) [<c04790bc>] (device_add) from [<c05d742c>] (of_platform_device_create_pdata+0x98/0xd4) [<c05d742c>] (of_platform_device_create_pdata) from [<c05d7604>] (of_platform_bus_create+0x190/0x220) [<c05d7604>] (of_platform_bus_create) from [<c05d77c8>] (of_platform_populate+0x60/0xc0) [<c05d77c8>] (of_platform_populate) from [<c05dd6e4>] (atmel_ebi_probe+0x358/0x530) [<c05dd6e4>] (atmel_ebi_probe) from [<c047ef2c>] (platform_drv_probe+0x48/0x98) [<c047ef2c>] (platform_drv_probe) from [<c047cfd0>] (really_probe+0x1e0/0x3b8) [<c047cfd0>] (really_probe) from [<c047d310>] (driver_probe_device+0x5c/0xb4) [<c047d310>] (driver_probe_device) from [<c047d508>] (device_driver_attach+0x58/0x60) [<c047d508>] (device_driver_attach) from [<c047d568>] (__driver_attach+0x58/0xcc) [<c047d568>] (__driver_attach) from [<c047b2ec>] (bus_for_each_dev+0x74/0xb4) [<c047b2ec>] (bus_for_each_dev) from [<c047c258>] (bus_add_driver+0xf4/0x1d8) [<c047c258>] (bus_add_driver) from [<c047dd88>] (driver_register+0x74/0x108) [<c047dd88>] (driver_register) from [<c047f33c>] (__platform_driver_probe+0x68/0xc8) [<c047f33c>] (__platform_driver_probe) from [<c01016d0>] (do_one_initcall+0x7c/0x1cc) [<c01016d0>] (do_one_initcall) from [<c0b00f78>] (kernel_init_freeable+0x15c/0x1c0) [<c0b00f78>] (kernel_init_freeable) from [<c07f23a4>] (kernel_init+0x8/0x114) [<c07f23a4>] (kernel_init) from [<c0100148>] (ret_from_fork+0x14/0x2c) Exception stack(0xcf427fb0 to 0xcf427ff8) 7fa0: 00000000 00000000 00000000 00000000 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 ---[ end trace 7fad321bf58a54e1 ]--- atmel-nand-controller 10000000.ebi:nand-controller: NAND scan failed: -22 atmel-nand-controller: probe of 10000000.ebi:nand-controller failed with error -22
Tudor Ambarus (3): mtd: rawnand: Fix wrongful fallthrough NAND_ECC_SOFT mtd: rawnand: Introduce nand_set_ecc_on_host_ops() mtd: rawnand: Don't overwrite the error code from nand_set_ecc_soft_ops()
drivers/mtd/nand/raw/nand_base.c | 134 ++++++++++++++++--------------- 1 file changed, 70 insertions(+), 64 deletions(-)
-- 2.25.1
| |