[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/4] hw/sd/sdhci: Yield if interrupt delivered during multiple tr
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 4/4] hw/sd/sdhci: Yield if interrupt delivered during multiple transfer |
Date: |
Thu, 3 Sep 2020 19:28:06 +0200 |
The Descriptor Table has a bit to allow the DMA to generates
Interrupt when the operation of the descriptor line is completed
(see "1.13.4. Descriptor Table" of 'SD Host Controller Simplified
Specification Version 2.00').
If we have pending interrupt and the descriptor requires it
to be generated as soon as it is completed, reschedule pending
transfers and yield to the CPU.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/sd/sdhci.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
index 06cb098036c..74b0bf77103 100644
--- a/hw/sd/sdhci.c
+++ b/hw/sd/sdhci.c
@@ -834,7 +834,10 @@ static void sdhci_do_adma(SDHCIState *s)
s->norintsts |= SDHC_NIS_DMA;
}
- sdhci_update_irq(s);
+ if (sdhci_update_irq(s) && !(dscr.attr & SDHC_ADMA_ATTR_END)) {
+ /* IRQ delivered, reschedule current transfer */
+ break;
+ }
}
/* ADMA transfer terminates if blkcnt == 0 or by END attribute */
--
2.26.2
- [PATCH 0/4] hw/sd/sdhci: Strengthen multiple DMA transfers, Philippe Mathieu-Daudé, 2020/09/03
- [PATCH 1/4] hw/sd/sdhci: Stop multiple transfers when block count is cleared, Philippe Mathieu-Daudé, 2020/09/03
- [PATCH 2/4] hw/sd/sdhci: Resume pending DMA transfers on MMIO accesses, Philippe Mathieu-Daudé, 2020/09/03
- [PATCH 3/4] hw/sd/sdhci: Let sdhci_update_irq() return if IRQ was delivered, Philippe Mathieu-Daudé, 2020/09/03
- [PATCH 4/4] hw/sd/sdhci: Yield if interrupt delivered during multiple transfer,
Philippe Mathieu-Daudé <=
- Re: [PATCH 0/4] hw/sd/sdhci: Strengthen multiple DMA transfers, Philippe Mathieu-Daudé, 2020/09/10
- Re: [PATCH 0/4] hw/sd/sdhci: Strengthen multiple DMA transfers, Alexander Bulekov, 2020/09/10
- Re: [PATCH 0/4] hw/sd/sdhci: Strengthen multiple DMA transfers, Philippe Mathieu-Daudé, 2020/09/18