diff options
-rw-r--r-- | pc-bios/openbios-esp.diff | 30 |
1 files changed, 0 insertions, 30 deletions
diff --git a/pc-bios/openbios-esp.diff b/pc-bios/openbios-esp.diff deleted file mode 100644 index 5d4f836f12..0000000000 --- a/pc-bios/openbios-esp.diff +++ /dev/null @@ -1,30 +0,0 @@ -The ESP SCSI driver currently doesn't check whether a DMA requests has -completed before checking its status. On older qemu versions this works ok -because DMA happens instantly. On never qemu DMA can take an indeterminate -amount of time ooto complete, just like on real hardware. - -The patch below waits for the controller to raise the DMA interrupt after -initiating a DMA request. - -Index: drivers/esp.c -=================================================================== ---- drivers/esp.c (revision 61) -+++ drivers/esp.c (working copy) -@@ -113,6 +113,8 @@ do_command(esp_private_t *esp, sd_privat - esp->espdma.regs->cond_reg = 0; - // Set ATN, issue command - esp->ll->regs[ESP_CMD] = ESP_CMD_SELA | ESP_CMD_DMA; -+ // Wait for DMA to complete -+ while ((esp->espdma.regs->cond_reg & DMA_HNDL_INTR) == 0) /* no-op */; - // Check status - status = esp->ll->regs[ESP_STATUS]; - -@@ -129,6 +131,8 @@ do_command(esp_private_t *esp, sd_privat - esp->espdma.regs->cond_reg = DMA_ST_WRITE; - // Transfer - esp->ll->regs[ESP_CMD] = ESP_CMD_TI | ESP_CMD_DMA; -+ // Wait for DMA to complete -+ while ((esp->espdma.regs->cond_reg & DMA_HNDL_INTR) == 0) /* no-op */; - // Check status - status = esp->ll->regs[ESP_STATUS]; - |