[opensuse-kernel] kernel: xhci_queue_intr_tx: N callbacks suppressed
Hi: I recently plugged a cheap-ass USB 3.0 PCI controller to my desktop. 4: PCI 200.0: 0c03 USB Controller [Created at pci.319] Unique ID: B35A.G7QrRCuD8R9 Parent ID: HnsE.9jym6yN0nc3 SysFS ID: /devices/pci0000:00/0000:00:1c.5/0000:02:00.0 SysFS BusID: 0000:02:00.0 Hardware Class: usb controller Model: "VIA USB Controller" Vendor: pci 0x1106 "VIA Technologies, Inc." Device: pci 0x3432 SubVendor: pci 0x1106 "VIA Technologies, Inc." SubDevice: pci 0x3432 Revision: 0x03 Driver: "xhci_hcd" Driver Modules: "xhci_hcd" Memory Range: 0xf9800000-0xf9800fff (rw,non-prefetchable) IRQ: 45 (14414965 events) Module Alias: "pci:v00001106d00003432sv00001106sd00003432bc0Csc03i30" Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #25 (PCI bridge) it works but I am getting flooded with : kernel: xhci_queue_intr_tx: N callbacks suppressed (N is between 1 and 17) hundreds of times in my logs. This all happends when the only device which is currently plugged there a: 19: USB 00.0: 0000 Unclassified device [Created at usb.122] Unique ID: lcCT.E6C8KV8Ug_9 Parent ID: mozZ.4I_yH2puRXE SysFS ID: /devices/pci0000:00/0000:00:1c.5/0000:02:00.0/usb9/9-1/9-1.4/9-1.4:1.0 SysFS BusID: 9-1.4:1.0 Hardware Class: unknown Model: "Logitech Unclassified device" Hotplug: USB Vendor: usb 0x046d "Logitech, Inc." Device: usb 0x0825 Revision: "0.10" Serial ID: "A621BF00" Driver: "uvcvideo" Driver Modules: "uvcvideo" Device File: /dev/input/event18 Device Files: /dev/input/event18, /dev/input/by-id/usb-046d_0825_A621BF00-event-if00, /dev/input/by-path/pci-0000:02:00.0-usb-0:1.4:1.0-event Device Number: char 13:82 Speed: 480 Mbps Module Alias: "usb:v046Dp0825d0010dcEFdsc02dp01ic0Eisc01ip00in00" Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #33 (Hub) Is in use. Looking at the sourcecode.. It probably comes from here.. http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ring.c?a=arm#L303... /* FIXME change this to a warning and a suggestion to use new API 3049 * to set the polling interval (once the API is added). 3050 */ 3051 if (xhci_interval != ep_interval) { 3052 if (printk_ratelimit()) 3053 dev_dbg(&urb->dev->dev, "Driver uses different interval" 3054 " (%d microframe%s) than xHCI " 3055 "(%d microframe%s)\n", 3056 ep_interval, 3057 ep_interval == 1 ? "" : "s", 3058 xhci_interval, 3059 xhci_interval == 1 ? "" : "s"); 3060 urb->interval = xhci_interval; 3061 /* Convert back to frames for LS/FS devices */ 3062 if (urb->dev->speed == USB_SPEED_LOW || 3063 urb->dev->speed == USB_SPEED_FULL) 3064 urb->interval /= 8; 3065 } Ok, there is a limitation in the API according to the docs, no problem with that .. however I wonder why I am getting this message at all since neither CONFIG_USB_DEBUG or CONFIG_USB_XHCI_HCD_DEBUGGING are set in openSUSE kernel_HEAD. is this a bug (using dev_dbg instead of xhci_dbg) or I am missing something ? -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
On 02/26/2013 06:34 PM, Cristian Rodríguez wrote:
Hi:
I recently plugged a cheap-ass USB 3.0 PCI controller to my desktop.
4: PCI 200.0: 0c03 USB Controller [Created at pci.319] Unique ID: B35A.G7QrRCuD8R9 Parent ID: HnsE.9jym6yN0nc3 SysFS ID: /devices/pci0000:00/0000:00:1c.5/0000:02:00.0 SysFS BusID: 0000:02:00.0 Hardware Class: usb controller Model: "VIA USB Controller" Vendor: pci 0x1106 "VIA Technologies, Inc." Device: pci 0x3432 SubVendor: pci 0x1106 "VIA Technologies, Inc." SubDevice: pci 0x3432 Revision: 0x03 Driver: "xhci_hcd" Driver Modules: "xhci_hcd" Memory Range: 0xf9800000-0xf9800fff (rw,non-prefetchable) IRQ: 45 (14414965 events) Module Alias: "pci:v00001106d00003432sv00001106sd00003432bc0Csc03i30" Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #25 (PCI bridge)
it works but I am getting flooded with :
kernel: xhci_queue_intr_tx: N callbacks suppressed (N is between 1 and 17) hundreds of times in my logs.
This all happends when the only device which is currently plugged there a:
19: USB 00.0: 0000 Unclassified device [Created at usb.122] Unique ID: lcCT.E6C8KV8Ug_9 Parent ID: mozZ.4I_yH2puRXE SysFS ID: /devices/pci0000:00/0000:00:1c.5/0000:02:00.0/usb9/9-1/9-1.4/9-1.4:1.0 SysFS BusID: 9-1.4:1.0 Hardware Class: unknown Model: "Logitech Unclassified device" Hotplug: USB Vendor: usb 0x046d "Logitech, Inc." Device: usb 0x0825 Revision: "0.10" Serial ID: "A621BF00" Driver: "uvcvideo" Driver Modules: "uvcvideo" Device File: /dev/input/event18 Device Files: /dev/input/event18, /dev/input/by-id/usb-046d_0825_A621BF00-event-if00, /dev/input/by-path/pci-0000:02:00.0-usb-0:1.4:1.0-event Device Number: char 13:82 Speed: 480 Mbps Module Alias: "usb:v046Dp0825d0010dcEFdsc02dp01ic0Eisc01ip00in00" Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #33 (Hub)
Is in use.
Looking at the sourcecode.. It probably comes from here..
http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ring.c?a=arm#L303...
/* FIXME change this to a warning and a suggestion to use new API 3049 * to set the polling interval (once the API is added). 3050 */ 3051 if (xhci_interval != ep_interval) { 3052 if (printk_ratelimit()) 3053 dev_dbg(&urb->dev->dev, "Driver uses different interval" 3054 " (%d microframe%s) than xHCI " 3055 "(%d microframe%s)\n", 3056 ep_interval, 3057 ep_interval == 1 ? "" : "s", 3058 xhci_interval, 3059 xhci_interval == 1 ? "" : "s"); 3060 urb->interval = xhci_interval; 3061 /* Convert back to frames for LS/FS devices */ 3062 if (urb->dev->speed == USB_SPEED_LOW || 3063 urb->dev->speed == USB_SPEED_FULL) 3064 urb->interval /= 8; 3065 }
Ok, there is a limitation in the API according to the docs, no problem with that .. however I wonder why I am getting this message at all since neither CONFIG_USB_DEBUG or CONFIG_USB_XHCI_HCD_DEBUGGING are set in openSUSE kernel_HEAD.
is this a bug (using dev_dbg instead of xhci_dbg) or I am missing something ?
It might be, or the module author wanted to see this message even though neither CONFIG_USB_DEBUG nor CONFIG_USB_XHCI_HCD_DEBUGGING. The dev_dbg macros are defined if CONFIG_DYNAMIC_DEBUG is defined, and it is in openSUSE kernels. What is certainly inappropriate is spamming your logs so badly. I would define a 'static int count' statement at the beginning of this routine and replace the if (printk_ratelimit()) statement with if (count++ < 10) That would get a maximum of 10 printouts for each load on the module. Larry -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
On Tuesday 26 February 2013 21:34:07 Cristian Rodríguez wrote:
Ok, there is a limitation in the API according to the docs, no problem with that .. however I wonder why I am getting this message at all since neither CONFIG_USB_DEBUG or CONFIG_USB_XHCI_HCD_DEBUGGING are set in openSUSE kernel_HEAD.
The device may not work correctly, so you need to see this. Regards Oliver -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
participants (3)
-
Cristian Rodríguez
-
Larry Finger
-
Oliver Neukum