Ahm*_*d A 8 linux centos driver kernel-module linux-kernel
我的系统是CentOS 6.3(运行内核版本2.6.32-279.el6.x86_64).
我有一个可加载的内核模块,它是一个管理PCIe卡的驱动程序.如果我insmod在操作系统启动并运行时手动插入驱动程序,则驱动程序会成功加载并运行.
不过,如果我尝试使用rpm安装了驱动程序,然后重新启动系统,启动操作系统卡住吐出了所有的CPU内核下面的"软锁"消息,除了一个核心是在"软锁"期间我的驱动程序创建的其中一个线程.
BUG: soft lockup - CPU#X stuck for 67s! [migration/8:36]
.......(same above message for all cores except one)
BUG: soft lockup - CPU#10 stuck for 67s! [mydriver_thread/8:36]
(one core is locked up in one of the threads in my driver).
Run Code Online (Sandbox Code Playgroud)
我在网上找了很多关于这个内核msg/bug的信息,并且有很多关于它的帖子,没有关于它的原因或如何调试.任何有关以下问题的帮助将非常感激:
我无法登录系统,我认为这是因为所有核心都处于"软锁定"状态,因此无法从shell提示符触发内核转储.我启用了SysRq,并尝试使用SysRq键组合触发内核转储,但没有运气.系统似乎没有响应键盘(甚至没有响应CapsLock按钮).关于如何在这种情况下触发内核转储的任何建议?
我可以想象我的驱动程序线程可能导致"软锁定".但是,由于我的驱动程序,"迁移"线程(内核线程)如何处于"软锁定"?
从浏览网络,"迁移"线程用于将任务从一个CPU移动到另一个CPU.有人可以帮我理解这个帖子究竟是做什么的吗?以及它如何受其他线程的影响,如果有的话.
我的桌面上也遇到了非常相似的问题。它会非常频繁地软锁定 - 大约每天一次左右。
事实证明这是因为我在 Intel Haswell 上运行。英特尔Haswell/Broadwell系列处理器似乎存在一个可能导致系统不稳定的bug。此错误已在微代码更新中修复。
检查 CentOS 是否提供 intel-microcode 软件包并安装它。确保在加载 initramfs 之前将 grub 配置为将其加载为初始 ramdisk。
就我个人而言,我通过启动 Windows 并运行 BIOS 更新来升级我的微代码。grep 'microcode' /proc/cpuinfo您可以通过比较更新前后的输出来检查微码是否真正更新。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           20815 次  |  
        
|   最近记录:  |