提交 69fba4a5 编写于 作者: P pbrook

Remove OpenBIOS ESP patch. Merged upstream.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2108 c046a42c-6fe2-441c-8c8c-71466251a162
上级 4d611c9a
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];
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册