mbox series

[v2,0/2] mmc: host: Disable auto-cmd12 during ffu

Message ID 20231023132128.1871269-1-avri.altman@wdc.com (mailing list archive)
Headers show
Series mmc: host: Disable auto-cmd12 during ffu | expand

Message

Avri Altman Oct. 23, 2023, 1:21 p.m. UTC
Field Firmware Update (ffu) may use close-ended or open ended sequence.
Each such sequence is comprised of a write commands enclosed between 2
switch commands - to and from ffu mode.

Some platforms generate auto command error interrupt when it shouldn't,
e.g. auto-cmd12 while in close-ended ffu sequence.  I encountered  this
issue while testing fwupd (github.com/fwupd/fwupd) on HP Chromebook x2,
a qualcomm based QC-7c, code name - strongbad. Instead of a quirk, make
sure it disable auto-cmd12 while close-ended ffu is in progress.

v1->v2:
 - Attend Adrian's suggestions

Avri Altman (2):
  mmc: core: Mark close-ended ffu in progress
  mmc: host: msm: Disable auto-cmd12 during ffu

 drivers/mmc/core/block.c     | 34 ++++++++++++++++++++++++++++++++++
 drivers/mmc/host/sdhci-msm.c | 26 ++++++++++++++++++++++++++
 include/linux/mmc/host.h     |  1 +
 include/linux/mmc/mmc.h      |  1 +
 4 files changed, 62 insertions(+)

Comments

Ulf Hansson Oct. 24, 2023, 11:24 a.m. UTC | #1
On Mon, 23 Oct 2023 at 15:23, Avri Altman <avri.altman@wdc.com> wrote:
>
> Field Firmware Update (ffu) may use close-ended or open ended sequence.
> Each such sequence is comprised of a write commands enclosed between 2
> switch commands - to and from ffu mode.
>
> Some platforms generate auto command error interrupt when it shouldn't,
> e.g. auto-cmd12 while in close-ended ffu sequence.  I encountered  this
> issue while testing fwupd (github.com/fwupd/fwupd) on HP Chromebook x2,
> a qualcomm based QC-7c, code name - strongbad. Instead of a quirk, make
> sure it disable auto-cmd12 while close-ended ffu is in progress.

Two questions:

*) Is this problem limited to FFU? What about other regular
close-ended writes through the mmc ioctl? Do those have problems too -
and if so, do we care about fixing them?

**) I suspect this problem is common to those mmc host drivers that
have the auto-cmd12 feature. With the approach taken in the $subject
series, each and every host driver would need to make adoptions too. I
think we should try to fix this in the core, solely, instead.
Something along the lines of how we manage rpmb requests, where we add
on and "mrq.sbc" for the write/read request. Would this work, you
think?

Kind regards
Uffe

>
> v1->v2:
>  - Attend Adrian's suggestions
>
> Avri Altman (2):
>   mmc: core: Mark close-ended ffu in progress
>   mmc: host: msm: Disable auto-cmd12 during ffu
>
>  drivers/mmc/core/block.c     | 34 ++++++++++++++++++++++++++++++++++
>  drivers/mmc/host/sdhci-msm.c | 26 ++++++++++++++++++++++++++
>  include/linux/mmc/host.h     |  1 +
>  include/linux/mmc/mmc.h      |  1 +
>  4 files changed, 62 insertions(+)
>
> --
> 2.42.0
>