Commit 69fba4a51edb69fb983ca887d985c1d9a1c62e5e
1 parent
4d611c9a
Remove OpenBIOS ESP patch. Merged upstream.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2108 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
0 additions
and
30 deletions
pc-bios/openbios-esp.diff deleted
100644 → 0
1 | -The ESP SCSI driver currently doesn't check whether a DMA requests has | ||
2 | -completed before checking its status. On older qemu versions this works ok | ||
3 | -because DMA happens instantly. On never qemu DMA can take an indeterminate | ||
4 | -amount of time ooto complete, just like on real hardware. | ||
5 | - | ||
6 | -The patch below waits for the controller to raise the DMA interrupt after | ||
7 | -initiating a DMA request. | ||
8 | - | ||
9 | -Index: drivers/esp.c | ||
10 | -=================================================================== | ||
11 | ---- drivers/esp.c (revision 61) | ||
12 | -+++ drivers/esp.c (working copy) | ||
13 | -@@ -113,6 +113,8 @@ do_command(esp_private_t *esp, sd_privat | ||
14 | - esp->espdma.regs->cond_reg = 0; | ||
15 | - // Set ATN, issue command | ||
16 | - esp->ll->regs[ESP_CMD] = ESP_CMD_SELA | ESP_CMD_DMA; | ||
17 | -+ // Wait for DMA to complete | ||
18 | -+ while ((esp->espdma.regs->cond_reg & DMA_HNDL_INTR) == 0) /* no-op */; | ||
19 | - // Check status | ||
20 | - status = esp->ll->regs[ESP_STATUS]; | ||
21 | - | ||
22 | -@@ -129,6 +131,8 @@ do_command(esp_private_t *esp, sd_privat | ||
23 | - esp->espdma.regs->cond_reg = DMA_ST_WRITE; | ||
24 | - // Transfer | ||
25 | - esp->ll->regs[ESP_CMD] = ESP_CMD_TI | ESP_CMD_DMA; | ||
26 | -+ // Wait for DMA to complete | ||
27 | -+ while ((esp->espdma.regs->cond_reg & DMA_HNDL_INTR) == 0) /* no-op */; | ||
28 | - // Check status | ||
29 | - status = esp->ll->regs[ESP_STATUS]; | ||
30 | - |