Hi, This patch series introduces iovecs to the USB subsystem, usb packet payload is passed around as iovec instead of a linear buffer. This allows the host controllers to use scatter lists and to pass on data buffers directly, so we can avoid an extra copy.
please review, Gerd Gerd Hoffmann (9): Add iov_hexdump() Add iov_clear() move QEMUSGList typedef usb: use iovecs in USBPacket usb-serial: iovec support usb-host: iovec support usb-storage: iovec support uhci: remove buffer ehci: iovec support, remove buffer Makefile.objs | 1 + dma.h | 4 +- hw/bt-hid.c | 16 +++--- hw/milkymist-softusb.c | 8 +- hw/usb-bt.c | 31 ++++------ hw/usb-ccid.c | 46 ++++++++------ hw/usb-ehci.c | 160 ++++++++++++++++++++---------------------------- hw/usb-hid.c | 6 +- hw/usb-hub.c | 8 ++- hw/usb-libhw.c | 63 +++++++++++++++++++ hw/usb-msd.c | 109 ++++++++++++++++----------------- hw/usb-musb.c | 22 +++--- hw/usb-net.c | 65 +++++++------------- hw/usb-ohci.c | 23 +++---- hw/usb-serial.c | 26 +++++--- hw/usb-uhci.c | 51 +++++++-------- hw/usb-wacom.c | 6 +- hw/usb.c | 86 +++++++++++++++++++++---- hw/usb.h | 13 +++- iov.c | 54 ++++++++++++++++ iov.h | 4 + qemu-common.h | 1 + usb-linux.c | 48 +++++++++------ 23 files changed, 500 insertions(+), 351 deletions(-) create mode 100644 hw/usb-libhw.c