[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH] ioemu: improve DMA transfers
Samuel Thibault, le Thu 20 Mar 2008 16:31:45 +0000, a écrit : > Ooops, don't apply it, my late conversion from sectors to bytes went > wrong (but the graph it correct). This one is correct Samuel ioemu: improve DMA transfers by increasing the size of DMA buffers. Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx> diff -r dc1fe3bd1393 tools/ioemu/hw/ide.c --- a/tools/ioemu/hw/ide.c Thu Mar 20 10:53:10 2008 +0000 +++ b/tools/ioemu/hw/ide.c Thu Mar 20 16:33:05 2008 +0000 @@ -189,6 +189,15 @@ /* set to 1 set disable mult support */ #define MAX_MULT_SECTORS 16 +#ifdef CONFIG_STUBDOM +#include <xen/io/blkif.h> +#define IDE_DMA_BUF_SIZE (BLKIF_MAX_SEGMENTS_PER_REQUEST * TARGET_PAGE_SIZE) +#else +#define IDE_DMA_BUF_SIZE 131072 +#endif +#if (IDE_DMA_BUF_SIZE < MAX_MULT_SECTORS * 512) +#error "IDE_DMA_BUF_SIZE must be bigger or equal to MAX_MULT_SECTORS * 512" +#endif /* ATAPI defines */ @@ -932,8 +941,8 @@ /* launch next transfer */ n = s->nsector; - if (n > MAX_MULT_SECTORS) - n = MAX_MULT_SECTORS; + if (n > IDE_DMA_BUF_SIZE / 512) + n = IDE_DMA_BUF_SIZE / 512; s->io_buffer_index = 0; s->io_buffer_size = n * 512; #ifdef DEBUG_AIO @@ -1041,8 +1050,8 @@ /* launch next transfer */ n = s->nsector; - if (n > MAX_MULT_SECTORS) - n = MAX_MULT_SECTORS; + if (n > IDE_DMA_BUF_SIZE / 512) + n = IDE_DMA_BUF_SIZE / 512; s->io_buffer_index = 0; s->io_buffer_size = n * 512; @@ -1336,8 +1345,8 @@ data_offset = 16; } else { n = s->packet_transfer_size >> 11; - if (n > (MAX_MULT_SECTORS / 4)) - n = (MAX_MULT_SECTORS / 4); + if (n > (IDE_DMA_BUF_SIZE / 2048)) + n = (IDE_DMA_BUF_SIZE / 2048); s->io_buffer_size = n * 2048; data_offset = 0; } @@ -2306,7 +2315,7 @@ for(i = 0; i < 2; i++) { s = ide_state + i; - s->io_buffer = qemu_memalign(getpagesize(), MAX_MULT_SECTORS*512 + 4); + s->io_buffer = qemu_memalign(getpagesize(), IDE_DMA_BUF_SIZE + 4); if (i == 0) s->bs = hd0; else --- a/tools/ioemu/hw/scsi-disk.c Thu Mar 20 10:53:10 2008 +0000 +++ b/tools/ioemu/hw/scsi-disk.c Thu Mar 20 16:33:05 2008 +0000 @@ -34,9 +34,10 @@ #define SENSE_ILLEGAL_REQUEST 5 #ifdef CONFIG_STUBDOM -#define SCSI_DMA_BUF_SIZE 32768 +#include <xen/io/blkif.h> +#define SCSI_DMA_BUF_SIZE (BLKIF_MAX_SEGMENTS_PER_REQUEST * TARGET_PAGE_SIZE) #else -#define SCSI_DMA_BUF_SIZE 65536 +#define SCSI_DMA_BUF_SIZE 131072 #endif typedef struct SCSIRequest { _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |