Archive-only list for patches
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Avri Altman <avri.altman@wdc.com>,
	Ulf Hansson <ulf.hansson@linaro.org>
Subject: [PATCH 5.10 71/73] mmc: core: Add SD card quirk for broken discard
Date: Fri, 28 Oct 2022 14:04:08 +0200	[thread overview]
Message-ID: <20221028120235.450120903@linuxfoundation.org> (raw)
In-Reply-To: <20221028120232.344548477@linuxfoundation.org>

From: Avri Altman <avri.altman@wdc.com>

commit 07d2872bf4c864eb83d034263c155746a2fb7a3b upstream.

Some SD-cards from Sandisk that are SDA-6.0 compliant reports they supports
discard, while they actually don't. This might cause mk2fs to fail while
trying to format the card and revert it to a read-only mode.

To fix this problem, let's add a card quirk (MMC_QUIRK_BROKEN_SD_DISCARD)
to indicate that we shall fall-back to use the legacy erase command
instead.

Signed-off-by: Avri Altman <avri.altman@wdc.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20220928095744.16455-1-avri.altman@wdc.com
[Ulf: Updated the commit message]
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/mmc/core/block.c  |    7 ++++++-
 drivers/mmc/core/card.h   |    6 ++++++
 drivers/mmc/core/quirks.h |    6 ++++++
 include/linux/mmc/card.h  |    1 +
 4 files changed, 19 insertions(+), 1 deletion(-)

