On Tue, May 13, 2014 at 06:10:46PM +0200, Dr. Werner Fink wrote: > On Tue, May 13, 2014 at 11:59:38AM -0400, Alan Stern wrote: > > > > What about something like this instead? > > > > masked_status = status & (INTR_MASK | STS_FLR); > > > > /* Shared IRQ? */ > > if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) { > > + if (status & STS_RECL) { > > + ehci_writel(ehci, STS_RECL, &ehci->regs->status); > > + ehci_readl(ehci, &ehci->regs->status); > > + } > > spin_unlock_irqrestore(&ehci->lock, flags); > > return IRQ_NONE; > > } > > > > That should do about the same thing as your change, except for > > returning IRQ_NONE rather than IRQ_HANDLED. > > I'll forward this to my home to try it out. It will take some time > as my wife is also working on this system. Nevertheless I'm curious > about it. The code is active now: speedy:linux # uname -a Linux speedy 3.7.10-1.28-desktop #3 SMP PREEMPT Tue May 13 21:22:35 CEST 2014 x86_64 x86_64 x86_64 GNU/Linux speedy:linux # grep 16: /proc/interrupts | sed -r 's@ +@ @g' 16: 68 0 14234 0 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1, eth1 speedy:linux # xzgrep 'nobody care' /var/log/messages-* | wc -l 48 speedy:linux # dmesg | grep 'nobody care' speedy:linux # the limit of 99900 IRQ is not reached yet. The dmesg shows [ 0.799326] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.799351] ehci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.799353] ehci_hcd 0000:00:1a.0: EHCI Host Controller [ 0.799358] ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1 [ 0.799372] ehci_hcd 0000:00:1a.0: debug port 2 [ 0.803248] ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported [ 0.803259] ehci_hcd 0000:00:1a.0: irq 16, io mem 0xf7e08000 [ 0.808736] ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00 [ 0.808760] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 0.808763] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 0.808766] usb usb1: Product: EHCI Host Controller [ 0.808768] usb usb1: Manufacturer: Linux 3.7.10-1.28-desktop ehci_hcd [ 0.808770] usb usb1: SerialNumber: 0000:00:1a.0 [ 0.808860] hub 1-0:1.0: USB hub found [ 0.808863] hub 1-0:1.0: 2 ports detected [...] [ 3.692043] 8139too 0000:04:00.0 eth0: RealTek RTL8139 at 0xffffc900061ea000, 00:00:1c:d9:11:e7, IRQ 16 [ 3.692045] 8139too 0000:04:00.0 eth0: Media type forced to Full Duplex now it is one hour later: /home/werner> grep 16: /proc/interrupts | sed -r 's@ +@ @g' 16: 68 0 113329 0 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1, eth1 /home/werner> dmesg | grep 'nobody care' /home/werner> grep nobody /var/log/messages /home/werner> it works. Werner -- "Having a smoking section in a restaurant is like having a peeing section in a swimming pool." -- Edward Burr
Attachment:
pgpF0L3jROrbh.pgp
Description: PGP signature