projects
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
2572689
)
esp.c: decrement the TC during MESSAGE OUT and COMMAND phases
author
Mark Cave-Ayland
<mark.cave-ayland@ilande.co.uk>
Fri, 12 Jan 2024 12:53:05 +0000
(12:53 +0000)
committer
Mark Cave-Ayland
<mark.cave-ayland@ilande.co.uk>
Tue, 13 Feb 2024 19:37:23 +0000
(19:37 +0000)
This is to ensure that STAT_TC is triggered during the right parts of the
transfer when it is controlled exclusively by the TC.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Tested-by: Helge Deller <deller@gmx.de>
Tested-by: Thomas Huth <thuth@redhat.com>
Message-Id: <
20240112125420
.514425-14-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
hw/scsi/esp.c
patch
|
blob
|
history
diff --git
a/hw/scsi/esp.c
b/hw/scsi/esp.c
index 9e9bbe84319fe47fba18a222b7d1f5a34eaed0e3..f08b816abaf2b2828471b0999cf50c6a2b3dba7d 100644
(file)
--- a/
hw/scsi/esp.c
+++ b/
hw/scsi/esp.c
@@
-259,6
+259,7
@@
static uint32_t get_cmd(ESPState *s, uint32_t maxlen)
s->dma_memory_read(s->dma_opaque, buf, dmalen);
dmalen = MIN(fifo8_num_free(&s->cmdfifo), dmalen);
fifo8_push_all(&s->cmdfifo, buf, dmalen);
+ esp_set_tc(s, esp_get_tc(s) - dmalen);
} else {
return 0;
}
@@
-657,6
+658,7
@@
static void esp_do_dma(ESPState *s)
len = MIN(len, fifo8_num_free(&s->cmdfifo));
s->dma_memory_read(s->dma_opaque, buf, len);
fifo8_push_all(&s->cmdfifo, buf, len);
+ esp_set_tc(s, esp_get_tc(s) - len);
} else {
esp_set_pdma_cb(s, DO_DMA_PDMA_CB);
esp_raise_drq(s);