linux_dsm_epyc7002/drivers/mtd/nand/raw
Martin Kepplinger d5d27fd982 mtd: rawnand: gpmi: fix MX28 bus master lockup problem
Disable BCH soft reset according to MX23 erratum #2847 ("BCH soft
reset may cause bus master lock up") for MX28 too. It has the same
problem.

Observed problem: once per 100,000+ MX28 reboots NAND read failed on
DMA timeout errors:
[    1.770823] UBI: attaching mtd3 to ubi0
[    2.768088] gpmi_nand: DMA timeout, last DMA :1
[    3.958087] gpmi_nand: BCH timeout, last DMA :1
[    4.156033] gpmi_nand: Error in ECC-based read: -110
[    4.161136] UBI warning: ubi_io_read: error -110 while reading 64
bytes from PEB 0:0, read only 0 bytes, retry
[    4.171283] step 1 error
[    4.173846] gpmi_nand: Chip: 0, Error -1

Without BCH soft reset we successfully executed 1,000,000 MX28 reboots.

I have a quote from NXP regarding this problem, from July 18th 2016:

"As the i.MX23 and i.MX28 are of the same generation, they share many
characteristics. Unfortunately, also the erratas may be shared.
In case of the documented erratas and the workarounds, you can also
apply the workaround solution of one device on the other one. This have
been reported, but I’m afraid that there are not an estimated date for
updating the Errata documents.
Please accept our apologies for any inconveniences this may cause."

