kernel_optimize_test/drivers/usb/host
Alan Stern fa38dfcc56 USB: EHCI: fix performance regression
This patch (as1099) fixes a performance regression in ehci-hcd.  The
fundamental problem is that queue headers get removed from the
schedule too quickly, since the code checks for a counter advancing
rather than making an actual time-based check.  The latency involved
in removing the queue header and then relinking it can severely
degrade certain kinds of workloads.

The patch replaces a simple counter with a timestamp derived from the
controller's uframe value.  In addition, the delay for unlinking an
idle queue header is increased from 5 ms to 10 ms; since some
controllers (nVidia) have a latency of up to 1 ms for unlinking, this
reduces the relative impact from 20% to 10%.

Finally, a logical error left over from the IAA watchdog-timer
conversion is corrected.  Now the driver will always either unlink an
idle queue header or set up a timer to unlink it later.  The old code
would sometimes fail to do either.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Cc: David Brownell <david-b@pacbell.net>
Cc: Leonid <leonidv11@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-05-29 13:59:04 -07:00
..
ehci-au1xxx.c USB: EHCI: suppress unwanted error messages 2008-05-29 13:59:03 -07:00
ehci-dbg.c drivers/usb annotations and fixes 2008-04-28 10:03:31 -07:00
ehci-fsl.c USB: EHCI: suppress unwanted error messages 2008-05-29 13:59:03 -07:00
ehci-fsl.h
ehci-hcd.c USB: EHCI: fix performance regression 2008-05-29 13:59:04 -07:00
ehci-hub.c USB: EHCI: fix remote-wakeup regression 2008-05-29 13:59:04 -07:00
ehci-ixp4xx.c USB: EHCI: suppress unwanted error messages 2008-05-29 13:59:03 -07:00
ehci-mem.c
ehci-orion.c USB: EHCI: suppress unwanted error messages 2008-05-29 13:59:03 -07:00
ehci-pci.c USB: EHCI: suppress unwanted error messages 2008-05-29 13:59:03 -07:00
ehci-ppc-of.c USB: EHCI: suppress unwanted error messages 2008-05-29 13:59:03 -07:00
ehci-ppc-soc.c USB: EHCI: suppress unwanted error messages 2008-05-29 13:59:03 -07:00
ehci-ps3.c USB: EHCI: suppress unwanted error messages 2008-05-29 13:59:03 -07:00
ehci-q.c USB: EHCI: fix performance regression 2008-05-29 13:59:04 -07:00
ehci-sched.c USB: EHCI: fix bug in Iso scheduling 2008-05-29 13:59:04 -07:00
ehci.h USB: EHCI: fix remote-wakeup regression 2008-05-29 13:59:04 -07:00
isp116x-hcd.c USB: HCDs use the do_remote_wakeup flag 2008-04-24 21:16:53 -07:00
isp116x.h USB: isp116x: fix enumeration on boot 2008-03-04 14:57:43 -08:00
isp1760-hcd.c USB: isp1760: fix printk format 2008-05-14 10:00:26 -07:00
isp1760-hcd.h USB: ISP1760 HCD driver 2008-05-02 10:25:50 -07:00
isp1760-if.c usb: fix compile warning in isp1760 2008-05-14 10:00:28 -07:00
Kconfig usb: Sparc build fix, make USB_ISP1760_OF depend on PPC_OF 2008-05-06 15:15:12 -07:00
Makefile USB: ISP1760 HCD driver 2008-05-02 10:25:50 -07:00
ohci-at91.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-au1xxx.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-dbg.c USB: remove dev->power.power_state 2008-04-24 21:16:41 -07:00
ohci-ep93xx.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-hcd.c USB: ohci: fix 2 timers to fire at jiffies + 1s 2008-04-02 15:06:09 -07:00
ohci-hub.c USB: OHCI: work around bogus compiler warning 2008-05-02 10:25:57 -07:00
ohci-lh7a404.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-mem.c
ohci-omap.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-pci.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-pnx4008.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-pnx8550.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-ppc-of.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-ppc-soc.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-ps3.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-pxa27x.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-q.c USB: ohci: fix 2 timers to fire at jiffies + 1s 2008-04-02 15:06:09 -07:00
ohci-s3c2410.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-sa1111.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-sh.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci-sm501.c usb: fix integer as NULL pointer warnings found by sparse 2008-05-14 10:00:26 -07:00
ohci-ssb.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
ohci.h USB: convert ohci debug files to use debugfs instead of sysfs 2008-02-01 14:34:52 -08:00
pci-quirks.c USB: replace remaining __FUNCTION__ occurrences 2008-04-24 21:16:55 -07:00
pci-quirks.h
r8a66597-hcd.c drivers/usb annotations and fixes 2008-04-28 10:03:31 -07:00
r8a66597.h USB: r8a66597-hcd: Add support for SH7366 USB host 2008-04-24 21:16:49 -07:00
sl811_cs.c
sl811-hcd.c usb: use non-racy method for proc entries creation 2008-04-29 08:06:21 -07:00
sl811.h
u132-hcd.c USB: don't explicitly reenable root-hub status interrupts 2008-04-24 21:16:53 -07:00
uhci-debug.c
uhci-hcd.c USB: UHCI: disable remote wakeup when it's not needed 2008-05-02 10:25:57 -07:00
uhci-hcd.h USB: UHCI: disable remote wakeup when it's not needed 2008-05-02 10:25:57 -07:00
uhci-hub.c
uhci-q.c USB: replace remaining __FUNCTION__ occurrences 2008-04-24 21:16:55 -07:00