On 25/10/23 14:30, Avri Altman 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. I think I misunderstood this because I was thinking that auto-cmd12 was being used with an open-ended sequence, and that it wasn't working with FFU. However it seems mmc-utils is using a closed-ended sequence. It looks like the the host controller driver doesn't know that, because the ioctl interface does not use mrq.sbc and the SET_BLOCK_COUNT command is sent separately. Then when the MULTI_WRITE command is issued, the host controller driver treats it as open-ended and will enable auto-cmd12 if the controller supports it. If that is the case, it would be better to fix the ioctl handling and make it use mrq.sbc instead of issuing SET_BLOCK_COUNT separately. > > v2 -> v3: > - fix an issue Reported-by: kernel test robot <lkp@xxxxxxxxx> > > 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 | 24 ++++++++++++++++++++++++ > include/linux/mmc/host.h | 1 + > include/linux/mmc/mmc.h | 1 + > 4 files changed, 60 insertions(+) >