2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-23 12:43:55 +08:00
linux-next/drivers/mtd/nand
Sascha Hauer fdf2e82105 mtd: nand: gpmi: Fix failure when a erased page has a bitflip at BBM
When erased subpages are read then the BCH decoder returns STATUS_ERASED
if they are all empty, or STATUS_UNCORRECTABLE if there are bitflips.
When there are bitflips, we have to set these bits again to show the
upper layers a completely erased page. When a bitflip happens in the
exact byte where the bad block marker is, then this byte is swapped
with another byte in block_mark_swapping(). The correction code then
detects a bitflip in another subpage and no longer corrects the bitflip
where it really happens.

Correct this behaviour by calling block_mark_swapping() after the
bitflips have been corrected.

In our case UBIFS failed with this bug because it expects erased
pages to be really empty:

UBIFS error (pid 187): ubifs_scan: corrupt empty space at LEB 36:118735
UBIFS error (pid 187): ubifs_scanned_corruption: corruption at LEB 36:118735
UBIFS error (pid 187): ubifs_scanned_corruption: first 8192 bytes from LEB 36:118735
UBIFS error (pid 187): ubifs_scan: LEB 36 scanning failed
UBIFS error (pid 187): do_commit: commit failed, error -117

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Richard Weinberger <richard@nod.at>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
2017-12-15 22:26:15 +01:00
..
atmel Core changes: 2017-11-02 22:30:37 +01:00
bcm47xxnflash License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
brcmnand License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
gpmi-nand mtd: nand: gpmi: Fix failure when a erased page has a bitflip at BBM 2017-12-15 22:26:15 +01:00
ams-delta.c mtd: constify mtd_partition 2017-11-06 23:26:01 +01:00
au1550nd.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
bf5xx_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
cafe_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
cmx270_nand.c mtd: constify mtd_partition 2017-11-06 23:26:01 +01:00
cs553x_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
davinci_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
denali_dt.c mtd: nand: denali: clean up comments 2017-09-22 09:04:32 +02:00
denali_pci.c mtd: nand: denali: clean up comments 2017-09-22 09:04:32 +02:00
denali.c mtd: nand: denali: fix setup_data_interface to meet tCCS delay 2017-10-07 11:28:06 +02:00
denali.h mtd: nand: denali: change the setup_dma choice into hook 2017-09-22 09:04:40 +02:00
diskonchip.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
docg4.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_elbc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_ifc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_upm.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsmc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
gpio.c mtd: nand: gpio: Convert to use GPIO descriptors 2017-10-07 11:27:48 +02:00
hisi504_nand.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
jz4740_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
jz4780_bch.c mtd: nand: jz4780: Update MODULE_AUTHOR email address 2016-07-11 08:40:19 +02:00
jz4780_bch.h mtd: nand: jz4780: driver for NAND devices on JZ4780 SoCs 2016-01-07 09:35:11 -08:00
jz4780_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
Kconfig mtd: nand: pxa3xx_nand: Update Kconfig information 2017-10-07 11:28:06 +02:00
lpc32xx_mlc.c mtd: nand: lpc32xx_mlc: Fix an error handling path in lpc32xx_nand_probe() 2017-09-18 12:07:30 +02:00
lpc32xx_slc.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
Makefile This pull request contains the following core changes: 2017-11-22 20:46:06 -10:00
mpc5121_nfc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
mtk_ecc.c mtd: nand: mtk: fix infinite ECC decode IRQ issue 2017-10-30 09:35:04 +01:00
mtk_ecc.h mtd: nand: mediatek: add support for different MTK NAND FLASH Controller IP 2017-06-01 10:09:37 +02:00
mtk_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
mxc_nand.c mtd: nand: mxc: use dev_dbg to print debug messages 2017-10-16 17:57:08 +02:00
nand_amd.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_base.c Core changes: 2017-11-02 22:30:37 +01:00
nand_bbt.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_bch.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_ecc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_hynix.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
nand_ids.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_macronix.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_micron.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_samsung.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_timings.c This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
nand_toshiba.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nandsim.c mtd: Avoid probe failures when mtd->dbg.dfs_dir is invalid 2017-11-13 22:07:31 +01:00
ndfc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nuc900_nand.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
omap2.c mtd: nand: omap2: Fix subpage write 2017-10-27 16:53:23 +02:00
omap_elm.c mtd: omap_elm: print interrupt resource using %pr 2015-12-18 10:16:17 -08:00
orion_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
oxnas_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
pasemi_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
plat_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
pxa3xx_nand.c mtd: nand: pxa3xx: enable NAND controller if the SoC needs it 2017-10-07 11:28:07 +02:00
qcom_nandc.c mtd: nand: qcom: support for command descriptor formation 2017-10-07 11:28:05 +02:00
r852.c mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
r852.h mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
s3c2410.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sh_flctl.c mtd: nand: sh_flctl: Use of_device_get_match_data() helper 2017-10-07 11:28:07 +02:00
sharpsl.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
sm_common.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sm_common.h mtd: use __packed shorthand 2014-08-19 11:53:08 -07:00
socrates_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sunxi_nand.c This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
tango_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
tmio_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
txx9ndfmc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
vf610_nfc.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
xway_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00