__ratelimit: XXX callbacks suppressed

【问题】

在给Kernel加入了cpufreq支持,启动了cpu freq的debugging,并且在bootargs中加入cpufreq.debug=1,才能真正打开内核中cpu freq的debug。cpu freq驱动是加入了,但是不定期会出现:

__ratelimit: XXX callbacks suppressed

【解决过程】

1.gogole或百度,无果,但是有人建议查看log,看看是否有帮助,所以去:

cat /var/log/messages

发现这样一堆东西:

Dec 31 21:32:56 uclibc user.debug kernel: [42949461.000001] cpufreq-core: target for CPU 0: 0 kHz, relation 0
Dec 31 21:32:56 uclibc user.debug kernel: [42949461.200000] cpufreq-core: target for CPU 0: 0 kHz, relation 0
Dec 31 21:32:56 uclibc user.debug kernel: [42949461.400000] cpufreq-core: target for CPU 0: 69642 kHz, relation 0
Dec 31 21:32:56 uclibc user.debug kernel: [42949461.600000] cpufreq-core: target for CPU 0: 23214 kHz, relation 0
Dec 31 21:32:57 uclibc user.debug kernel: [42949461.800000] cpufreq-core: target for CPU 0: 0 kHz, relation 0
Dec 31 21:32:57 uclibc user.debug kernel: [42949462.000000] cpufreq-core: target for CPU 0: 0 kHz, relation 0
Dec 31 21:33:00 uclibc user.warn kernel: [42949465.600000] __ratelimit: 17 callbacks suppressed
Dec 31 21:33:00 uclibc user.debug kernel: [42949465.600011] cpufreq-core: target for CPU 0: 0 kHz, relation 0
Dec 31 21:33:01 uclibc user.debug kernel: [42949465.800000] cpufreq-core: target for CPU 0: 0 kHz, relation 0
Dec 31 21:33:01 uclibc user.debug kernel: [42949466.000000] cpufreq-core: target for CPU 0: 0 kHz, relation 0
Dec 31 21:33:01 uclibc user.debug kernel: [42949466.200000] cpufreq-core: target for CPU 0: 0 kHz, relation 0
Dec 31 21:33:01 uclibc user.debug kernel: [42949466.400000] cpufreq-core: target for CPU 0: 0 kHz, relation 0

2.去System.map中,找到了函数__ratelimit,说明此函数,是内核里面有源码的。

3.去source Insight中搜索__ratelimit,发现其中一处:

int printk_ratelimit(void)
{
return __ratelimit(&printk_ratelimit_state);
}
EXPORT_SYMBOL(printk_ratelimit);

【解决办法】

上面信息,加上前面的log中的信息,所以想到了,估计是printk中的打印导致的,因为cpu freq core中,加了debug支持,所以会打印这些东西,而且由于cpu freq的调用频率很高,所以导致printk输出来不及了,所以提示__ratelimit: XXX callbacks suppressed。

知道原因,办法很简单,就是去kernel配置menuconfig中,把debug支持去掉:

CPU Power Management —>    [ ]   Enable CPUfreq debugging

然后同时也把内核启动参数bootargs中的cpufreq.debug=1也去掉,cpu freq code就会不会打印这么多信息了,就不会提示你打印太多,printk都来不及打印了。

【提示】

其他人出现此类问题,很可能也是这类原因,解决办法就是,找到你的内核中到底打印了哪些东西:

cat /var/log/messages

(注意此会无尽的输出,所以等输出一段,看清楚内容后,即可Ctrl +C 中止)

就知道是哪一部分的原因了。比如,USB相关打印太多,导致printk来不及打印等等。


转载地址:http://www.crifan.com/resolved___ratelimit_xxx_callbacks_suppressed/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值