[U-Boot] [PATCH] mtd: mxc_nand: Fix crash after MTD resync

Marek Vasut marex at denx.de
Tue Jul 2 23:11:32 CEST 2013


Dear Scott Wood,

> On 07/02/2013 03:57:58 PM, Marek Vasut wrote:
> > Dear Scott Wood,
> > 
> > > On 07/02/2013 10:11:55 AM, Marek Vasut wrote:
> > > > The driver triggered a BUG() in nand_base.c:3214/nand_scan_tail()
> > > > because the ecc.strength was incorrectly set in case of
> > 
> > NAND_ECC_HW
> > 
> > > > instead of NAND_ECC_HW_SYNDROME ECC mode.
> > > > 
> > > > Signed-off-by: Marek Vasut <marex at denx.de>
> > > > Cc: Benoît Thébaudeau <benoit.thebaudeau at advansee.com>
> > > > Cc: Fabio Estevam <fabio.estevam at freescale.com>
> > > > Cc: Scott Wood <scottwood at freescale.com>
> > > > ---
> > > > 
> > > >  drivers/mtd/nand/mxc_nand.c |    7 ++-----
> > > >  1 file changed, 2 insertions(+), 5 deletions(-)
> > > > 
> > > > diff --git a/drivers/mtd/nand/mxc_nand.c
> > 
> > b/drivers/mtd/nand/mxc_nand.c
> > 
> > > > index ac435f2..08c7b8b 100644
> > > > --- a/drivers/mtd/nand/mxc_nand.c
> > > > +++ b/drivers/mtd/nand/mxc_nand.c
> > > > @@ -1238,15 +1238,12 @@ int board_nand_init(struct nand_chip
> > 
> > *this)
> > 
> > > >  		this->ecc.write_oob = mxc_nand_write_oob_syndrome;
> > > >  		this->ecc.bytes = 9;
> > > >  		this->ecc.prepad = 7;
> > > > 
> > > > -	} else {
> > > > -		this->ecc.mode = NAND_ECC_HW;
> > > > -	}
> > > > -
> > > > -	if (this->ecc.mode == NAND_ECC_HW) {
> > > > 
> > > >  		if (is_mxc_nfc_1())
> > > >  		
> > > >  			this->ecc.strength = 1;
> > > >  		
> > > >  		else
> > > >  		
> > > >  			this->ecc.strength = 4;
> > > > 
> > > > +	} else {
> > > > +		this->ecc.mode = NAND_ECC_HW;
> > > > 
> > > >  	}
> > > 
> > > Where does ecc.strength now get set for the non-SYNDROME case?
> > 
> > Gone ;-) The strength only needs to be set for the SYNDROME case
> > according to
> > the code in nand_base.c .
> 
> Read it again.  Note the lack of a "break;" before "case
> NAND_ECC_HW_SYNDROME:".

Blargh. V2-time.

Best regards,
Marek Vasut


More information about the U-Boot mailing list