diff mbox series

[4/4] esp-pci.c: set DMA_STAT_BCMBLT when BLAST command issued

Message ID 20240112131529.515642-5-mark.cave-ayland@ilande.co.uk
State New
Headers show
Series esp-pci: fixes for Linux and MS-DOS | expand

Commit Message

Mark Cave-Ayland Jan. 12, 2024, 1:15 p.m. UTC
Even though the BLAST command isn't fully implemented in QEMU, the DMA_STAT_BCMBLT
bit should be set after the command has been issued to indicate that the command
has completed.

This fixes an issue with the DC390 DOS driver which issues the BLAST command as
part of its normal error recovery routine at startup, and otherwise sits in a
tight loop waiting for DMA_STAT_BCMBLT to be set before continuing.

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

Comments

Guenter Roeck Jan. 12, 2024, 8:53 p.m. UTC | #1
On Fri, Jan 12, 2024 at 01:15:29PM +0000, Mark Cave-Ayland wrote:
> Even though the BLAST command isn't fully implemented in QEMU, the DMA_STAT_BCMBLT
> bit should be set after the command has been issued to indicate that the command
> has completed.
> 
> This fixes an issue with the DC390 DOS driver which issues the BLAST command as
> part of its normal error recovery routine at startup, and otherwise sits in a
> tight loop waiting for DMA_STAT_BCMBLT to be set before continuing.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  hw/scsi/esp-pci.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c
> index 875a49199d..42d9d2e483 100644
> --- a/hw/scsi/esp-pci.c
> +++ b/hw/scsi/esp-pci.c
> @@ -124,6 +124,7 @@ static void esp_pci_handle_blast(PCIESPState *pci, uint32_t val)
>  {
>      trace_esp_pci_dma_blast(val);
>      qemu_log_mask(LOG_UNIMP, "am53c974: cmd BLAST not implemented\n");
> +    pci->dma_regs[DMA_STAT] |= DMA_STAT_BCMBLT;
>  }
>  
>  static void esp_pci_handle_abort(PCIESPState *pci, uint32_t val)
> -- 
> 2.39.2
>
diff mbox series

Patch

diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c
index 875a49199d..42d9d2e483 100644
--- a/hw/scsi/esp-pci.c
+++ b/hw/scsi/esp-pci.c
@@ -124,6 +124,7 @@  static void esp_pci_handle_blast(PCIESPState *pci, uint32_t val)
 {
     trace_esp_pci_dma_blast(val);
     qemu_log_mask(LOG_UNIMP, "am53c974: cmd BLAST not implemented\n");
+    pci->dma_regs[DMA_STAT] |= DMA_STAT_BCMBLT;
 }
 
 static void esp_pci_handle_abort(PCIESPState *pci, uint32_t val)