Uncorrectable bitflips with Linux 4.12 on SAMA5D2

Boris Brezillon boris.brezillon at free-electrons.com
Mon Jul 17 10:48:09 PDT 2017


+Ludovic, Nicolas and Alexandre

Hi Romain,

Le Mon, 17 Jul 2017 18:11:26 +0200,
Romain Izard <romain.izard.pro at gmail.com> a écrit :

> Hello,
> 
> On a custom board based on Microchip's SAMA5D2 SoC, I am encountering
> ECC problems with the NAND Flash controller. The board is currently
> working with Linux v4.9.x, but it does not with Linux 4.12.
> 
> Some pages on the NAND Flash memory chip of the device have bitflips.
> With Linux 4.9.x, the bitflips are fixed by the PMECC code, but with
> Linux 4.12, the errors are reported as uncorrectable.
> 
> From my end, I updated the board's device tree to include the
> sama5d2.dtsi as it exists in Linux 4.12, but the rest of the file is
> the same as for Linux 4.9. From my understanding, it should be
> sufficient as the legacy DTB binding for the NAND controller is
> supported.

I know Ludovic add some problems with the NAND controller on sama5d2,
but it was with the new bindings (see the fixes here [1]).

Your problem seems a bit different since you're using the backward
compat code.

Could you dump PMECC/NFC regs when booting 4.9 and 4.12, and see if
there's a difference?

> 
> The relevant extract is:
> 
>         nand0: nand at 80000000 {
>             pinctrl-names = "default";
>             pinctrl-0 = <&pinctrl_nand_default>;
>             status = "okay";
>             nand-ecc-mode = "hw";
>             atmel,pmecc-cap = <8>;
>             atmel,pmecc-sector-size = <512>;
>             /delete-property/ atmel,nand-has-dma;
>         };
> 
> The attached files show the same block read through nanddump, with
> Linux 4.9 and Linux 4.12

Yep, the dumps show 2 identical pages except for the bitflip in ECC
block 2, but I can't tell from this dump why PMECC fails to correct
bitflips.

Really sorry that you have to debug this problem, but I don't have a
sama5d2 platform with a NAND on it and couldn't test my
modification on this platform :-/.

Thanks,

Boris

[1]https://lkml.org/lkml/2017/7/11/95



More information about the linux-arm-kernel mailing list