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 | ... | ... |