Re: CONFIG_PREEMPT_RT_FULL an usb gadget

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

 



* Hänel-Baas, Alexander | 2013-09-12 11:41:56 [+0000]:

>Hello Sebastion,

Hello Alexander

>so the rndis configuration works...
>
>No I see on the target with the rt-preempt patch this kernel message:
>
>[   97.206853] g_ether gadget: high-speed config #2: RNDIS  <- the debian host is already connected and we have a putty connection to the target
>[  247.216366] g_ether gadget: rndis response on err -22        <- the debian host say:  communication error

There is quite some time in between.

>[  248.974081] NOHZ: local_softirq_pending 02
>[  248.974135] NOHZ: local_softirq_pending 80
>[  248.984213] NOHZ: local_softirq_pending 182
>[  249.010278] [sched_delayed] sched: RT throttling activated
>[  249.996113] NOHZ: local_softirq_pending 02
>[  249.996647] NOHZ: local_softirq_pending 82
>[  249.996798] NOHZ: local_softirq_pending 102
>[  250.986077] NOHZ: local_softirq_pending 100
>[  250.987073] NOHZ: local_softirq_pending 102
>[  251.976188] NOHZ: local_softirq_pending 02

And this looks like something is busy looping.

>[  253.286567] pch_udc 0000:05:02.4: pch_udc_ep_clear_nak: RxFIFO not Empty
>[  254.972880] NOHZ: local_softirq_pending 02

>On this situation the target is very slow. 
>top shows:
>
>Mem: 29972K used, 464160K free, 0K shrd, 0K buff, 8040K cached
>CPU:  0.1% usr 71.8% sys  0.0% nic 11.0% idle  0.0% io  0.0% irq 16.9% sirq
>Load average: 4.52 2.48 1.06 2/86 203
>  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
>   61     2 root     SW       0  0.0   0 20.1 [irq/18-pch-dma]
>   78     2 root     SW       0  0.0   0 16.6 [irq/18-ehci_hcd]
>  188     2 root     SW       0  0.0   0 14.5 [irq/18-pch_udc]
>   82     2 root     SW       0  0.0   0  9.1 [irq/18-ohci_hcd]
>   81     2 root     SW       0  0.0   0  8.3 [irq/18-ohci_hcd]
>   80     2 root     SW       0  0.0   0  7.8 [irq/18-ohci_hcd]
>    3     2 root     RW       0  0.0   0  6.6 [ksoftirqd/0]
>
>I hope that is right information to find the problem.

pch_udc and maybe pch-dma are probably the two brining the system down.
ehci & ohci are probably only invoked because they share the same line.

Can you check what pch udc/dma are doing on normal situations and what
is different on -RT? My guess is that the UDC is not working well.
I just booted v3.10.14-rt9 on am335x-evm with musb as the UDC and rndis
gadget against x86 with the same kernel.
The host says:
| usbcore: registered new interface driver cdc_ether
| rndis_host 2-1.4:2.0: usb_probe_interface
| rndis_host 2-1.4:2.0: usb_probe_interface - got id
| rndis_host 2-1.4:2.0 usb0: register 'rndis_host' at usb-0000:00:05.0-1.4, RNDIS device, 42:10:84:84:ab:88
| usbcore: registered new interface driver rndis_host
| usb 2-1.4: link qh32-0001/f19d9de0 start 2 [1/0 us]
|root@squsb:~# ping 10.10.10.10 -c1
|PING 10.10.10.10 (10.10.10.10) 56(84) bytes of data.
|64 bytes from 10.10.10.10: icmp_seq=1 ttl=64 time=1.18 ms
|
|--- 10.10.10.10 ping statistics ---
|1 packets transmitted, 1 received, 0% packet loss, time 0ms
|rtt min/avg/max/mdev = 1.185/1.185/1.185/0.000 ms

and the device:
| usb0: eth_open
| usb0: eth_start
| g_ether gadget: rndis_open
| rndis_set_param_medium: 0 4259840
| g_ether gadget: suspend
| g_ether gadget: reset config
| g_ether gadget: rndis deactivated
| usb0: gether_disconnect
| g_ether gadget: high-speed config #2: RNDIS
| g_ether gadget: init rndis
| g_ether gadget: RNDIS RX/TX early activation ... 
| usb0: qlen 10
| g_ether gadget: rndis_open
| rndis_set_param_medium: 0 4259840
| usb0: eth_start
| rndis_set_param_dev:
| g_ether gadget: rndis req21.00 v0000 i0000 l24
| rndis_msg_parser: RNDIS_MSG_INIT
| g_ether gadget: rndis reqa1.01 v0000 i0000 l1025
| g_ether gadget: rndis req21.00 v0000 i0000 l28
| gen_ndis_query_resp: RNDIS_OID_GEN_PHYSICAL_MEDIUM
| g_ether gadget: rndis reqa1.01 v0000 i0000 l1025
| g_ether gadget: rndis req21.00 v0000 i0000 l76
| gen_ndis_query_resp: RNDIS_OID_802_3_PERMANENT_ADDRESS
| g_ether gadget: rndis reqa1.01 v0000 i0000 l1025
| g_ether gadget: rndis req21.00 v0000 i0000 l32
| gen_ndis_set_resp: RNDIS_OID_GEN_CURRENT_PACKET_FILTER 0000002d
| g_ether gadget: rndis reqa1.01 v0000 i0000 l1025
|/ # ping -c1 10.10.10.11
|PING 10.10.10.11 (10.10.10.11): 56 data bytes
|64 bytes from 10.10.10.11: seq=0 ttl=64 time=1.433 ms

I used a difference UDC (musb instead if pch_udc). Since the rndis is
working I think is okay and the problem is somewhere around your UDC.
Try to disable ehci & ohci and try to figure out why pch is taking so
long.

>Greetings
>Alexander

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux