public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* nand_ecc_is_strong_enough() doesn't trigger
@ 2024-04-11 10:06 Sascha Hauer
  2024-05-07 12:30 ` Miquel Raynal
  0 siblings, 1 reply; 2+ messages in thread
From: Sascha Hauer @ 2024-04-11 10:06 UTC (permalink / raw)
  To: linux-mtd; +Cc: miquel.raynal

Hi,

I am currently working with a NAND chip requiring 4 bit correction per
512 byte data while my NAND driver only supports 1 bit correction, so
I would assume this to trigger:

	/* ECC sanity check: warn if it's too weak */
	if (!nand_ecc_is_strong_enough(&chip->base))
		pr_warn("WARNING: %s: the ECC used on your system (%db/%dB) is too weak compared to the one required by the NAND chip (%db/%dB)\n",
                        mtd->name, chip->ecc.strength, chip->ecc.size,
                        nanddev_get_ecc_requirements(&chip->base)->strength,
                        nanddev_get_ecc_requirements(&chip->base)->step_size);

nand_ecc_is_strong_enough() works on nand->ecc.ctx.conf.step_size, but
this only ever seems to be initialized by the various ecc-sw-*
algorithms.

This was changed in 8c126720fe10 ("mtd: rawnand: Use the ECC framework
nand_ecc_is_strong_enough() helper"). Before this patch the initialized
values in &(struct nand_chip *chip)->ecc were used (and which are still
used in the warning message above).

Do you have a direction how this should be fixed?

Thanks
 Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: nand_ecc_is_strong_enough() doesn't trigger
  2024-04-11 10:06 nand_ecc_is_strong_enough() doesn't trigger Sascha Hauer
@ 2024-05-07 12:30 ` Miquel Raynal
  0 siblings, 0 replies; 2+ messages in thread
From: Miquel Raynal @ 2024-05-07 12:30 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: linux-mtd

Hi,

s.hauer@pengutronix.de wrote on Thu, 11 Apr 2024 12:06:30 +0200:

> Hi,
> 
> I am currently working with a NAND chip requiring 4 bit correction per
> 512 byte data while my NAND driver only supports 1 bit correction, so
> I would assume this to trigger:
> 
> 	/* ECC sanity check: warn if it's too weak */
> 	if (!nand_ecc_is_strong_enough(&chip->base))
> 		pr_warn("WARNING: %s: the ECC used on your system (%db/%dB) is too weak compared to the one required by the NAND chip (%db/%dB)\n",
>                         mtd->name, chip->ecc.strength, chip->ecc.size,
>                         nanddev_get_ecc_requirements(&chip->base)->strength,
>                         nanddev_get_ecc_requirements(&chip->base)->step_size);
> 
> nand_ecc_is_strong_enough() works on nand->ecc.ctx.conf.step_size, but
> this only ever seems to be initialized by the various ecc-sw-*
> algorithms.
> 
> This was changed in 8c126720fe10 ("mtd: rawnand: Use the ECC framework
> nand_ecc_is_strong_enough() helper"). Before this patch the initialized
> values in &(struct nand_chip *chip)->ecc were used (and which are still
> used in the warning message above).
> 
> Do you have a direction how this should be fixed?

I looked into it, we need to make sure the ECC values are propagated to
the upper layers. If other people are following the thread, here is the
proposal:
https://lore.kernel.org/linux-mtd/20240507085842.108844-1-miquel.raynal@bootlin.com/T/#u

Thanks,
Miquèl

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-05-07 12:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-11 10:06 nand_ecc_is_strong_enough() doesn't trigger Sascha Hauer
2024-05-07 12:30 ` Miquel Raynal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox