Hi3516A的内核线程kworker/u:0开机时高占用问题

7,210次阅读
一条评论

转自 elroy 大神的分享 http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=10641&extra=&page=1

在内核中增加打印信息,经过反复调试实验,发现这个内核线程占用大量 cpu 的时候是内核中对 mmc 模块使用 4000~1000 的不同频率对插入的模块分别用 sd、mmc、sdio 类型匹配枚举的过程。
Hi3516A 有两个 SDIO 模块 0 和 1,这两个模块都是通过检测 SDIO_CAERD_DETECT 管脚判断 SD 卡是否插入,在插入后启动对 SD 卡的上述匹配过程。
可气的是,当 SDIO0_CAERD_DETECT 和 SDIO1_CAERD_DETECT 这两个管脚服用成 SDIO_CAERD_DETECT 而悬空或者未接的时候,这个管脚默认是个低电平,而插入 SD 时该管脚的状态正是低电平。
所以如果你的硬件电路上这两个管脚悬空或者没有上拉,上电时内核会认为插入了 SD 卡(即使实际没有插入卡)而启动上述匹配过程,
而当 SD 卡实际不存在的情况下这个过程需要等待各种超时或者等待超过最大重试次数,占用大量 cpu 的同时并且还会持续几分钟的时间。
所以要么软件上对不使用的 SDIO_CAERD_DETECT 复用成其他功能,要么硬件上对该管脚做好弱上拉,就可以完全解决这个问题了。
这个问题困扰我许久啊~~~~

这个问题我也遇到了,MMC 驱动里面屏蔽 himci1 sd/mmc controller support
— himciv100 driver support
[] Send Auto Stop to terminate data transfer between host and SD card
[
] himci0 sd/mmc controller support —>
himci1 sd/mmc controller support —>
开机 kworker 占高的问题解决了!感谢楼主分享!

正文完
 0
评论(一条评论)

爷,收下我的膝盖!

 Windows  Chrome  内网IP