Re: usb XHCI: "ERROR no room on ep ring" and kernel crash with USB Wifi dongle.

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

 



On 12/02/2011 03:09 PM, Aman Deep wrote:
> Hi Sarah,
> 
> My ARM board has an xHCI controller on it.
> I have installed linux-2.6.35.12 on it.
> 
> Observations:
> ==========
> When i connect USB Wifi dongle, I see the following phenomenon:
> "ERROR no room on ep ring" message comes in the dmesg several
> times(around a 100 times) and eventually
> the kernel crashes.
> I see that the TRBS_PER_SEGMENT #define is defined to 64.
> When I change it to 256, I don't see this crash works fine.
> 
> 
> When TRBS_PER_SEGMENT = 64, I see the following kernel messages:
> xhci-sdp xhci-sdp.0: ERROR no room on ep ring
> [  261.072000] xhci-sdp xhci-sdp.0: ERROR no room on ep ring
> [  261.072000] Unable to handle kernel NULL pointer dereference at
> virtual address 000000d3

EP ring may be full with current driver, but should not result in a NULL
pointer dereference. Have you tried latest stable kernel?

> [  261.072000] pgd = c0004000
> [  261.072000] [000000d3] *pgd=00000000
> [  261.072000] ================================================================================
> [  261.072000]  SMP Send Stop Other CPU!
> [  261.072000] ================================================================================
> [  261.072000] ================================================================================
> [  261.072000] CPU1: stopping
> [  261.072000]  KERNEL Version : 0070
> [  261.072000] ================================================================================
> [  261.072000] --------------------------------------------------------------------------------------
> [  261.072000] [VDLP] DISPLAY PC, LR in KERNEL Level
> [  261.072000] pc:c03b02cc, ra:c03b0294
> [  261.072000] --------------------------------------------------------------------------------------
> [  261.072000] PC meminfo in kernel(0xc03b0298 to 0xc03b02cc)
> [  261.072000] 0280:
>     e3c23d7f e3c3303f
> [  261.072000] 02a0: e5933000 e3130002 0a000000 ebffec2d e3550000
> 1a00009e e1a0100d e3c13d7f
> [  261.072000] 02c0: e3c3303f e593600c e5931004 e596a0cc
> [  261.072000] --------------------------------------------------------------------------------------
> [  261.072000] LR meminfo in kernel(0xc03afa94 to 0xc03b0294)
> [  261.072000] fa80:
> 0a0000e4 e59f1518 e0031001
> [  261.072000] faa0: e37106bb 05921000 03c3380f 05813000 059f3504
> 0a000133 e20304fe e35004fa
> [  261.072000] fac0: 059f34f8 0a000084 e3c31cff e59fc4f0 e3c1100f
> e151000c 0a000003 e59f14e4
> [  261.072000] fae0: e0031001 e35104fe 1a000001 e5921000 ea00011b
> e1a01aa3 e1a01a81 e371050f
> [  261.072000] fb00: 0a000104 e350033f e5921000 1a000117 e3c3380f
> e5813000 e59f34ac e2800341
> [  261.072000] fb20: e5823004 e89da878 e210540e 1a000079 e59fc498
> e000c00c e35c0401 1a00001e
> [  261.072000] fb40: e59fc48c e59f448c e000c00c e15c0004 0a0000b5
> e59fc480 e000c00c e35c0612
> [  261.072000] fb60: 0a0000b1 e59fc474 e000c00c e35c0401 05911000
> 03c03a0f 05813000 059f3460
> [  261.072000] fb80: 0a000100 e59fc45c e59fe45c e000c00c e15c000e
> 0a0000ae e59fe450 e59f4450
> [  261.072000] fba0: e000e00e e15e0004 0a0000b9 e59fe444 e15c000e
> 1a0000b4 ea0000b5 e59fc438
> [  261.072000] fbc0: e59f5438 e000c00c e15c0005 1a000015 e59fc42c
> e59f542c e000c00c e15c0005
> [  261.072000] fbe0: 0a000091 e59fc420 e59f5420 e000c00c e15c0005
> 1a000005 e5913000 e384463a
> [  261.072000] fc00: e3844001 e5834000 e59f3404 ea0000dd e59f23bc
> e59f33fc e0002002 e1520003
> [  261.072000] fc20: 1a000077 ea000074 e59fc3ec e000c00c e35c0090
> 1a000007 e59f23e0 e0002002
> [  261.072000] fc40: e3520090 0a000094 e59f33d4 e1520003 1a00007f
> ea00008c e59fc3c8 e000c00c
> [  261.072000] fc60: e35c0090 1a000013 e59fc36c e59f43b8 e000c00c
> e15c0004 0a000061 e59fc3ac
> [  261.072000] fc80: e000c00c e35c00d0 1a000088 e3c03aff e5911000
> e3833a02 e3130501 13c3300f
> [  261.072000] fca0: 13833001 e5813000 e3130020 e59f1380 e59f3380
> ea0000b2 e59f137c e0001001
> [  261.072000] fcc0: e59f0378 e1510000 0a000057 e59f1370 e1530001
> 1a000003 e59f3368 e5823004
> [  261.072000] fce0: e3a00002 e89da878 e3c33aff e5921000 e3c3300f
> e3833001 e3130010 13c33c0f
> [  261.072000] fd00: 13833c02 e5813000 e3130601 e59f1338 e59f3338
> ea00009a e3550402 1a00000b
> [  261.072000] fd20: e59f1314 e0001001 e59f0324 e1510000 0a00003d
> e5921000 e3c30aff e3130601
> [  261.072000] fd40: e59f3310 e5810000 e59f130c ea00008c e59fc308
> e59f6308 e000c00c e15c0006
> [  261.072000] fd60: 1a000029 e59fc268 e59f42f8 e000c00c e15c0004
> 1a000006 e5911000 e3c03aff
> [  261.072000] fd80: e3c3300f e3833001 e5813000 e59f32d8 ea00007c
> e59f42d4 e59f52d4 e0004004
> [  261.072000] fda0: e1540005 0a000004 e59f422c e2855020 e0004004
> e1540005 1a000005 e5921000
> [  261.072000] fdc0: e3c33a0f e3c3300f e5813000 e59f32a4 ea00006c
> e59fe2a0 e59f42a0 e000e00e
> [  261.072000] fde0: e15e0004 0a000002 e59fe294 e15c000e 1a000003
> e1a00003 e1a01002 ebfffeba
> [  261.072000] fe00: e89da878 ebfffec6 e89da878 e59f6274 e15c0006
> 1a000022 e59f41b4 e59f5268
> [  261.072000] fe20: e0004004 e1540005 1a000001 e3a00000 e89da878
> e59fe254 e154000e 0a000012
> [  261.072000] fe40: e59fe1a0 e59f4248 e000e00e e15e0004 1a000001
> ebfffee2 e89da878 e15e000c
> [  261.072000] fe60: 0a000007 e59f11a0 e0001001 e59f0224 e1510000
> 0a000002 e28000c0 e1510000
> [  261.072000] fe80: 1a000003 e1a00003 e1a01002 ebfffec3 e89da878
> e1a00003 e1a01002 ebfffeaf
> [  261.072000] fea0: e89da878 e2006303 e3560301 1a000001 ebfffe75
> e89da878 e3550302 1a00000a
> [  261.072000] fec0: e5911000 e384463a e2003942 e3844001 e59f01c4
> e3530902 e5814000 e59f11bc
> [  261.072000] fee0: 01a03000 11a03001 ea000026 e355040a 1a000005
> e5913000 e384463a e3844001
> [  261.072000] ff00: e5834000 e59f3198 ea00001e e20016fe e3510531
> 1a000007 e5921000 e3c33aff
> [  261.072000] ff20: e3833a01 e3130601 e5813000 e59f3174 e59f1174
> ea000012 e59f10c4 e0001001
> [  261.072000] ff40: e59f00c0 e1510000 0a000011 e203140f e351040f
> 0a00000e e35c040e e5921000
> [  261.072000] ff60: 1a000002 e5813000 e59f3140 ea000005 e3c30a0f
> e3130601 e5810000 e59f3130
> [  261.072000] ff80: e59f105c 11a03001 e5823004 e3a00001 e89da878
> e3a00000 e89da878 e1a0f00e
> [  261.072000] ffa0: fff30020 f1020000 fe500f00 f8100a00 fe5f0f00
> f84d0500 fd700000 c03af4cc
> [  261.072000] ffc0: c03af02c f1010000 ff000010 c03af124 0f900010
> 0ff000f0 01200020 0fb000f0
> [  261.072000] ffe0: 0fb00010 c03af45c 0ff00090 01400080 0ff000b0
> 012000a0 01600080 0f900090
> [  261.072000] 0000: 01000010 fff000f0 e1200070 0ff000d0 01200010
> c03af08c 01600010 0f000090
> [  261.072000] 0020: 0fe000f0 00200090 0e000090 01000090 0e1000d0
> c03af1b8 c03af160 0e10f000
> [  261.072000] 0040: 0010f000 e1a0c00d c03af104 c03af808 c03af7a0
> 0210f000 c03af6ec c03af738
> [  261.072000] 0060: 0f000010 06000010 068000b0 c03af3e4 0fa00030
> 06a00010 c03af38c 0ff00070
> [  261.072000] 0080: 06b00030 06f000b0 07000010 03f000f0 07800010
> 07400010 07500010 c03b01a0
> [  261.072000] 00a0: c03b00b8 c03aefc0 c03af34c c03af308 c03af430
> c03af494 e1a0c00d e92dddf0
> [  261.072000] 00c0: e24cb004 e52de004 ebf23527 e5903030 e5906034
> e3a00000 e7e32853 e203c601
> [  261.072000] 00e0: e5915040 e7914102 e12cf005 e1a0e00f e1a0f006
> e3500000 089dadf0 e1a00803
> [  261.072000] 0100: e3a05000 e1a00820 e1a06000 ea000002 e2467001
> e2855001 e0066007 e3560000
> [  261.072000] 0120: 1afffffa e2138502 e7e07c53 00444105 e2788001
> 33a08000 e0287007 e1a07107
> [  261.072000] 0140: e0844007 ea00000a e2606000 e0066000 e16f6f16
> e35c0000 e266601f 1514a004
> [  261.072000] 0160: 07916106 1781a106 05046004 e2406001 e0000006
> e3500000 e2844004 e2446004
> [  261.072000] 0180: 1afffff0 e3130602 089dadf0 e3580000 10466105
> e0676006 e7816102 e89dadf0
> [  261.072000] 01a0: e1a0c00d e92dd830 e24cb004 e52de004 ebf234ed
> e1a04000 e5902034 e1a05001
> [  261.072000] 01c0: e5913040 e3a00000 e12cf003 e1a0e00f e1a0f002
> e3500000 089da830 e59f3024
> [  261.072000] 01e0: e1a00004 e5942014 e5933000 e0823003 e581303c
> ebffffaf e5943014 e2833004
> [  261.072000] 0200: e585303c e89da830 c0501a30 e1a0c00d e92ddff0
> e24cb004 e24dd064 e52de004
> [  261.072000] 0220: ebf234d1 e50be078 e5923040 e1a07000 e1a09001
> e1a04002 e313000f 0a00001d
> [  261.072000] 0240: e3a00001 eb000123 e1a0100d e3c12d7f e3c2203f
> e59f32e4 e5921014 e59f22e0
> [  261.072000] 0260: e7922101 e7933002 e3530000 0a000005 e1a00004
> e1a01009 ebfffa32 e3500000
> [  261.072000] 0280: 13a05001 1a000000 e3a05000 e3a00001 eb0000f6
> e1a0200d
> [  261.072000] --------------------------------------------------------------------------------------
> [  261.072000]
> [  261.072000] Internal error: Oops: 17 [#1] PREEMPT SMP
> [  261.072000] last sysfs file: /sys/devices/virtual/net/bcm0/address
> [  261.072000] Modules linked in:
> [  261.072000]  hid_microsoft(0xbf3e4000) kernel version : 0070 SMP
> preempt mod_unload ARMv7
> [  261.072000]  mousedev(0xbf3db000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  evdev(0xbf3d4000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  usbhid(0xbf3c4000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  dhd(0xbf331000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  ftdi_sio(0xbf31e000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  usbserial(0xbf30e000) kernel version : 0070 SMP
> preempt mod_unload ARMv7
> [  261.072000]  usb_storage(0xbf2fa000) kernel version : 0070 SMP
> preempt mod_unload ARMv7
> [  261.072000]  xhci_hcd(0xbf2e5000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  ohci_hcd(0xbf2d6000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  ehci_hcd(0xbf2c3000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  usbcore(0xbf290000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  tntfs(P)(0xbf223000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  sdp_mac(0xbf219000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  sdp_ahci(0xbf20e000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  libata(0xbf1da000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  sd_mod(0xbf1cb000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  sr_mod(0xbf1c1000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  cdrom(0xbf1b2000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  fpi(P)(0xbf1a9000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  mali_drm(0xbf1a3000) kernel version : 0070 SMP preempt
> mod_unload ARMv7
> [  261.072000]  samdrv(P)(0xbf074000) kernel version : 0070 SMP
> preempt mod_unload ARMv7
> [  261.072000]  rfs_fat(P)(0xbf025000) kernel version : 0070 SMP
> preempt mod_unload ARMv7
> [  261.072000]  rfs_glue(P)(0xbf000000) kernel version : 0070 SMP
> preempt mod_unload ARMv7
> [  261.072000]
> [  261.072000] CPU: 22016    Tainted: P             (2.6.35.13 #1)
> [  261.072000] PC is at do_page_fault+0xc0/0x350
> [  261.072000] LR is at do_page_fault+0x88/0x350
> [  261.072000] pc : [<c03b02cc>]    lr : [<c03b0294>]    psr: 60000193
> [  261.072000] sp : d52f8090  ip : c03b0684  fp : d52f811c
> [  261.072000] r10: 20000193  r9 : 00000017  r8 : c04db438
> [  261.072000] r7 : 000000d3  r6 : 00000007  r5 : 00000000  r4 : d52f81c8
> [  261.072000] r3 : d52f8000  r2 : d52f8090  r1 : 00000004  r0 : 00000001
> [  261.072000] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM
> Segment user
> [  261.072000] Control: 10c53c7d  Table: 93b0004a  DAC: 00000017
> [  261.072000] Process  (pid: 0, stack limit = 0xd52f62f0)
> [  261.072000] Stack: (0xd52f8090 to 0xd52f8008)
> [  261.072000] Backtrace(CPU 22016):
> [  261.072000] [<c03b020c>] (do_page_fault+0x0/0x350) from
> [<c0039574>] (do_DataAbort+0x44/0xa8)
> [  261.072000] [<c0039530>] (do_DataAbort+0x0/0xa8) from [<c03ae02c>]
> (__dabt_svc+0x4c/0x60)
> [  261.072000] Exception stack(0xd52f81c8 to 0xd52f8210)
> [  261.072000] 81c0:                   00000001 00000004 d52f8210
> d52f8000 d52f8348 00000000
> [  261.072000] 81e0: 00000007 000000d3 c04db438 00000017 20000193
> d52f829c c03b0684 d52f8210
> [  261.072000] 8200: c03b0294 c03b02cc 60000193 ffffffff 00000109
> [  261.072000]  r7:000000d3 r6:00000007 r5:d52f81fc r4:ffffffff
> [  261.072000] [<c03b020c>] (do_page_fault+0x0/0x350) from
> [<c0039574>] (do_DataAbort+0x44/0xa8)
> [  261.072000] [<c0039530>] (do_DataAbort+0x0/0xa8) from [<c03ae02c>]
> (__dabt_svc+0x4c/0x60)
> [  261.072000] Exception stack(0xd52f8348 to 0xd52f8390)
> [  261.072000] 8340:                   00000001 00000004 d52f8390
> d52f8000 d52f84c8 00000000
> [  261.072000] 8360: 00000007 000000d3 c04db438 00000017 20000193
> d52f841c c03b0684 d52f8390
> [  261.072000] 8380: c03b0294 c03b02cc 60000193 ffffffff 000001c9
> [  261.072000]  r7:000000d3 r6:00000007 r5:d52f837c r4:ffffffff
> [  261.072000] [<c03b020c>] (do_page_fault+0x0/0x350) from
> [<c0039574>] (do_DataAbort+0x44/0xa8)
> [  261.072000] [<c0039530>] (do_DataAbort+0x0/0xa8) from [<c03ae02c>]
> (__dabt_svc+0x4c/0x60)
> [  261.072000] Exception stack(0xd52f84c8 to 0xd52f8510)
> [  261.072000] 84c0:                   00000001 00000004 d52f8510
> d52f8000 d52f8648 00000000
> [  261.072000] 84e0: 00000007 000000d3 c04db438 00000017 20000193
> d52f859c c03b0684 d52f8510
> [  261.072000] 8500: c03b0294 c03b02cc 60000193 ffffffff 00000289
> [  261.072000]  r7:000000d3 r6:00000007 r5:d52f84fc r4:ffffffff
> [  261.072000] [<c03b020c>] (do_page_fault+0x0/0x350) from
> [<c0039574>] (do_DataAbort+0x44/0xa8)
> [  261.072000] [<c0039530>] (do_DataAbort+0x0/0xa8) from [<c03ae02c>]
> (__dabt_svc+0x4c/0x60)
> [  261.072000] Exception stack(0xd52f8648 to 0xd52f8690)
> [  261.072000] 8640:                   00000001 00000004 d52f8690
> d52f8000 d52f87c8 00000000
> [  261.072000] 8660: 00000007 000000d3 c04db438 00000017 20000193
> d52f871c c03b0684 d52f8690
> [  261.072000] 8680: c03b0294 c03b02cc 60000193 ffffffff 00000349
> [  261.072000]  r7:000000d3 r6:00000007 r5:d52f867c r4:ffffffff
> [  261.072000] [<c03b020c>] (do_page_fault+0x0/0x350) from
> [<c0039574>] (do_DataAbort+0x44/0xa8)
> [  261.072000] [<c0039530>] (do_DataAbort+0x0/0xa8) from [<c03ae02c>]
> (__dabt_svc+0x4c/0x60)
> [  261.072000] Exception stack(0xd52f87c8 to 0xd52f8810)
> [  261.072000] 87c0:                   00000001 00000004 d52f8810
> d52f8000 d52f8948 00000000
> [  261.072000] 87e0: 00000007 000000d3 c04db438 00000017 20000193
> d52f889c c03b0684 d52f8810
> [  261.072000] 8800: c03b0294 c03b02cc 60000193 ffffffff 00000409
> [  261.072000]  r7:000000d3 r6:00000007 r5:d52f87fc r4:ffffffff
> 
> 
> 
> I have a few questions with respect to this:
> 1) fixing segment size -> 256 : Is this correct and  is any other
> value for TRBS_PER_SEGMENT possible?

This is a temporary workaround. We need dynamic ring expansion here,
which I'm working on but haven't got time to update it...

> 2) After increasing size of TRBS_PER_SEGMENT i got below log :
>   usb 5-1: ep 0x4 - urb len = 0x5dc (1500), addr = 0x66ec8800, num_trbs = 1
>   xhci-sdp xhci-sdp.0: WARN: short transfer on control ep
> 
> ----------> usb5-1 is Xhci's first port.
> Is this an error or a normal condition ?

This is normal.

> 3)  If I want to set "ring segemts = 8", how do we modify this in kernel?
> 

See following code in xhci_endpoint_init(), drivers/usb/host/xhci-mem.c:

if (usb_endpoint_xfer_isoc(&ep->desc))
	virt_dev->eps[ep_index].new_ring =
		xhci_ring_alloc(xhci, 8, true, true, mem_flags);
else
	virt_dev->eps[ep_index].new_ring =
		xhci_ring_alloc(xhci, 1, true, false, mem_flags);

Here driver allocates 8 segments for isoc endpoint and 1 segment for
control/bulk/interrupt endpoint by default. You can modify the number
here to change the number of segments allocated.

Other than these changes, can you try the ring expansion patchset start
here:

http://marc.info/?l=linux-usb&m=131918645424329&w=2

To see if it helps in your situation? It's dynamic ring expansion
patchset which is still under development. It should be applied to the
latest kernel.

Thanks,
Andiry


> 
> Thanks & Regards,
> Aman
> --
> 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
> 
> 


--
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