环境

  • Platform: Hi3516DV100
  • Kernel: v3.4

现象

内核线程kworker/u:0开机时CPU占用率高

分析

查看哪个模块占用CPU:cat /proc/5/stack

  • 原因

    占用大量CPU的时候是内核中对mmc模块使用4000~1000的不同频率对插入的模块分别用sd、mmc、sdio类型匹配枚举的过程。SDIO_CAERD_DETECT而悬空或者未接的时候,这个管脚默认是个低电平,而插入SD时该管脚的状态正是低电平,

    解决

  • 内核去掉不用的MMC驱动
  • 软件上对不使用的SDIO_CAERD_DETECT复用成其他功能,要么硬件上对该管脚做好弱上拉