--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -1069,6 +1069,11 @@ static void mmc_blk_issue_discard_rq(str
 	nr = blk_rq_sectors(req);
 
 	do {
+		unsigned int erase_arg = card->erase_arg;
+
+		if (mmc_card_broken_sd_discard(card))
+			erase_arg = SD_ERASE_ARG;
+
 		err = 0;
 		if (card->quirks & MMC_QUIRK_INAND_CMD38) {
 			err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
@@ -1079,7 +1084,7 @@ static void mmc_blk_issue_discard_rq(str
 					 card->ext_csd.generic_cmd6_time);
 		}
 		if (!err)
-			err = mmc_erase(card, from, nr, card->erase_arg);
+			err = mmc_erase(card, from, nr, erase_arg);
 	} while (err == -EIO && !mmc_blk_reset(md, card->host, type));
 	if (err)
 		status = BLK_STS_IOERR;
--- a/drivers/mmc/core/card.h
+++ b/drivers/mmc/core/card.h
@@ -70,6 +70,7 @@ struct mmc_fixup {
 #define EXT_CSD_REV_ANY (-1u)
 
 #define CID_MANFID_SANDISK      0x2
+#define CID_MANFID_SANDISK_SD   0x3
 #define CID_MANFID_ATP          0x9
 #define CID_MANFID_TOSHIBA      0x11
 #define CID_MANFID_MICRON       0x13
@@ -222,4 +223,9 @@ static inline int mmc_card_broken_hpi(co
 	return c->quirks & MMC_QUIRK_BROKEN_HPI;
 }
 
+static inline int mmc_card_broken_sd_discard(const struct mmc_card *c)
+{
+	return c->quirks & MMC_QUIRK_BROKEN_SD_DISCARD;
+}
+
 #endif
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
@@ -99,6 +99,12 @@ static const struct mmc_fixup __maybe_un
 	MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
 		  MMC_QUIRK_TRIM_BROKEN),
 
+	/*
+	 * Some SD cards reports discard support while they don't
+	 */
+	MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd,
+		  MMC_QUIRK_BROKEN_SD_DISCARD),
+
 	END_FIXUP
 };
 
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -270,6 +270,7 @@ struct mmc_card {
 #define MMC_QUIRK_BROKEN_IRQ_POLLING	(1<<11)	/* Polling SDIO_CCCR_INTx could create a fake interrupt */
 #define MMC_QUIRK_TRIM_BROKEN	(1<<12)		/* Skip trim */
 #define MMC_QUIRK_BROKEN_HPI	(1<<13)		/* Disable broken HPI support */
+#define MMC_QUIRK_BROKEN_SD_DISCARD	(1<<14)	/* Disable broken SD discard support */
 
 	bool			reenable_cmdq;	/* Re-enable Command Queue */
 



  parent reply	other threads:[~2022-10-28 12:07 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-28 12:02 [PATCH 5.10 00/73] 5.10.152-rc1 review Greg Kroah-Hartman
2022-10-28 12:02 ` [PATCH 5.10 01/73] ocfs2: clear dinode links count in case of error Greg Kroah-Hartman
2022-10-28 12:02 ` [PATCH 5.10 02/73] ocfs2: fix BUG when iput after ocfs2_mknod fails Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 03/73] selinux: enable use of both GFP_KERNEL and GFP_ATOMIC in convert_context() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 04/73] cpufreq: qcom: fix writes in read-only memory region Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 05/73] i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 06/73] x86/microcode/AMD: Apply the patch early on every logical thread Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 07/73] hwmon/coretemp: Handle large core ID value Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 08/73] ata: ahci-imx: Fix MODULE_ALIAS Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 09/73] ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 10/73] cpufreq: qcom: fix memory leak in error path Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 11/73] kvm: Add support for arch compat vm ioctls Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 12/73] KVM: arm64: vgic: Fix exit condition in scan_its_table() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 13/73] media: mceusb: set timeout to at least timeout provided Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 14/73] media: venus: dec: Handle the case where find_format fails Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 15/73] block: wbt: Remove unnecessary invoking of wbt_update_limits in wbt_init Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 16/73] blk-wbt: call rq_qos_add() after wb_normal is initialized Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 17/73] arm64: errata: Remove AES hwcap for COMPAT tasks Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 18/73] r8152: add PID for the Lenovo OneLink+ Dock Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 19/73] btrfs: fix processing of delayed data refs during backref walking Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 20/73] btrfs: fix processing of delayed tree block " Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 21/73] ACPI: extlog: Handle multiple records Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 22/73] tipc: Fix recognition of trial period Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 23/73] tipc: fix an information leak in tipc_topsrv_kern_subscr Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 24/73] i40e: Fix DMA mappings leak Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 25/73] HID: magicmouse: Do not set BTN_MOUSE on double report Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 26/73] sfc: Change VF mac via PF as first preference if available Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 27/73] net/atm: fix proc_mpc_write incorrect return value Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 28/73] net: phy: dp83867: Extend RX strap quirk for SGMII mode Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 29/73] tcp: Add num_closed_socks to struct sock_reuseport Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 30/73] udp: Update reuse->has_conns under reuseport_lock Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 31/73] cifs: Fix xid leak in cifs_copy_file_range() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 32/73] cifs: Fix xid leak in cifs_flock() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 33/73] cifs: Fix xid leak in cifs_ses_add_channel() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 34/73] net: hsr: avoid possible NULL deref in skb_clone() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 35/73] ionic: catch NULL pointer issue on reconfig Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 36/73] nvme-hwmon: rework to avoid devm allocation Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 37/73] nvme-hwmon: Return error code when registration fails Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 38/73] nvme-hwmon: consistently ignore errors from nvme_hwmon_init Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 39/73] nvme-hwmon: kmalloc the NVME SMART log buffer Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 40/73] net: sched: cake: fix null pointer access issue when cake_init() fails Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 41/73] net: sched: delete duplicate cleanup of backlog and qlen Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 42/73] net: sched: sfb: fix null pointer access issue when sfb_init() fails Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 43/73] sfc: include vport_id in filter spec hash and equal() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 44/73] net: hns: fix possible memory leak in hnae_ae_register() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 45/73] net: sched: fix race condition in qdisc_graft() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 46/73] net: phy: dp83822: disable MDI crossover status change interrupt Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 47/73] iommu/vt-d: Allow NVS regions in arch_rmrr_sanity_check() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 48/73] iommu/vt-d: Clean up si_domain in the init_dmars() error path Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 49/73] drm/virtio: Use appropriate atomic state in virtio_gpu_plane_cleanup_fb() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 50/73] dmaengine: mxs-dma: Remove the unused .id_table Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 51/73] dmaengine: mxs: use platform_driver_register Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 52/73] tracing: Simplify conditional compilation code in tracing_set_tracer() Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 53/73] tracing: Do not free snapshot if tracer is on cmdline Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 54/73] xen: assume XENFEAT_gnttab_map_avail_bits being set for pv guests Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 55/73] xen/gntdev: Accommodate VMA splitting Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 56/73] mmc: sdhci-tegra: Use actual clock rate for SW tuning correction Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 57/73] riscv: Add machine name to kernel boot log and stack dump output Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 58/73] riscv: always honor the CONFIG_CMDLINE_FORCE when parsing dtb Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 59/73] perf pmu: Validate raw event with sysfs exported format bits Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 60/73] perf: Skip and warn on unknown format configN attrs Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 61/73] fcntl: make F_GETOWN(EX) return 0 on dead owner task Greg Kroah-Hartman
2022-10-28 12:03 ` [PATCH 5.10 62/73] fcntl: fix potential deadlocks for &fown_struct.lock Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 63/73] arm64: dts: qcom: sc7180-trogdor: Fixup modem memory region Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 64/73] arm64: topology: move store_cpu_topology() to shared code Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 65/73] riscv: topology: fix default topology reporting Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 66/73] perf/x86/intel/pt: Relax address filter validation Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 67/73] hv_netvsc: Fix race between VF offering and VF association message from host Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 68/73] [PATCH v3] ACPI: video: Force backlight native for more TongFang devices Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 69/73] x86/Kconfig: Drop check for -mabi=ms for CONFIG_EFI_STUB Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 70/73] Makefile.debug: re-enable debug info for .S files Greg Kroah-Hartman
2022-10-28 12:04 ` Greg Kroah-Hartman [this message]
2022-10-28 12:04 ` [PATCH 5.10 72/73] blk-wbt: fix that rwb->wc is always set to 1 in wbt_init() Greg Kroah-Hartman
2022-10-28 12:04 ` [PATCH 5.10 73/73] mm: /proc/pid/smaps_rollup: fix no vmas null-deref Greg Kroah-Hartman
2022-10-28 13:55 ` [PATCH 5.10 00/73] 5.10.152-rc1 review Rudi Heitbaum
2022-10-28 17:14 ` Pavel Machek
2022-10-28 19:44 ` Sudip Mukherjee (Codethink)
2022-10-28 20:55 ` Florian Fainelli
2022-10-29  3:35 ` Guenter Roeck
2022-10-29  6:55 ` Naresh Kamboju

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221028120235.450120903@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=avri.altman@wdc.com \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox