Commit 1d8cde5beb2ec5178ea08b131a97ed948d291a78
1 parent
6ae20372
IDE: Improve DMA transfers by increasing the buffer size
(Ian Jackson) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4132 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
13 additions
and
7 deletions
hw/ide.c
| ... | ... | @@ -202,6 +202,12 @@ |
| 202 | 202 | /* set to 1 set disable mult support */ |
| 203 | 203 | #define MAX_MULT_SECTORS 16 |
| 204 | 204 | |
| 205 | +#define IDE_DMA_BUF_SECTORS 256 | |
| 206 | + | |
| 207 | +#if (IDE_DMA_BUF_SECTORS < MAX_MULT_SECTORS) | |
| 208 | +#error "IDE_DMA_BUF_SECTORS must be bigger or equal to MAX_MULT_SECTORS" | |
| 209 | +#endif | |
| 210 | + | |
| 205 | 211 | /* ATAPI defines */ |
| 206 | 212 | |
| 207 | 213 | #define ATAPI_PACKET_SIZE 12 |
| ... | ... | @@ -899,8 +905,8 @@ static void ide_read_dma_cb(void *opaque, int ret) |
| 899 | 905 | |
| 900 | 906 | /* launch next transfer */ |
| 901 | 907 | n = s->nsector; |
| 902 | - if (n > MAX_MULT_SECTORS) | |
| 903 | - n = MAX_MULT_SECTORS; | |
| 908 | + if (n > IDE_DMA_BUF_SECTORS) | |
| 909 | + n = IDE_DMA_BUF_SECTORS; | |
| 904 | 910 | s->io_buffer_index = 0; |
| 905 | 911 | s->io_buffer_size = n * 512; |
| 906 | 912 | #ifdef DEBUG_AIO |
| ... | ... | @@ -998,8 +1004,8 @@ static void ide_write_dma_cb(void *opaque, int ret) |
| 998 | 1004 | |
| 999 | 1005 | /* launch next transfer */ |
| 1000 | 1006 | n = s->nsector; |
| 1001 | - if (n > MAX_MULT_SECTORS) | |
| 1002 | - n = MAX_MULT_SECTORS; | |
| 1007 | + if (n > IDE_DMA_BUF_SECTORS) | |
| 1008 | + n = IDE_DMA_BUF_SECTORS; | |
| 1003 | 1009 | s->io_buffer_index = 0; |
| 1004 | 1010 | s->io_buffer_size = n * 512; |
| 1005 | 1011 | |
| ... | ... | @@ -1293,8 +1299,8 @@ static void ide_atapi_cmd_read_dma_cb(void *opaque, int ret) |
| 1293 | 1299 | data_offset = 16; |
| 1294 | 1300 | } else { |
| 1295 | 1301 | n = s->packet_transfer_size >> 11; |
| 1296 | - if (n > (MAX_MULT_SECTORS / 4)) | |
| 1297 | - n = (MAX_MULT_SECTORS / 4); | |
| 1302 | + if (n > (IDE_DMA_BUF_SECTORS / 4)) | |
| 1303 | + n = (IDE_DMA_BUF_SECTORS / 4); | |
| 1298 | 1304 | s->io_buffer_size = n * 2048; |
| 1299 | 1305 | data_offset = 0; |
| 1300 | 1306 | } |
| ... | ... | @@ -2524,7 +2530,7 @@ static void ide_init2(IDEState *ide_state, |
| 2524 | 2530 | |
| 2525 | 2531 | for(i = 0; i < 2; i++) { |
| 2526 | 2532 | s = ide_state + i; |
| 2527 | - s->io_buffer = qemu_memalign(512, MAX_MULT_SECTORS*512 + 4); | |
| 2533 | + s->io_buffer = qemu_memalign(512, IDE_DMA_BUF_SECTORS*512 + 4); | |
| 2528 | 2534 | if (i == 0) |
| 2529 | 2535 | s->bs = hd0; |
| 2530 | 2536 | else | ... | ... |