[PATCH] mtd: nand: reduce the warning noise when the ECC is too weak

Brian Norris computersforpeace at gmail.com
Sun Jul 13 22:22:59 PDT 2014


On Wed, Jul 02, 2014 at 03:16:32PM +0200, Thomas Petazzoni wrote:
> In commit 67a9ad9b8a6f ("mtd: nand: Warn the user if the selected ECC
> strength is too weak"), a check was added to inform the user when the
> ECC used for a NAND device is weaker than the recommended ECC
> advertised by the NAND chip. However, the warning uses WARN_ON(),
> which has two undesirable side-effects:
> 
>  - It just prints to the kernel log the fact that there is a warning
>    in this file, at this line, but it doesn't explain anything about
>    the warning itself.
> 
>  - It dumps a stack trace which is very noisy, for something that the
>    user is most likely not able to fix. If a certain ECC used by the
>    kernel is weaker than the advertised one, it's most likely to make
>    sure the kernel uses an ECC that is compatible with the one used by
>    the bootloader, and changing the bootloader may not necessarily be
>    easy. Therefore, normal users would not be able to do anything to
>    fix this very noisy warning, and will have to suffer from it at
>    every kernel boot. At least every time I see this stack trace in my
>    kernel boot log, I wonder what new thing is broken, just to realize
>    that it's once again this NAND ECC warning.
> 
> Therefore, this commit turns:
> 
> ------------[ cut here ]------------
> WARNING: CPU: 0 PID: 1 at /home/thomas/projets/linux-2.6/drivers/mtd/nand/nand_base.c:4051 nand_scan_tail+0x538/0x780()
> Modules linked in:
> CPU: 0 PID: 1 Comm: swapper Not tainted 3.16.0-rc3-dirty #4
> [<c000e3dc>] (unwind_backtrace) from [<c000bee4>] (show_stack+0x10/0x14)
> [<c000bee4>] (show_stack) from [<c0018180>] (warn_slowpath_common+0x6c/0x8c)
> [<c0018180>] (warn_slowpath_common) from [<c001823c>] (warn_slowpath_null+0x1c/0x24)
> [<c001823c>] (warn_slowpath_null) from [<c02c50cc>] (nand_scan_tail+0x538/0x780)
> [<c02c50cc>] (nand_scan_tail) from [<c0639f78>] (orion_nand_probe+0x224/0x2e4)
> [<c0639f78>] (orion_nand_probe) from [<c026da00>] (platform_drv_probe+0x18/0x4c)
> [<c026da00>] (platform_drv_probe) from [<c026c1f4>] (really_probe+0x80/0x218)
> [<c026c1f4>] (really_probe) from [<c026c47c>] (__driver_attach+0x98/0x9c)
> [<c026c47c>] (__driver_attach) from [<c026a8f0>] (bus_for_each_dev+0x64/0x94)
> [<c026a8f0>] (bus_for_each_dev) from [<c026bae4>] (bus_add_driver+0x144/0x1ec)
> [<c026bae4>] (bus_add_driver) from [<c026cb00>] (driver_register+0x78/0xf8)
> [<c026cb00>] (driver_register) from [<c026da5c>] (platform_driver_probe+0x20/0xb8)
> [<c026da5c>] (platform_driver_probe) from [<c00088b8>] (do_one_initcall+0x80/0x1d8)
> [<c00088b8>] (do_one_initcall) from [<c0620c9c>] (kernel_init_freeable+0xf4/0x1b4)
> [<c0620c9c>] (kernel_init_freeable) from [<c049a098>] (kernel_init+0x8/0xec)
> [<c049a098>] (kernel_init) from [<c00095f0>] (ret_from_fork+0x14/0x24)
> ---[ end trace 62f87d875aceccb4 ]---
> 
> Into the much shorter, and much more useful:
> 
> nand: WARNING: MT29F2G08ABAEAWP: the ECC used on your system is too weak compared to the one required by the NAND chip
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>

Pushed to linux-mtd.git, for 3.16 I think. Thanks!

Brian



More information about the linux-mtd mailing list