Messages in this thread | | | Date | Wed, 22 Mar 2017 21:57:28 +0100 | From | Boris Brezillon <> | Subject | Re: [PATCH v2 11/53] mtd: nand: denali: fix bitflips calculation in handle_ecc() |
| |
On Wed, 22 Mar 2017 23:07:18 +0900 Masahiro Yamada <yamada.masahiro@socionext.com> wrote:
> + do { > + err_addr = ioread32(denali->flash_reg + ECC_ERROR_ADDRESS); > + err_sector = ECC_SECTOR(err_addr); > + err_byte = ECC_BYTE(err_addr); > + > + err_cor_info = ioread32(denali->flash_reg + ERR_CORRECTION_INFO); > + err_cor_value = ECC_CORRECTION_VALUE(err_cor_info); > + err_device = ECC_ERR_DEVICE(err_cor_info); > + > + /* reset the bitflip counter when crossing ECC sector */ > + if (err_sector != prev_sector) > + bitflips = 0; > + > + if (ECC_ERROR_UNCORRECTABLE(err_cor_info)) { > + /* > + * if the error is not correctable, need to look at the > + * page to see if it is an erased page. if so, then > + * it's not a real ECC error > + */ > + ret = -EBADMSG;
You should never return -EBADMSG directly. Just increment ecc_stats.failed and let the core return -EBADMSG to the upper layer.
| |