Commit 1d8cde5beb2ec5178ea08b131a97ed948d291a78

Authored by aurel32
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
... ...