On Fri, Sep 11, 2015 at 04:51:22PM +0530, maitysanchayan@xxxxxxxxx wrote: > On 15-09-11 15:56:17, maitysanchayan@xxxxxxxxx wrote: > > Hello Peter, > > > > On 15-09-11 16:58:52, Peter Chen wrote: > > > On Fri, Sep 11, 2015 at 02:36:58PM +0530, maitysanchayan@xxxxxxxxx wrote: > > > > Hello, > > > > > > > > We are using the 4.1.5 kernel on Freescale Vybrid SoC which has a Chipidea > > > > IP. One of our customer's reported a kernel crash while using USB client > > > > with the USB gadget RNDIS functionality while being connected to a host > > > > running Windows 7 SP1 Pro and I was also able to reproduce the issue here. > > > > > > > > The issue seems reproducible and occurs while doing bidirectional communication > > > > over socket after an hour or so. Strangely it did not happen while doing one > > > > way transfers from the Vybrid to PC side which I tested by running for almost > > > > 16 hours. For testing birectional communication I had a simple Python echo server > > > > running on PC and client on Vybrid side while for one way test I had Python > > > > client on Vybrid and Hercules application on Windows side. > > > > > > > > Both the Python client and server do a continous send/recv in a while loop. > > > > > > > > I could not reproduce it while doing bidirectional iperf tests for 5-6 hours > > > > with a Linux machine. > > > > > > > > The same issue is also seen with 4.0.5. Is this a known issue or reported > > > > earlier? > > > > > > > > The stack trace is below on 4.1.5 kernel. > > > > > > > > [69253.557550] Unable to handle kernel NULL pointer dereference at virtual address 00000000 > > > > [69253.565681] pgd = 80004000 > > > > [69253.568396] [00000000] *pgd=00000000 > > > > [69253.572004] Internal error: Oops: 817 [#1] ARM > > > > [69253.576457] Modules linked in: mcp251x can_dev > > > > [69253.580963] CPU: 0 PID: 0 Comm: swapper Not tainted 4.1.4-v2.5b1+gdc92514 #1 > > > > [69253.588016] Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree) > > > > [69253.594469] task: 807d04b0 ti: 807ca000 task.ti: 807ca000 > > > > [69253.599896] PC is at add_td_to_list+0x118/0x1a0 > > > > [69253.604441] LR is at add_td_to_list+0x58/0x1a0 > > > > [69253.608895] pc : [<803b9fd4>] lr : [<803b9f14>] psr: 30010193 > > > > [69253.608895] sp : 807cbcf0 ip : 00000006 fp : 807cbd14 > > > > [69253.620379] r10: 00000008 r9 : 00004000 r8 : 8da82db4 > > > > [69253.625614] r7 : 8e02f6e8 r6 : 00000008 r5 : 8da82d80 r4 : 8da321c0 > > > > [69253.632148] r3 : 00000000 r2 : 8e403580 r1 : 8da82dbc r0 : 00000000 > > > > [69253.638687] Flags: nzCV IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel > > > > [69253.646087] Control: 10c5387d Table: 8cb50059 DAC: 00000015 > > > > [69253.651839] Process swapper (pid: 0, stack limit = 0x807ca208) > > > > [69253.657681] Stack: (0x807cbcf0 to 0x807cc000) > > > > [69253.662053] bce0: 8da82d80 8e02f6e8 00000008 8e02f010 > > > > [69253.670248] bd00: 8da82db4 00004000 807cbd54 807cbd18 803ba9dc 803b9ec8 00000000 00000000 > > > > [69253.678439] bd20: 00000000 00000000 00000000 a0010193 8d94d5f4 8e23f3d4 00000000 00000024 > > > > [69253.686633] bd40: 8e02f408 8db1773c 807cbd6c 807cbd58 803bad8c 803ba8a4 8d94d540 8d94d5f4 > > > > [69253.694825] bd60: 807cbd84 807cbd70 803ca360 803bad68 8081f3f8 8d8ce000 807cbda4 807cbd88 > > > > [69253.703017] bd80: 803cbd78 803ca310 8db17700 8db1773c 00000024 8db17700 807cbdbc 807cbda8 > > > > [69253.711209] bda0: 803ca624 803cbaec 00000024 8db1773c 807cbdcc 807cbdc0 803c30e4 803ca610 > > > > [69253.719402] bdc0: 807cbe3c 807cbdd0 803bb264 803c30dc 807cbdec 80815d74 803ba500 8e02f408 > > > > [69253.727594] bde0: 807cc044 00000001 8e02f440 8e02f630 8e02f010 8e02f010 00000000 8db17734 > > > > [69253.735787] be00: 8e02f40c 8e02f460 00000021 00240000 807cbe5c 8e02f010 807dd644 00000000 > > > > [69253.743979] be20: 00000000 00000027 8e0b8480 807fdc3d 807cbe54 807cbe40 803b81ac 803bada8 > > > > [69253.752172] be40: 8e2c2580 807dd644 807cbe8c 807cbe58 8004ced0 803b8160 800644b8 80040464 > > > > [69253.760363] be60: 00003efc 8e0b8480 807dd644 00000000 00000001 8e006000 00000001 807f2430 > > > > [69253.768556] be80: 807cbea4 807cbe90 8004cfc8 8004ce5c 8e0b8480 807dd644 807cbebc 807cbea8 > > > > [69253.776748] bea0: 8004f538 8004cfa4 00000027 00000000 807cbed4 807cbec0 8004c638 8004f4a0 > > > > [69253.784941] bec0: 807dd47c 00000000 807cbefc 807cbed8 8004c89c 8004c610 9000210c 807cc364 > > > > [69253.793133] bee0: 807cbf20 90002100 807cc0cc 00000001 807cbf1c 807cbf00 8000935c 8004c84c > > > > [69253.801325] bf00: 8000ff2c 60010013 ffffffff 807cbf54 807cbf74 807cbf20 80013700 8000933c > > > > [69253.809517] bf20: 00000001 00000000 00000000 8001d540 807ca000 807cc0cc 00000000 00000000 > > > > [69253.817710] bf40: 807cc0cc 00000001 807f2430 807cbf74 807cbf78 807cbf68 8000ff28 8000ff2c > > > > [69253.825902] bf60: 60010013 ffffffff 807cbf9c 807cbf78 80045c1c 8000fef8 807fdc3b 807cc0d4 > > > > [69253.834095] bf80: 807cbf9c 807d4310 805a7cd0 ffffffff 807cbfac 807cbfa0 805a3ee8 80045a68 > > > > [69253.842287] bfa0: 807cbff4 807cbfb0 80794cd4 805a3e7c ffffffff ffffffff 807946d4 00000000 > > > > [69253.850480] bfc0: 00000000 807c0cc8 00000000 807fdfd4 807cc074 807c0cc4 807d16e8 80004059 > > > > [69253.858671] bfe0: 410fc051 00000000 00000000 807cbff8 80008078 80794950 00000000 00000000 > > > > [69253.866848] Backtrace: > > > > [69253.869340] [<803b9ebc>] (add_td_to_list) from [<803ba9dc>] (_ep_queue.isra.22+0x144/0x47c) > > > > [69253.877691] r9:00004000 r8:8da82db4 r7:8e02f010 r6:00000008 r5:8e02f6e8 r4:8da82d80 > > > > [69253.885533] [<803ba898>] (_ep_queue.isra.22) from [<803bad8c>] (ep_queue+0x30/0x40) > > > > [69253.893190] r10:8db1773c r9:8e02f408 r8:00000024 r7:00000000 r6:8e23f3d4 r5:8d94d5f4 > > > > [69253.901103] r4:a0010193 > > > > [69253.903672] [<803bad5c>] (ep_queue) from [<803ca360>] (rndis_response_available+0x5c/0x80) > > > > [69253.911944] r5:8d94d5f4 r4:8d94d540 > > > > [69253.915563] [<803ca304>] (rndis_response_available) from [<803cbd78>] (rndis_msg_parser+0x298/0x4f4) > > > > [69253.924700] r5:8d8ce000 r4:8081f3f8 > > > > [69253.928317] [<803cbae0>] (rndis_msg_parser) from [<803ca624>] (rndis_command_complete+0x20/0x40) > > > > [69253.937102] r7:8db17700 r6:00000024 r5:8db1773c r4:8db17700 > > > > [69253.942840] [<803ca604>] (rndis_command_complete) from [<803c30e4>] (usb_gadget_giveback_request+0x14/0x18) > > > > [69253.952584] r5:8db1773c r4:00000024 > > > > [69253.956201] [<803c30d0>] (usb_gadget_giveback_request) from [<803bb264>] (udc_irq+0x4c8/0xcb4) > > > > [69253.964826] [<803bad9c>] (udc_irq) from [<803b81ac>] (ci_irq+0x58/0x120) > > > > [69253.971529] r10:807fdc3d r9:8e0b8480 r8:00000027 r7:00000000 r6:00000000 r5:807dd644 > > > > [69253.979443] r4:8e02f010 > > > > [69253.982007] [<803b8154>] (ci_irq) from [<8004ced0>] (handle_irq_event_percpu+0x80/0x148) > > > > [69253.990100] r5:807dd644 r4:8e2c2580 > > > > [69253.993718] [<8004ce50>] (handle_irq_event_percpu) from [<8004cfc8>] (handle_irq_event+0x30/0x40) > > > > [69254.002597] r10:807f2430 r9:00000001 r8:8e006000 r7:00000001 r6:00000000 r5:807dd644 > > > > [69254.010511] r4:8e0b8480 > > > > [69254.013074] [<8004cf98>] (handle_irq_event) from [<8004f538>] (handle_fasteoi_irq+0xa4/0x16c) > > > > [69254.021603] r5:807dd644 r4:8e0b8480 > > > > [69254.025221] [<8004f494>] (handle_fasteoi_irq) from [<8004c638>] (generic_handle_irq+0x34/0x44) > > > > [69254.033839] r5:00000000 r4:00000027 > > > > [69254.037465] [<8004c604>] (generic_handle_irq) from [<8004c89c>] (__handle_domain_irq+0x5c/0xb0) > > > > [69254.046162] r5:00000000 r4:807dd47c > > > > [69254.049781] [<8004c840>] (__handle_domain_irq) from [<8000935c>] (gic_handle_irq+0x2c/0x5c) > > > > [69254.058139] r9:00000001 r8:807cc0cc r7:90002100 r6:807cbf20 r5:807cc364 r4:9000210c > > > > [69254.065979] [<80009330>] (gic_handle_irq) from [<80013700>] (__irq_svc+0x40/0x54) > > > > [69254.073467] Exception stack(0x807cbf20 to 0x807cbf68) > > > > [69254.078537] bf20: 00000001 00000000 00000000 8001d540 807ca000 807cc0cc 00000000 00000000 > > > > [69254.086730] bf40: 807cc0cc 00000001 807f2430 807cbf74 807cbf78 807cbf68 8000ff28 8000ff2c > > > > [69254.094912] bf60: 60010013 ffffffff > > > > [69254.098406] r7:807cbf54 r6:ffffffff r5:60010013 r4:8000ff2c > > > > [69254.104155] [<8000feec>] (arch_cpu_idle) from [<80045c1c>] (cpu_startup_entry+0x1c0/0x234) > > > > [69254.112448] [<80045a5c>] (c]<94(s_kl) [<x80008078) > > > > [2430-- i o nn t excptnner5190 30 520 > > > > > > Hi Sanchayan, > > > > > > It seems linked list (hwreq->tds) has corrupted, would you please open the kernel > > > debug for linked list to run again? Meanwhile, if you can share you > > > application and related instructions for testing, I can help test at > > > i.mx platform to see if it is memory corruption issue. > > > > Sorry I did not clearly understand "would you please open the kernel > > debug for linked list to run again?". > > > > I am running a Python client on the Vybrid as follows: > > > > #!/usr/env/python > > > > import socket > > > > TCP_IP = '192.168.11.2' > > TCP_PORT = 502 > > MESSAGE = 'Test USB Client\n' > > > > s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > > s.connect((TCP_IP, TCP_PORT)) > > while 1: > > s.send(MESSAGE) > > data = s.recv(1024) > > print data > > s.close() > > > > The corresponding Python server on host > > > > import socket > > > > HOST = '' > > TCP_PORT = 502 > > > > s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > > s.bind(HOST, TCP_PORT) > > s.listen(1) > > conn, addr = s.accept() > > print ('Connected by', addr) > > while 1: > > data = conn.recv(1024) > > print (data) > > if not data: continue > > conn.sendall(data) > > conn.close() > > > > I let them run and after an hour or so, I get the stack trace. > > Forgot to mention and attach the gadget schema we deploy for USB > RNDIS configuration. > > - Sanchayan. > attrs : > { > bcdUSB = 0x0; > bDeviceClass = 0x0; > bDeviceSubClass = 0x0; > bDeviceProtocol = 0x0; > bMaxPacketSize0 = 0x40; > idVendor = 0x1d6b; > idProduct = 0x0104; > bcdDevice = 0x400; > }; > strings = ( > { > lang = 0x409; > manufacturer = "Toradex"; > product = "Unknown"; > serialnumber = ""; > } ); > functions : > { > rndis_0 : > { > instance = "0"; > type = "rndis"; > attrs : > { > dev_addr = "00:14:2d:ff:ff:ff"; > host_addr = "00:14:2d:ff:ff:fe"; > qmult = 5; > }; > }; > }; > configs = ( > { > id = 1; > name = "c"; > attrs : > { > bmAttributes = 0x80; > bMaxPower = 0x2; > }; > strings = ( > { > lang = 0x409; > configuration = "Conf 1"; > } ); > functions = ( > { > name = "rndis.0"; > function = "rndis_0"; > } ); > } ); Enable CONFIG_DEBUG_LIST, it has below position if you run make menuconfig Kernel hacking ---> [*] Debug linked list manipulation Oh, I am little for python, I don't know how to run it at both device side and windows. At my device side, it has below python utilities: root@imx6sxsabresd:~# python python python2 python2.7 python-config python2-config python2.7-config I am running Windows 7 bit 64 OS at host. I had thought the test likes iperf, but it does not.. -- Best Regards, Peter Chen -- 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