I fuzzed the SDHCI with this applied. There are still bugs in SDHCI, but
this fixes the ones triggered by my initial bug-reproducers, and doesn't
appear to create any new bugs.
In the interest of incrementally fixing the issues, for this series:
Tested-by: Alexander Bulekov <alxndr@bu.edu>
On 200903 1928, Philippe Mathieu-Daudé wrote:
> Still trying to fix the bugs reported by Aleksander...
>
> - Do not send 0 block count
> - Reduce DMA to MMIO re-entrancy by yielding when pending IRQ
>
> Based-on: <20200901140411.112150-1-f4bug@amsat.org>
>
> Philippe Mathieu-Daudé (4):
> hw/sd/sdhci: Stop multiple transfers when block count is cleared
> hw/sd/sdhci: Resume pending DMA transfers on MMIO accesses
> hw/sd/sdhci: Let sdhci_update_irq() return if IRQ was delivered
> hw/sd/sdhci: Yield if interrupt delivered during multiple transfer
>
> hw/sd/sdhci.c | 35 +++++++++++++++++++++++++++++++----
> 1 file changed, 31 insertions(+), 4 deletions(-)
>
> --
> 2.26.2
>