From: Keita Aihara <keita.aihara@sony.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Jonathan Bell <jonathan@raspberrypi.com>,
Tim.Bird@sony.com, Shingo.Takeuchi@sony.com,
Masaya.Takahashi@sony.com, keita.aihara@sony.com,
linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mmc: core: apply SD quirks earlier during probe
Date: Tue, 6 Aug 2024 10:36:10 +0900 [thread overview]
Message-ID: <20240806013610.GA3438728@sony.com> (raw)
In-Reply-To: <CAPDyKFoTdMpvuXR16OqY8G6t_4jCJDW9+wz=_fBc=kZSL1KbqQ@mail.gmail.com>
On Mon, Aug 05, 2024 at 12:14:25PM +0200, Ulf Hansson wrote:
> On Fri, 2 Aug 2024 at 05:21, Keita Aihara <keita.aihara@sony.com> wrote:
> >
> > Applying MMC_QUIRK_BROKEN_SD_CACHE is broken, as the card's extended
> > registers are parsed prior to the quirk being applied in mmc_blk.
>
> In what way is it a problem to read the extended registers first?
SD quirks are referenced by mmc_card_broken_sd_cache() in
sd_parse_ext_reg_perf(). If the quirk is set, SD_EXT_PERF_CACHE is not
set to card->ext_perf.feature_support and the cache support will not be
enabled.
Therefore, SD quirks should be initialized before parsing the extension
registers.
>
> >
> > Split this out into an SD-specific list of quirks and apply in
> > mmc_sd_init_card instead.
> >
> > Fixes: c467c8f08185 ("mmc: Add MMC_QUIRK_BROKEN_SD_CACHE for Kingston Canvas Go Plus from 11/2019")
> > Authored-by: Jonathan Bell <jonathan@raspberrypi.com>
> > Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
> > Signed-off-by: Keita Aihara <keita.aihara@sony.com>
>
> Kind regards
> Uffe
Best regards,
Keita Aihara
>
> > ---
> > drivers/mmc/core/quirks.h | 22 +++++++++++++---------
> > drivers/mmc/core/sd.c | 4 ++++
> > 2 files changed, 17 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
> > index cca71867bc4a..92905fc46436 100644
> > --- a/drivers/mmc/core/quirks.h
> > +++ b/drivers/mmc/core/quirks.h
> > @@ -15,6 +15,19 @@
> >
> > #include "card.h"
> >
> > +static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
> > + /*
> > + * Kingston Canvas Go! Plus microSD cards never finish SD cache flush.
> > + * This has so far only been observed on cards from 11/2019, while new
> > + * cards from 2023/05 do not exhibit this behavior.
> > + */
> > + _FIXUP_EXT("SD64G", CID_MANFID_KINGSTON_SD, 0x5449, 2019, 11,
> > + 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
> > + MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
> > +
> > + END_FIXUP
> > +};
> > +
> > static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = {
> > #define INAND_CMD38_ARG_EXT_CSD 113
> > #define INAND_CMD38_ARG_ERASE 0x00
> > @@ -53,15 +66,6 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = {
> > MMC_FIXUP("MMC32G", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc,
> > MMC_QUIRK_BLK_NO_CMD23),
> >
> > - /*
> > - * Kingston Canvas Go! Plus microSD cards never finish SD cache flush.
> > - * This has so far only been observed on cards from 11/2019, while new
> > - * cards from 2023/05 do not exhibit this behavior.
> > - */
> > - _FIXUP_EXT("SD64G", CID_MANFID_KINGSTON_SD, 0x5449, 2019, 11,
> > - 0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
> > - MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
> > -
> > /*
> > * Some SD cards lockup while using CMD23 multiblock transfers.
> > */
> > diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
> > index 1c8148cdda50..ee37ad14e79e 100644
> > --- a/drivers/mmc/core/sd.c
> > +++ b/drivers/mmc/core/sd.c
> > @@ -26,6 +26,7 @@
> > #include "host.h"
> > #include "bus.h"
> > #include "mmc_ops.h"
> > +#include "quirks.h"
> > #include "sd.h"
> > #include "sd_ops.h"
> >
> > @@ -1475,6 +1476,9 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
> > goto free_card;
> > }
> >
> > + /* Apply quirks prior to card setup */
> > + mmc_fixup_device(card, mmc_sd_fixups);
> > +
> > err = mmc_sd_setup_card(host, card, oldcard != NULL);
> > if (err)
> > goto free_card;
> > --
> > 2.43.2
> >
next prev parent reply other threads:[~2024-08-06 1:46 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-02 3:21 [PATCH] mmc: core: apply SD quirks earlier during probe Keita Aihara
2024-08-02 6:53 ` Avri Altman
2024-08-05 10:14 ` Ulf Hansson
2024-08-06 1:36 ` Keita Aihara [this message]
2024-08-20 10:10 ` Ulf Hansson
2024-08-20 23:18 ` Keita Aihara
2024-09-18 14:51 ` Olexa Bilaniuk
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=20240806013610.GA3438728@sony.com \
--to=keita.aihara@sony.com \
--cc=Masaya.Takahashi@sony.com \
--cc=Shingo.Takeuchi@sony.com \
--cc=Tim.Bird@sony.com \
--cc=jonathan@raspberrypi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.