[PATCH 00/10] Performance patches for xHCI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch set increases the performance of the xHCI driver, and
decreases the CPU usage by the driver.

The driver was tested by using dd to read the raw disk of an SSD behind
a USB 3.0 hard drive.  This test was selected to eliminate any slowness
on the hardware side and reveal any software bottle necks (because SSD
read speed is much faster than write speed).  I used the kernel perf
tool to look at the top kernel symbols during the dd to find the bottle
necks.  perf annotate is very nice for revealing the exact code in the
function that is taking the most time.

Along with the MSI patch from Dong Nguyen, these increase performance
from 172 MB/s to 204 MB/s, and decrease CPU usage on a 64-bit quad core
Intel system from 28% CPU usage to 19%.  Most of the improvements come
from eliminating unnecessary register reads and enabling 64-bit DMA to
avoid bounce buffers.  A little bit of improvement comes from making
functions static so the compiler can optimize them.

There is still more low-hanging performance work to do, but I wanted to
submit this set before the 2.6.36 merge window.

Greg, this patchset should apply on top of Andiry's isochronous patches.
Please let me know if you run into any conflicts.

(I won't be able to respond to any comments until Tuesday because I'm
going to be out in the ocean for four days.)

Sarah Sharp (10):
  xhci: Performance - move functions that find ep ring.
  xhci: Performance - move interrupt handlers into xhci-ring.c
  xhci: Performance - move xhci_work() into xhci_irq()
  xhci: Remove unnecessary reads of IRQ_PENDING register.
  xhci: Make xhci_handle_event() static.
  xhci: Minimize HW event ring dequeue pointer writes.
  xhci: Make xhci_set_hc_event_deq() static.
  xhci: Reduce reads and writes of interrupter registers.
  xhci: Don't flush doorbell writes.
  xhci: Set DMA mask for host.

 drivers/usb/host/xhci-mem.c  |   66 +++++---------
 drivers/usb/host/xhci-pci.c  |    9 ++
 drivers/usb/host/xhci-ring.c |  198 ++++++++++++++++++++++++++++++++++-------
 drivers/usb/host/xhci.c      |  144 +++++++++----------------------
 drivers/usb/host/xhci.h      |    8 +--
 5 files changed, 238 insertions(+), 187 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux