From: Greg Kroah-Hartman Date: Thu, 27 Oct 2022 12:52:18 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v5.10.151~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=96b3d3c3bb5d93b5a384b2bcb4b7d6754adfe704;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: mmc-core-add-sd-card-quirk-for-broken-discard.patch --- diff --git a/queue-5.10/mmc-core-add-sd-card-quirk-for-broken-discard.patch b/queue-5.10/mmc-core-add-sd-card-quirk-for-broken-discard.patch new file mode 100644 index 00000000000..e73d2a67b8e --- /dev/null +++ b/queue-5.10/mmc-core-add-sd-card-quirk-for-broken-discard.patch @@ -0,0 +1,98 @@ +From 07d2872bf4c864eb83d034263c155746a2fb7a3b Mon Sep 17 00:00:00 2001 +From: Avri Altman +Date: Wed, 28 Sep 2022 12:57:44 +0300 +Subject: mmc: core: Add SD card quirk for broken discard + +From: Avri Altman + +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 +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 +Signed-off-by: Greg Kroah-Hartman +--- + 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 */ + diff --git a/queue-5.10/series b/queue-5.10/series index fe1aa889424..3875a63f4be 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -74,3 +74,4 @@ hv_netvsc-fix-race-between-vf-offering-and-vf-association-message-from-host.patc acpi-video-force-backlight-native-for-more-tongfang-devices.patch x86-kconfig-drop-check-for-mabi-ms-for-config_efi_stub.patch makefile.debug-re-enable-debug-info-for-.s-files.patch +mmc-core-add-sd-card-quirk-for-broken-discard.patch