Wind River Support Network

HomeDefectsLIN6-3864
Fixed

LIN6-3864 : CPU Stall occurs when T4240 is left idle

Created: Aug 25, 2013    Updated: Mar 5, 2016
Resolved Date: Dec 12, 2013
Previous ID: LIN5-6604, LIN6-3079
Found In Version: 6.0
Fix Version: 6.0
Severity: Severe
Applicable for: Wind River Linux 6
Component/s: BSP

Description

WindRiver5.0.1.4 compiled for T4240 PowerPC 64bit mode. And boot target with ramdisk.
When the is left idle for some time CPU stalls occurs, it'll show:
/***************************************************/
INFO: rcu_bh self-detected stall on CPU { 18} 
INFO: rcu_bh detected stalls on CPUs/tasks: { 18} (detected by 8, t=1095122 jiffies)
INFO: Stall ended before state dump start
(t=1095124 jiffies)
Call Trace:
[c000000164497170] [c00000000000b4d4] .show_stack+0xe4/0x250 (unreliable)
[c000000164497240] [c0000000009abee0] .dump_stack+0x20/0x30
[c0000001644972b0] [c000000000110064] .__rcu_pending+0x1b4/0x5e0
[c000000164497370] [c000000000112c54] .rcu_check_callbacks+0x184/0x370
[c000000164497430] [c000000000075dc4] .update_process_times+0x54/0xb0
[c0000001644974c0] [c0000000000c2000] .tick_sched_timer+0x90/0x1c0
[c000000164497580] [c0000000000954f4] .__run_hrtimer+0xc4/0x350
[c000000164497640] [c0000000000962c8] .hrtimer_interrupt+0x148/0x2d0
[c000000164497730] [c000000000013ee0] .timer_interrupt+0x2b0/0x490
[c000000164497800] [c00000000001decc] exc_0x900_common+0xfc/0x100
--- Exception: 901 at .__raw_spin_lock+0xb4/0x110
    LR = .__raw_spin_lock+0x80/0x110
[c000000164497b90] [c0000000009a1270] ._raw_spin_lock+0x20/0x30
[c000000164497c10] [c0000000007b9e60] .sdhci_irq+0x70/0xe20
[c000000164497d50] [c000000000107574] .irq_forced_thread_fn+0x54/0xa0
[c000000164497de0] [c0000000001070b8] .irq_thread+0x168/0x290
[c000000164497ed0] [c00000000008f410] .kthread+0xc0/0xd0
[c000000164497f90] [c000000000019160] .original_kernel_thread+0x54/0x70

/***************************************************/

Steps to Reproduce

1, config project with:
configure --enable-board=fsl-t4xxx --enable-kernel=cgl --enable-rootfs=glibc_cgl --enable-jobs=2 --enable-parallel-pkgbuilds=2 --with-rcpl-version=0004 --enable-reconfig --enable-build=production --with-layer=/home/james/WindRiver-5.0.1/wrlinux-5/layers/wr-bsps/fsl-t4xxx/wr-freescale_qoriq_dpaa
2, create ramdisk with:
--------selinux_config--------------
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     standard - Standard Security protection.
#     mls - Multi Level Security protection.
SELINUXTYPE=wr-mls
-----------------------------------

dd if=/dev/zero of=rootfs.ext2 bs=1M count=1536
mkfs.ext2 -q -F -m 0 -i 1024 rootfs.ext2
sudo cp selinux_config /etc/selinux/config
mkimage -A PPC -T ramdisk -a 0 -d rootfs.ext2.gz  fsl-t4xxx-glibc-cgl-dist.ext2.gz.u-boot

3, u-boot environment varible:
bootargs=root=/dev/ram rw console=ttyS0,115200 ramdisk_size=1572864 usdpaa_mem=1024M qportals=8-23 bportals=8-23 nousb
bootcmd=tftp 1000000 fsl-t4xxx-uImage-WR5.0.1.4_cgl; tftp f00000 fsl-t4xxx-t4240qds.dtb-WR5.0.1.4_cgl;tftp 2000000 initrd.gz.uboot; bootm 1000000 2000000 f00000

4, after target boot, login in and execute:
# echo 8> /proc/sys/kernel/printk
then do nothing and wait for about 30minutes.
Live chat
Online