ipq807x: 6.1: fix I/O WRITE_ZEROES errors on some eMMC devices
[openwrt/staging/jow.git] / target / linux / ipq807x / patches-6.1 / 0133-mmc-core-disable-TRIM-on-Kingston-EMMC04G-M627.patch
1 From 26c97b6fb7d291f55e0e4a410d266d1355118ed9 Mon Sep 17 00:00:00 2001
2 From: Robert Marko <robimarko@gmail.com>
3 Date: Wed, 31 May 2023 20:21:26 +0200
4 Subject: [PATCH] mmc: core: disable TRIM on Kingston EMMC04G-M627
5
6 It seems that Kingston EMMC04G-M627 despite advertising TRIM support does
7 not work when the core is trying to use REQ_OP_WRITE_ZEROES.
8
9 We are seeing I/O errors in OpenWrt under 6.1 on Zyxel NBG7815 that we did
10 not previously have and tracked it down to REQ_OP_WRITE_ZEROES.
11
12 Trying to use fstrim seems to also throw errors like:
13 [93010.835112] I/O error, dev loop0, sector 16902 op 0x3:(DISCARD) flags 0x800 phys_seg 1 prio class 2
14
15 Disabling TRIM makes the error go away, so lets add a quirk for this eMMC
16 to disable TRIM.
17
18 Signed-off-by: Robert Marko <robimarko@gmail.com>
19 ---
20 drivers/mmc/core/quirks.h | 7 +++++++
21 1 file changed, 7 insertions(+)
22
23 --- a/drivers/mmc/core/quirks.h
24 +++ b/drivers/mmc/core/quirks.h
25 @@ -108,6 +108,13 @@ static const struct mmc_fixup __maybe_un
26 MMC_QUIRK_TRIM_BROKEN),
27
28 /*
29 + * Kingston EMMC04G-M627 advertises TRIM but it does not seems to
30 + * support being used to offload WRITE_ZEROES.
31 + */
32 + MMC_FIXUP("M62704", CID_MANFID_KINGSTON, 0x0100, add_quirk_mmc,
33 + MMC_QUIRK_TRIM_BROKEN),
34 +
35 + /*
36 * Some SD cards reports discard support while they don't
37 */
38 MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd,