禁止RCU看门狗

在内核调试时,如果将内核中断下来停止太久,可能激活内核看门狗机制,引发内核崩溃,影响调试。

[ 6480.723298000] rcu: rcu_sched kthread starved for 9523 jiffies! g246065 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 ->cpu=1[ 6480.723301500] rcu:  Unless rcu_sched kthread gets sufficient CPU time, OOM is now expected behavior.
[ 6480.723304708] rcu: RCU grace-period kthread stack dump:
[ 6480.723308208] task:rcu_sched       state:I stack:    0 pid:   12 ppid:     2 flags:0x00000008

对于此问题,可以通过如下方法手动禁止看门狗。
x lk!rcu_cpu_stall_suppress
ffffffc0`13269eb4 lk!rcu_cpu_stall_suppress
找到用于抑制看门狗的内核变量地址。
使用dd命令进行观察,它的当前值一般为0

dd ffffffc0`13269eb4
ffffffc0`13269eb4  00000000 0000003c 00000000 00000000
ffffffc0`13269ec4  00000001 00000001 00000001 00000001
ffffffc0`13269ed4  00000000 00000002 00000000 e9d1333c
ffffffc0`13269ee4  a5e66a0d 964b1923 d4fed71a 86b0dd6e
ffffffc0`13269ef4  273b4000 3acbeb51 98506414 0e1405f8
ffffffc0`13269f04  ab8d0c8a 47b8192d 9ceb367b 88d19cbf
ffffffc0`13269f14  3dbc36e1 df2539e7 ab293a08 56edc662
ffffffc0`13269f24  f60adc52 6f2086f7 8294c85c dcb923b5

使用ed命令将其修改为1
ed ffffffc013269eb4 1 再次观察确认: dd ffffffc013269eb4
ffffffc013269eb4 00000001 0000003c 00000000 00000000 ffffffc013269ec4 00000001 00000001 00000001 00000001
ffffffc013269ed4 00000000 00000002 00000000 e9d1333c ffffffc013269ee4 a5e66a0d 964b1923 d4fed71a 86b0dd6e
ffffffc013269ef4 273b4000 3acbeb51 98506414 0e1405f8 ffffffc013269f04 ab8d0c8a 47b8192d 9ceb367b 88d19cbf
ffffffc013269f14 3dbc36e1 df2539e7 ab293a08 56edc662 ffffffc013269f24 f60adc52 6f2086f7 8294c85c dcb923b5c dd ffffffc0`13269eb4 ffffffc0`13269eb4 00000001 0000003c 00000000 00000000 ffffffc0`13269ec4 00000001 00000001 00000001 00000001 ffffffc0`13269ed4 00000000 00000002 00000000 e9d1333c ffffffc0`13269ee4 a5e66a0d 964b1923 d4fed71a 86b0dd6e ffffffc0`13269ef4 273b4000 3acbeb51 98506414 0e1405f8 ffffffc0`13269f04 ab8d0c8a 47b8192d 9ceb367b 88d19cbf ffffffc0`13269f14 3dbc36e1 df2539e7 ab293a08 56edc662 ffffffc0`13269f24 f60adc52 6f2086f7 8294c85c dcb923b5
这个变量后面的0x3c是看门狗的超时毫秒数,默认为60毫秒。
extern int rcu_cpu_stall_suppress;
extern int rcu_cpu_stall_timeout;

作者:Zhang Yinkui  创建时间:2024-10-15 16:44
最后编辑:Zhang Yinkui  更新时间:2024-11-15 17:44