2024-10-31 09:09:44 +00:00
|
|
|
From c9b61d1d83073761871c7acba332216494e6f0bb Mon Sep 17 00:00:00 2001
|
2024-05-10 11:19:19 +00:00
|
|
|
From: Jonathan Bell <jonathan@raspberrypi.com>
|
|
|
|
Date: Mon, 8 Apr 2024 16:09:52 +0100
|
2024-10-31 09:09:44 +00:00
|
|
|
Subject: [PATCH 1260/1350] drivers: mmc: disable write-caching on Samsung 2023
|
2024-05-10 11:19:19 +00:00
|
|
|
model year SD cards
|
|
|
|
|
|
|
|
Samsung EVO Plus, Pro Plus and Evo Ultimate cards of this era appear to
|
|
|
|
have a broken cache-flush implementation when operating in CQ mode.
|
|
|
|
|
|
|
|
Unfortunately the cards seem to use a separate CID name string for every
|
|
|
|
variant and capacity, so nobble the cache feature for this MANFID, OEMID
|
|
|
|
and year. Turning this off seems to have negligible impact on
|
|
|
|
random-write throughput in non-CQ mode.
|
|
|
|
|
|
|
|
Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
|
|
|
---
|
|
|
|
drivers/mmc/core/card.h | 1 +
|
|
|
|
drivers/mmc/core/quirks.h | 8 ++++++++
|
|
|
|
2 files changed, 9 insertions(+)
|
|
|
|
|
|
|
|
--- a/drivers/mmc/core/card.h
|
|
|
|
+++ b/drivers/mmc/core/card.h
|
2024-12-14 20:02:19 +00:00
|
|
|
@@ -85,6 +85,7 @@ struct mmc_fixup {
|
|
|
|
#define CID_MANFID_GIGASTONE 0x12
|
2024-05-10 11:19:19 +00:00
|
|
|
#define CID_MANFID_MICRON 0x13
|
|
|
|
#define CID_MANFID_SAMSUNG 0x15
|
|
|
|
+#define CID_MANFID_SAMSUNG_SD 0x1b
|
|
|
|
#define CID_MANFID_APACER 0x27
|
|
|
|
#define CID_MANFID_KINGSTON 0x70
|
|
|
|
#define CID_MANFID_HYNIX 0x90
|
|
|
|
--- a/drivers/mmc/core/quirks.h
|
|
|
|
+++ b/drivers/mmc/core/quirks.h
|
2024-12-14 20:02:19 +00:00
|
|
|
@@ -34,6 +34,14 @@ static const struct mmc_fixup __maybe_un
|
|
|
|
MMC_QUIRK_BROKEN_SD_CACHE | MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY,
|
|
|
|
EXT_CSD_REV_ANY),
|
2024-05-10 11:19:19 +00:00
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Samsung Pro Plus/EVO Plus/Pro Ultimate SD cards (2023) claim to cache
|
|
|
|
+ * flush OK, but become unresponsive afterwards.
|
|
|
|
+ */
|
|
|
|
+ _FIXUP_EXT(CID_NAME_ANY, CID_MANFID_SAMSUNG_SD, 0x534d, 2023, CID_MONTH_ANY,
|
|
|
|
+ 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
|
|
|
|
+ MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
|
|
|
|
+
|
|
|
|
END_FIXUP
|
|
|
|
};
|
|
|
|
|