From: Mark Cave-Ayland Date: Sun, 24 Mar 2024 19:17:05 +0000 (+0000) Subject: esp.c: ensure esp_pdma_write() always calls esp_fifo_push() X-Git-Tag: v9.0.0-rc3~8^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=60c572502cbb89f1f46c2127794f956220e5dbab;p=thirdparty%2Fqemu.git esp.c: ensure esp_pdma_write() always calls esp_fifo_push() 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 Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Paolo Bonzini Message-Id: <20240324191707.623175-17-mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland --- diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 4895181ec12..04dfd900902 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -282,14 +282,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)