I am reposting this here since it looks like I posted it to the wrong group initially... Any help is greatly appreciated.
We are seeing an issue when connecting our device to a server running VMWare ESXi 6.7.0 VMKernel. If the passthrough is not enabled for the USB port, our device generates the following RCU and I cannot longer type anything at the console. If passthrough is enabled, then it works fine. If I remove the g_serial.ko module , the issue does not occur.
Here is the output of uname -a for our system:
Linux (none) 4.1.8-rt8+gbd51baf #1 SMP Thu Jun 6 17:15:51 EDT 2019 ppc64 GNU/Linux
and the output of modinfo g_serial:
filename: /lib/modules/4.1.8-rt8+gbd51baf/kernel/drivers/usb/gadget/legacy/g_serial.ko
license: GPL
author: David Brownell
author: Al Borchers
description: Gadget Serial v2.4
depends: libcomposite
intree: Y
vermagic: 4.1.8-rt8+gbd51baf SMP mod_unload modversions
parm: idVendor:USB Vendor ID (ushort)
parm: idProduct:USB Product ID (ushort)
parm: bcdDevice:USB Device version (BCD) (ushort)
parm: iSerialNumber:SerialNumber string (charp)
parm: iManufacturer:USB Manufacturer string (charp)
parm: iProduct:USB Product string (charp)
parm: use_acm:Use CDC ACM, default=yes (bool)
parm: use_obex:Use CDC OBEX, default=no (bool)
parm: n_ports:number of ports to create, default=1 (uint)
modinfo libcomposite
filename: /lib/modules/4.1.8-rt8+gbd51baf/kernel/drivers/usb/gadget/libcomposite.ko
author: David Brownell
license: GPL
depends: configfs,udc-core
intree: Y
vermagic: 4.1.8-rt8+gbd51baf SMP mod_unload modversions
root@(none):~# modinfo udc-core
filename: /lib/modules/4.1.8-rt8+gbd51baf/kernel/drivers/usb/gadget/udc/udc-core.ko
license: GPL v2
author: Felipe Balbi <balbi@ti.com>
description: UDC Framework
depends:
intree: Y
vermagic: 4.1.8-rt8+gbd51baf SMP mod_unload modversions
root@(none):~# modinfo configfs
filename: /lib/modules/4.1.8-rt8+gbd51baf/kernel/fs/configfs/configfs.ko
description: Simple RAM filesystem for user driven kernel subsystem configuration.
version: 0.0.2
license: GPL
author: Oracle
alias: fs-configfs
srcversion: BAC846119DF7A8FAD803348
depends:
intree: Y
vermagic: 4.1.8-rt8+gbd51baf SMP mod_unload modversions
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO: rcu_sched self-detected stall on CPU
INFO: rcu_sched self-detected stall on CPU
0: (5250 ticks this GP) idle=e15/140000000000001/0 softirq=0/0 fqs=24
(t=5250 jiffies g=3340 c=3339 q=11378)
rcu_sched kthread starved for 5226 jiffies!
Task dump for CPU 0:
run R running task 0 3068 3008 0x00000004
Call Trace:
[c0000000ca1b29d0] [c0000000000858d8] .sched_show_task+0xd8/0x164 (unreliable)
[c0000000ca1b2a50] [c0000000000ba970] .rcu_dump_cpu_stacks+0xd8/0x150
[c0000000ca1b2af0] [c0000000000c0364] .rcu_check_callbacks+0x5e0/0x8f4
[c0000000ca1b2c40] [c0000000000c6cec] .update_process_times+0x54/0x94
[c0000000ca1b2cc0] [c0000000000dc6d4] .tick_sched_handle.isra.17+0x5c/0x7c
[c0000000ca1b2d50] [c0000000000dc758] .tick_sched_timer+0x64/0xcc
[c0000000ca1b2df0] [c0000000000c7ff8] .__run_hrtimer+0xc0/0x2ec
[c0000000ca1b2e90] [c0000000000c85a8] .hrtimer_interrupt+0x13c/0x2f8
[c0000000ca1b2fa0] [c00000000001217c] .__timer_interrupt+0xa0/0x200
[c0000000ca1b3040] [c00000000001261c] .timer_interrupt+0x90/0xc4
[c0000000ca1b30c0] [c00000000001c054] exc_0x900_common+0x104/0x108
--- interrupt: 901 at .smp_call_function_many+0x324/0x3b8
LR = .smp_call_function_many+0x2e0/0x3b8
[c0000000ca1b33b0] [c0000000000e2f48] .smp_call_function_many+0x2c0/0x3b8 (unreliable)
[c0000000ca1b3470] [c00000000002ed48] .__flush_tlb_page+0x140/0x19c
[c0000000ca1b3530] [c00000000002c64c] .ptep_set_access_flags+0xb8/0x160
[c0000000ca1b35d0] [c00000000018dbb0] .do_wp_page+0x1ac/0x758
[c0000000ca1b36d0] [c00000000019078c] .handle_mm_fault+0xab8/0x1198
[c0000000ca1b37f0] [c00000000002b874] .do_page_fault+0x398/0x6cc
[c0000000ca1b38c0] [c00000000001d1d4] storage_fault_common+0x20/0x44
--- interrupt: 301 at .handle_rt_signal64+0x164/0x440
LR = .handle_rt_signal64+0x9c/0x440
[c0000000ca1b3c70] [c00000000000a974] .do_signal+0x17c/0x220
[c0000000ca1b3db0] [c00000000000ab98] .do_notify_resume+0x84/0x94
[c0000000ca1b3e30] [c000000000000c4c] .ret_from_except_lite+0x78/0x7c
Task dump for CPU 4:
run R running task 0 3111 3045 0x00000004
Call Trace:
[c000000062f23900] [c000000001117edc] nr_cpu_ids+0x0/0x4 (unreliable)
Task dump for CPU 6:
swapper/6 R running task 0 0 1 0x00000804
Call Trace:
[c0000000f022f9e0] [c0000000f022fa70] 0xc0000000f022fa70 (unreliable)
4: (1 GPs behind) idle=a65/140000000000001/0 softirq=0/0 fqs=24
(t=5302 jiffies g=3340 c=3339 q=11378)
rcu_sched kthread starved for 5279 jiffies!
Task dump for CPU 0:
run R running task 0 3068 3008 0x00000004
Call Trace:
[c0000000ca1b3900] [c0000000ca1b39a0] 0xc0000000ca1b39a0 (unreliable)
Task dump for CPU 4:
run R running task 0 3111 3045 0x00000004
Call Trace:
[c000000062f22f40] [c0000000000858d8] .sched_show_task+0xd8/0x164 (unreliable)
[c000000062f22fc0] [c0000000000ba970] .rcu_dump_cpu_stacks+0xd8/0x150
[c000000062f23060] [c0000000000c0364] .rcu_check_callbacks+0x5e0/0x8f4
[c000000062f231b0] [c0000000000c6cec] .update_process_times+0x54/0x94
[c000000062f23230] [c0000000000dc6d4] .tick_sched_handle.isra.17+0x5c/0x7c
[c000000062f232c0] [c0000000000dc758] .tick_sched_timer+0x64/0xcc
[c000000062f23360] [c0000000000c7ff8] .__run_hrtimer+0xc0/0x2ec
[c000000062f23400] [c0000000000c85a8] .hrtimer_interrupt+0x13c/0x2f8
[c000000062f23510] [c00000000001217c] .__timer_interrupt+0xa0/0x200
[c000000062f235b0] [c00000000001261c] .timer_interrupt+0x90/0xc4
[c000000062f23630] [c00000000001c054] exc_0x900_common+0x104/0x108
--- interrupt: 901 at .smp_call_function_many+0x324/0x3b8
LR = .smp_call_function_many+0x2e0/0x3b8
[c000000062f23920] [c0000000000e2f48] .smp_call_function_many+0x2c0/0x3b8 (unreliable)
[c000000062f239e0] [c00000000002ed48] .__flush_tlb_page+0x140/0x19c
[c000000062f23aa0] [c00000000002c64c] .ptep_set_access_flags+0xb8/0x160
[c000000062f23b40] [c00000000018dbb0] .do_wp_page+0x1ac/0x758
[c000000062f23c40] [c00000000019078c] .handle_mm_fault+0xab8/0x1198
[c000000062f23d60] [c00000000002b874] .do_page_fault+0x398/0x6cc
[c000000062f23e30] [c00000000001d1d4] storage_fault_common+0x20/0x44
Task dump for CPU 6:
Hello Pedro Valladares,
Did you configure PowerPC target board as USB Gadget mode? If yes, please test USB Gadget driver as the following.
Please configure Kernel configure as the following
Please refer to the following test procedure.
1. Bring all USB Gadget modules (driver/usb/gadget/*.ko including fs/configfs/configfs.ko) onto the target board.
2. Load device controller driver and test ethernet gadget
Load FSL gadget driver module udc-core.ko & fsl_usb2_udc.ko
bash# insmod udc-core.ko
bash# insmod fsl_usb2_udc.ko
Load Ethernet modules
bash# insmod configfs.ko
bash# insmod libcomposite.ko
bash# insmod u_ether.ko
bash# insmod u_rndis.ko
bash# insmod usb_f_rndis.ko
bash# insmod usb_f_ecm.ko
bash# insmod usb_f_ecm_subset.ko
bash# insmod g_ether.ko
using random self ethernet address
using random host ethernet address
usb0: HOST MAC 82:14:b4:63:d1:85
usb0: MAC 4a:b1:59:3b:b3:bd
using random self ethernet address
using random host ethernet address
g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
g_ether gadget: g_ether ready
bash# ifconfig usb0
usb0 Link encap:Ethernet HWaddr 5e:0c:de:2f:f9:0f
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
3. Assign an IP to usb0
bash# ifconfig usb0 10.232.1.11 netmask 255.255.255.0 up
IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready
bash# ifconfig usb0
Linux Kernel Drivers
Universal Serial Bus Interfaces
4. Connect a USB cable between target board USB port and the USB port on Windows host machine.
As soon as USB cable is plugged into a Windows XP host, the following message displays:
http://embedded.seattle.intel-research.net/wiki/index.php?
title=Setting_up_USBnet#Install_the_RNDIS_Driver
5. Download linux.inf from either of the following, and install the Windows XP RNDIS driver as mentioned in the previous
step:
http://www.davehylands.com/linux/gumstix/usbnet/linux.inf
http://embedded.seattle.intel-research.net/wiki/files/linux.inf
For Windows 7, driver will automatically install.
6. As soon as driver installed on host, the following message displays on the target:
bash# g_ether gadget: high-speed config #2: RNDIS
IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
7. Once the RNDIS driver is installed, configured, and loaded, configure the IP address for the new network device.
For example, assign 10.232.1.10 as IP to the RNDIS device and run ipconfig to verify the network configuration.
8. Now run ping both ways to check the connectivity between RNDIS@Windows and usb0@linux
D:\Profiles>ping 10.232.1.11
Pinging 10.232.1.11 with 32 bytes of data:
Reply from 10.232.1.11: bytes=32 time<1ms TTL=64
Reply from 10.232.1.11: bytes=32 time<1ms TTL=64
Reply from 10.232.1.11: bytes=32 time<1ms TTL=64
Ping statistics for 10.232.1.11:
bash# ping 10.232.1.10
Thanks,
Yiping