[31942.572631] [SC2331]timer[3]
[31942.572692] [SDIOTRAN]gpio_timer_handler:gpio_opt_tag=0
[31942.572814] [SC2331]time[0]
crash32> task d9c4ad00 4238
PID: 4238 TASK: d9c4ad00 CPU: 0 COMMAND: "wlan_trans"
struct task_struct {
state = 1,
stack = 0xc6b0a000,
usage = {
counter = 2
},
flags = 2130240,
ptrace = 0,
wake_entry = {
next = 0x0 <__vectors_start>
},
....
exec_start = 31942572845458,
sum_exec_runtime = 360468963305,
vruntime = 18446744073704671489,
prev_sum_exec_runtime = 4089356,
nr_migrations = 317,
parent = 0x0 <__vectors_start>,
cfs_rq = 0xc1505088,
my_q = 0x0 <__vectors_start>,
avg = {
runnable_avg_sum = 14049,
runnable_avg_period = 14068,
last_runnable_update = 258013732909,
decay_count = 0,
load_avg_contrib = 1022,
load_avg_ratio = 1022,
usage_avg_sum = 2910
}
vfork_done = 0xc6b0bf80,
set_child_tid = 0x0 <__vectors_start>,
clear_child_tid = 0x0 <__vectors_start>,
utime = 0,
stime = 23194,
utimescaled = 0,
stimescaled = 23194,
gtime = 0,
prev_cputime = {
utime = 0,
stime = 34582
},
nvcsw = 4381848,
nivcsw = 66,
start_time = {
tv_sec = 257,
tv_nsec = 973774413
},
real_start_time = {
tv_sec = 257,
tv_nsec = 973774413
},
min_flt = 0,
//顾名思义,这个是该进程使用cpu时间的信息,utime是在用户态下执行的时间,stime是在内核态下执行的时间。
cputime_t utime, stime;
//下面的是启动的时间,只是时间基准不一样。
struct timespec start_time;
struct timespec real_start_time;
正常调度的栈:
ffffffc0682c42c0: fffafafafffafafa fffafafafffafafa
ffffffc0682c42d0: fffafafafffafafa fffafafafffafafa
ffffffc0682c42e0: fffafafafffafafa fffafafafffafafa
ffffffc0682c3ae0: tstat_hash_table+3800 pick_next_task_fair+1492
ffffffc0682c3af0: ffffffc07fe97580 ffffffc000000000
ffffffc0682c3b00: ffffffc0682c3b30 trace_hardirqs_off+76
ffffffc0682c3b10: tstat_hash_table+3800 _raw_spin_unlock_irqrestore+52
ffffffc0682c3b20: ffffffc03d9ddd80 cb88537fdc8ba653
ffffffc0682c3b30: ffffffc0682c3b80 _raw_spin_unlock_irqrestore+52
ffffffc0682c3b40: 00000000000001c0 usage_lock
ffffffc0682c3b50: ffffffc0682c3b80 _raw_spin_unlock_irqrestore+60
ffffffc0682c3b60: 00000000000001c0 usage_lock
ffffffc0682c3b70: ffffffc03d9ddd80 00000000000001c0
ffffffc0682c3b80: ffffffc0682c3ba0 sprd_update_cpu_usage+220
ffffffc0682c3b90: dma_cfg_group+10392 ffffffc0026f5d80
ffffffc0682c3ba0: ffffffc0682c3bd0 __switch_to+128
ffffffc0682c3bb0: ffffffc0682c3bd0 __switch_to+152
ffffffc0682c3bc0: ffffffc03d9ddd80 ffffffc0026f5d80
ffffffc0682c3bd0: ffffffc0682c3bf0 __schedule+708
ffffffc0682c3be0: ffffffc07fe97580 ffffffc03d9ddd80
ffffffc0682c3bf0: ffffffc0682c3c50 schedule+60
ffffffc0682c3c00: ffffffc0026f5d80 nf_conntrack_locks+1280
ffffffc0682c3c10: 0000000000000000 0000000000000000
ffffffc0682c3c20: 0000000000000000 ffffffc077814ce0
ffffffc0682c3c30: 0000000000000000 ffffffc077814c80
ffffffc0682c3c40: ffffffc0208131c1 ffffffc0208131c0
ffffffc0682c3c50: ffffffc0682c3c70 schedule_hrtimeout_range_clock+360
ffffffc0682c3c60: 0000000000000000 return_address+96
ffffffc0682c3c70: ffffffc0682c3d30 schedule_hrtimeout_range+52
ffffffc0682c3c80: 0000000000000000 ffffffc0026f5d80
ffffffc0682c3c90: 0000007935003c38 0000000000000010
ffffffc0682c3ca0: ep_send_events_proc trace_preempt_on+32
ffffffc0682c3cb0: sys_epoll_wait+768 0000000000000001
ffffffc0682c3cc0: sys_epoll_wait+768 0000000000000010
ffffffc0682c3cd0: ffffffc0682c3d10 preempt_count_sub+112
ffffffc0682c3ce0: 0000000000000001 _raw_spin_unlock_irqrestore+100
ffffffc0682c3cf0: sys_epoll_wait+768 0000000000000010
ffffffc0682c3d00: ep_send_events_proc cb88537fdc8ba653
ffffffc0682c3d10: ffffffc0682c3d40 _raw_spin_unlock_irqrestore+100
ffffffc0682c3d20: 0000000000000140 cb88537fdc8ba653
ffffffc0682c3d30: ffffffc0682c3d60 sys_epoll_wait+796
ffffffc0682c3d40: nf_conntrack_locks+1280 sys_epoll_wait+768
ffffffc0682c3d50: 0000000000000000 0000000000000000
ffffffc0682c3d60: ffffffc0682c3e50 sys_epoll_pwait+304
ffffffc0682c3d70: 0000000000000010 0000004076fb5000
ffffffc0682c3d80: nf_conntrack_locks+1280 0000007935003c38
ffffffc0682c3d90: 0000000000000112 00000000ffffffff
ffffffc0682c3da0: 000000000000011d 0000000000000016
ffffffc0682c3db0: sys_call_table ffffffc0026f5d80
ffffffc0682c3dc0: 0000007935003c38 0000000000000001
ffffffc0682c3dd0: system_freezing_cnt ffffffc0026f5d80
ffffffc0682c3de0: 0000000000000008 ffffffc0682c3e38
ffffffc0682c3df0: ffffffc0026f5d80 0000000000000000
一次卡死问题的runq:
core1上有高优先级的task,但是被有被调度到。还请调度器相关同事帮忙看下。
dumplog里最后时刻:
[ 660.870505] c2 [sprd-adf][ dpu_enhance_set] enhance slp set
core1上rq如下:
CPU 1 RUNQUEUE: ffffffc07fe82580
CURRENT: PID: 2354 TASK: ffffffc013383e80 COMMAND: "RenderThread"
exec_start = 660905524055,
sum_exec_runtime = 8764968920,
vruntime = 429539412160,
prev_sum_exec_runtime = 8764819458,
nr_migrations = 2264,
statistics = {
wait_start = 0,
调用栈如下:
ffffffc01304bba0: ffffffc01304bbd0 __switch_to+128
ffffffc01304bbb0: ffffffc01304bbd0 __switch_to+152
ffffffc01304bbc0: ffffffc07d60dd80 ffffffc013383e80
ffffffc01304bbd0: ffffffc01304bbf0 __schedule+708
ffffffc01304bbe0: ffffffc07fe82580 ffffffc07d60dd80
ffffffc01304bbf0: ffffffc01304bc50 schedule+60
ffffffc01304bc00: ffffffc013383e80 nf_conntrack_locks+1280
ffffffc01304bc10: 0000000000000000 0000000000000000
ffffffc01304bc20: 0000000000000000 ffffffc017458fe0
ffffffc01304bc30: 0000000000000000 ffffffc017458f80
ffffffc01304bc40: ffffffc0133b3a01 ffffffc0133b3a00
ffffffc01304bc50: ffffffc01304bc70 schedule_hrtimeout_range_clock+360
ffffffc01304bc60: 0000000000000000 return_address+96
ffffffc01304bc70: ffffffc01304bd30 schedule_hrtimeout_range+52
ffffffc01304bc80: 0000000000000000 ffffffc013383e80
ffffffc01304bc90: 0000007941fff118 0000000000000010
ffffffc01304bca0: ep_send_events_proc trace_preempt_on+32
ffffffc01304bcb0: sys_epoll_wait+768 0000000000000001
ffffffc01304bcc0: sys_epoll_wait+768 0000000000000010
ffffffc01304bcd0: ffffffc01304bd10 preempt_count_sub+112
ffffffc01304bce0: 0000000000000001 _raw_spin_unlock_irqrestore+100
ffffffc01304bcf0: sys_epoll_wait+768 0000000000000010
ffffffc01304bd00: ep_send_events_proc cb88537fdc8ba653
ffffffc01304bd10: ffffffc01304bd40 _raw_spin_unlock_irqrestore+100
ffffffc01304bd20: 0000000000000140 cb88537fdc8ba653
ffffffc01304bd30: ffffffc01304bd60 sys_epoll_wait+796
ffffffc01304bd40: nf_conntrack_locks+1280 sys_epoll_wait+768
ffffffc01304bd50: 0000000000000000 0000000000000000
ffffffc01304bd60: ffffffc01304be50 sys_epoll_pwait+304
ffffffc01304bd70: 0000000000000010 0000004076fa0000
ffffffc01304bd80: nf_conntrack_locks+1280 0000007941fff118
ffffffc01304bd90: 000000000000002e 00000000ffffffff
ffffffc01304bda0: 000000000000011d 0000000000000016
RT PRIO_ARRAY: ffffffc07fe826f0
[ 97] PID: 417 TASK: ffffffc06c0d8080 COMMAND: "DispSync" //似乎这个DispSync task没被调度
on_rq = 0, //这个为0的话,此task就不会被调度,因为没在runq上,这个线程是通过一个timer将其置1的。
exec_start = 660897807285,
sum_exec_runtime = 1630900299,
vruntime = 4999997,
prev_sum_exec_runtime = 0,
nr_migrations = 1238,
statistics = {