Hi xiangsheng.hou, xiangsheng.hou@xxxxxxxxxxxx wrote on Wed, 13 Oct 2021 17:15:49 +0800: > Hi, > > On Fri, 2021-10-08 at 18:22 +0200, Miquel Raynal wrote: > > > > +static int mxic_ecc_count_biterrs(struct mxic_ecc_engine *eng, > > struct mtd_info *mtd) > > +{ > > + struct device *dev = eng->dev; > > + unsigned int max_bf = 0; > > + int step; > > + > > + for (step = 0; step < eng->steps; step++) { > > + u8 stat = eng->status[step]; > > + > > + if (stat == NO_ERR) { > > + dev_dbg(dev, "ECC step %d: no error\n", step); > > + } else if (stat == ERASED_CHUNK) { > > + dev_dbg(dev, "ECC step %d: erased\n", step); > > + } else if (stat == UNCORR_ERR || stat > MAX_CORR_ERR) { > > + dev_dbg(dev, "ECC step %d: uncorrectable\n", > > step); > > + mtd->ecc_stats.failed++; > > + } else { > > + dev_dbg(dev, "ECC step %d: %d bits > > corrected\n", > > + step, stat); > > + max_bf = max_t(unsigned int, max_bf, stat); > > + mtd->ecc_stats.corrected += stat; > > + } > > + } > > + > > + return max_bf; > > +} > > In spinand_mtd_read() function, rely on the return value -EBADMSG to > check whether ecc failed. Therefore, maybe there also need return this > value in mxic_ecc_count_biterrs() function when uncorrectable ecc > error? True, I'll fix this. Thanks, Miquèl