Fixes: 6f2a6a5256 ("mtd: nand: gpmi: reset BCH earlier, too, to avoid NAND startup problems")
Cc: stable@vger.kernel.org
Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com>
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Acked-by: Han Xu <han.xu@nxp.com>
Signed-off-by: Boris Brezillon <bbrezillon@kernel.org>
2019-02-06 09:39:22 +01:00
..
atmel Core changes: 2018-12-18 20:00:52 +01:00
bcm47xxnflash mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
brcmnand mtd: rawnand: Deprecate ->dev_ready() and ->waitfunc() 2018-10-03 11:12:25 +02:00
gpmi-nand mtd: rawnand: gpmi: fix MX28 bus master lockup problem 2019-02-06 09:39:22 +01:00
ams-delta.c mtd: rawnand: ams-delta: Use GPIO API for data I/O 2018-12-07 10:38:27 +01:00
au1550nd.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
cafe_nand.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
cmx270_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
cs553x_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
davinci_nand.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
denali_dt.c mtd: rawnand: denali: use SPDX-License-Identifier and fix license mismatch 2018-09-04 23:37:40 +02:00
denali_pci.c mtd: rawnand: denali: use SPDX-License-Identifier and fix license mismatch 2018-09-04 23:37:40 +02:00
denali.c mtd: rawnand: denali: get ->setup_data_interface() working again 2019-01-18 10:27:01 +01:00
denali.h mtd: rawnand: denali: include <linux/bits.h> instead of <linux/bitops.h> 2018-11-05 10:57:07 +01:00
diskonchip.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
fsl_elbc_nand.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
fsl_ifc_nand.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
fsl_upm.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
fsmc_nand.c mtd: rawnand: fsmc: Keep bank enable bit set 2019-01-15 18:29:53 +01:00
gpio.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
hisi504_nand.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
internals.h mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops 2018-12-07 10:38:27 +01:00
jz4740_nand.c mtd: nand: jz4740: fix '__iomem *' vs. '* __iomem' 2019-01-18 10:26:46 +01:00
jz4780_bch.c mtd: rawnand: jz4780: annotate implicit fall throughs 2018-12-07 11:07:19 +01:00
jz4780_bch.h
jz4780_nand.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
Kconfig mtd: rawnand: ams-delta: Allow this driver to be compiled when COMPILE_TEST=y 2018-12-07 10:38:24 +01:00
lpc32xx_mlc.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
lpc32xx_slc.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
Makefile mtd: rawnand: ESMT: retrieve ECC requirements from 5th id byte 2018-10-03 11:12:25 +02:00
marvell_nand.c mtd: rawnand: marvell: prevent timeouts on a loaded machine 2018-12-15 14:49:25 +01:00
mpc5121_nfc.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
mtk_ecc.c mtd: rawnand: mtk: use of_device_get_match_data() 2018-04-29 08:56:41 +02:00
mtk_ecc.h
mtk_nand.c mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops 2018-12-07 10:38:27 +01:00
mxc_nand.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
nand_amd.c mtd: rawnand: Keep all internal stuff private 2018-10-03 11:12:25 +02:00
nand_base.c mtd: rawnand: fix kernel-doc warnings 2019-01-31 12:31:09 +01:00
nand_bbt.c mtd: rawnand: fix kernel-doc warnings 2019-01-31 12:31:09 +01:00
nand_bch.c mtd: rawnand: Pass a nand_chip object to ecc->correct() 2018-10-03 11:12:25 +02:00
nand_ecc.c mtd: rawnand: Allow selection of ECC byte ordering at runtime 2018-10-03 11:12:25 +02:00
nand_esmt.c mtd: rawnand: ESMT: retrieve ECC requirements from 5th id byte 2018-10-03 11:12:25 +02:00
nand_hynix.c mtd: rawnand: Move the ->exec_op() method to nand_controller_ops 2018-12-07 10:38:27 +01:00
nand_ids.c mtd: rawnand: ESMT: retrieve ECC requirements from 5th id byte 2018-10-03 11:12:25 +02:00
nand_jedec.c mtd: rawnand: Fix JEDEC detection 2018-12-14 22:45:13 +01:00
nand_legacy.c mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops 2018-12-07 10:38:27 +01:00
nand_macronix.c mtd: rawnand: Flag 1.8V AC chips with a broken GET_FEATURES(TIMINGS) 2018-11-06 10:18:01 +01:00
nand_micron.c mtd: rawnand: Keep all internal stuff private 2018-10-03 11:12:25 +02:00
nand_onfi.c mtd: rawnand: Move ONFI code to nand_onfi.c 2018-10-03 11:12:25 +02:00
nand_samsung.c mtd: rawnand: Keep all internal stuff private 2018-10-03 11:12:25 +02:00
nand_timings.c mtd: rawnand: Keep all internal stuff private 2018-10-03 11:12:25 +02:00
nand_toshiba.c mtd: rawnand: toshiba: Pass a single nand_chip object to the status helper 2018-10-08 10:00:10 +02:00
nandsim.c Merge tag 'nand/for-4.21' of git://git.infradead.org/linux-mtd into mtd/next 2018-12-18 19:59:16 +01:00
ndfc.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
nuc900_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
omap2.c mtd: rawnand: omap2: Pass the parent of pdev to dma_request_chan() 2018-12-14 22:45:16 +01:00
omap_elm.c
orion_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
oxnas_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
pasemi_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
plat_nand.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
qcom_nandc.c mtd: rawnand: qcom: fix memory corruption that causes panic 2019-01-08 12:33:24 +01:00
r852.c mtd: rawnand: Add nand_[de]select_target() helpers 2018-12-07 10:38:25 +01:00
r852.h mtd: rawnand: r852: fix spelling mistake "card_registred" -> "card_registered" 2018-10-08 10:00:10 +02:00
s3c2410.c mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops 2018-12-07 10:38:27 +01:00
sh_flctl.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
sharpsl.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
sm_common.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
sm_common.h
socrates_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
sunxi_nand.c mtd: rawnand: sunxi: Write pageprog related opcodes to WCMD_SET 2018-12-17 14:06:26 +01:00
tango_nand.c mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops 2018-12-07 10:38:27 +01:00
tegra_nand.c mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops 2018-12-07 10:38:27 +01:00
tmio_nand.c mtd: rawnand: Allow selection of ECC byte ordering at runtime 2018-10-03 11:12:25 +02:00
txx9ndfmc.c mtd: rawnand: Allow selection of ECC byte ordering at runtime 2018-10-03 11:12:25 +02:00
vf610_nfc.c mtd: rawnand: vf610: Add an SPDX tag to replace the license text 2018-12-07 10:58:03 +01:00
xway_nand.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00