Skip to contentSkip to conversation

mtd: nand: sunxi: Fix ECC strength choice

PATCH New Miquel Raynal 2 participants 3 messages Jan 24, 2018 – Jan 25, 2018

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mtd: nand: sunxi: Fix ECC strength choice

When the requested ECC strength does not exactly match the strengths supported by the ECC engine, the driver is selecting the closest strength meeting the 'selected_strength > requested_strength' constraint. Fix the fact that, in this particular case, ecc->strength value was not updated to match the 'selected_strength'.

For instance, one can encounter this issue when no ECC requirement is filled in the device tree while the NAND chip minimum requirement is not a strength/step_size combo natively supported by the ECC engine.

---
 drivers/mtd/nand/sunxi_nand.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/mtd/nand/sunxi_nand.c +7 -1
index 82244be3e766..958974821582 100644
@@ -1853,8 +1853,14 @@ static int sunxi_nand_hw_common_ecc_ctrl_init(struct mtd_info *mtd,
 
 	/* Add ECC info retrieval from DT */
 	for (i = 0; i < ARRAY_SIZE(strengths); i++) {
-		if (ecc->strength <= strengths[i])
+		if (ecc->strength <= strengths[i]) {
+			/*
+			 * Update ecc->strength value with the actual strength
+			 * that will be used by the ECC engine.
+			 */
+			ecc->strength = strengths[i];
 			break;
+		}
 	}
 
 	if (i >= ARRAY_SIZE(strengths)) {
Signature · 1 line
2.11.0
#1 lore raw

PATCH 1/1 mtd: nand: sunxi: Fix ECC strength choice

Hello,

Quoted 10 lines · On Wed, 24 Jan 2018 23:49:31 +0100 Miquel Raynal…

When the requested ECC strength does not exactly match the strengths supported by the ECC engine, the driver is selecting the closest strength meeting the 'selected_strength > requested_strength' constraint. Fix the fact that, in this particular case, ecc->strength value was not updated to match the 'selected_strength'.

For instance, one can encounter this issue when no ECC requirement is filled in the device tree while the NAND chip minimum requirement is not a strength/step_size combo natively supported by the ECC engine.

I forgot to add the Fixes/CC tags, but it seems that this problem has always been out there...

Fixes 1fef62c1423b ("mtd: nand: add sunxi NAND flash controller

support")
CC: stable at vger.kernel.org

Quoted 2 lines

I will wait a review before sending a v2.

Thanks,
Miqu?l

#2 lore raw

PATCH 1/1 mtd: nand: sunxi: Fix ECC strength choice

Quoted 16 lines · On Wed, 24 Jan 2018 23:59:36 +0100 Miquel Raynal…

Hello,

Quoted 10 lines · On Wed, 24 Jan 2018 23:49:31 +0100 Miquel Raynal…

When the requested ECC strength does not exactly match the strengths supported by the ECC engine, the driver is selecting the closest strength meeting the 'selected_strength > requested_strength' constraint. Fix the fact that, in this particular case, ecc->strength value was not updated to match the 'selected_strength'.

For instance, one can encounter this issue when no ECC requirement is filled in the device tree while the NAND chip minimum requirement is not a strength/step_size combo natively supported by the ECC engine.

Quoted 6 lines

I forgot to add the Fixes/CC tags, but it seems that this problem has always been out there...

Fixes 1fef62c1423b ("mtd: nand: add sunxi NAND flash controller

support")
CC: stable at vger.kernel.org

No need to send a new version. I added the Fixes+stable tags when applying.

Thanks,

Boris

Quoted 8 lines
Quoted 3 lines

I will wait a review before sending a v2.

Thanks,
Miqu?l