[PATCH v2 15/16] esp.c: ensure esp_pdma_write() always calls esp_fifo_push()

Mark Cave-Ayland posted 16 patches 1 year, 11 months ago
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <fam@euphon.net>
There is a newer version of this series
[PATCH v2 15/16] esp.c: ensure esp_pdma_write() always calls esp_fifo_push()
Posted by Mark Cave-Ayland 1 year, 11 months ago
This ensures that esp_update_drq() is called via esp_fifo_push() whenever the
host uses PDMA to transfer data to a SCSI device.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 hw/scsi/esp.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 52a69599b2..68346ceaeb 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -276,14 +276,12 @@ static void esp_pdma_write(ESPState *s, uint8_t val)
 {
     uint32_t dmalen = esp_get_tc(s);
 
-    if (dmalen == 0) {
-        return;
-    }
-
     esp_fifo_push(s, val);
 
-    dmalen--;
-    esp_set_tc(s, dmalen);
+    if (dmalen && s->drq_state) {
+        dmalen--;
+        esp_set_tc(s, dmalen);
+    }
 }
 
 static int esp_select(ESPState *s)
-- 
2.39.2
Re: [PATCH v2 15/16] esp.c: ensure esp_pdma_write() always calls esp_fifo_push()
Posted by Philippe Mathieu-Daudé 1 year, 11 months ago
On 13/3/24 09:58, Mark Cave-Ayland wrote:
> This ensures that esp_update_drq() is called via esp_fifo_push() whenever the
> host uses PDMA to transfer data to a SCSI device.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>   hw/scsi/esp.c | 10 ++++------
>   1 file changed, 4 insertions(+), 6 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>