暂停/恢复时DMA / do_IRQ错误,偶尔会冻结

每次我暂停或恢复我的笔记本电脑(Dell Latitude E6520,今年购买)时,我会在关机/启动之前收到控制台上显示的2条消息:

[ 407.107610] ehci_hcd 0000:00:1d.0: dma_pool_free buffer-128, f6f18000/36f18000 (bad dma) 

有时,我收到一个表格的消息:

 [ 3753.979066] do_IRQ: 0.177 No irq handler for vector (irq -1) 

有时,我的机器在挂起时会闪烁一个闪烁的Caps Lock按钮,之后我需要进行硬关机。 这种情况从未发生在消息开始出现之前(一段时间后),我认为如果没有出现do_IRQ消息,它就永远不会发生(虽然我不确定)。 [闪烁的Caps Lock按钮在用户手册中没有任何内容; 显然它可能是内核恐慌如果滚动锁也闪烁,但笔记本电脑没有滚动锁定指示灯,并且控制台上没有消息说内核发生恐慌。

这些糟糕的DMA /做IRQ消息是否严重,我可以做些什么来调查/解决它们和冻结?

编辑:我现在也收到了几次以下错误消息:

 [246943.023908] JBD: I/O error detected when updating journal superblock for sdb1. [246943.023958] Buffer I/O error on device sdb1, logical block 0 [246943.023996] EXT3-fs (sdb1): I/O error while writing superblock 

编辑:在http://pastebin.com/ra7MTQEj输出dmesg; /var/log/kern.log的内容, url为http://pastebin.com/i6jf0Md9

编辑:某些smartctl(-a,-x, – log = error, – log = xerror)指令的输出可在http://paste.ubuntu.com/1088488/上找到 。

编辑(2012年7月31日):输出dmesg|grep -i ehci , url为http://paste.ubuntu.com/1177246/ 。

编辑:(3/9/2012):lshw的输出位于http://paste.ubuntu.com/1183032

1.“糟糕的DMA”

让我们首先处理“坏dma”错误,因为它们是唯一一致反映在日志中的错误。

  • 这些以及暂停/恢复的任何问题都是由您的内部USB 3G调制解调器引起的,其中MAC地址是爱立信F3507g。
    • 是的,你没有看错。 并非每个USB设备都必须在外部或插入其中一个可见的USB端口。 现代笔记本电脑将从内部USB“集线器”运行一大堆内部外围设备,如无线/ 3G卡,蓝牙,网络摄像头等。

请注意这个告诉序列,每次出现“坏dma”错误时都会重复:

 [171783.085166] usb 2-1.6 :USB断开,设备号10
 [171783.086623] ehci_hcd 0000:00: 1d.0 :dma_pool_free buffer-128,eafaa000 / 2afaa000(bad dma)
 [171783.087046] cdc_ncm 2-1.6:1.6:usb0 :取消注册'cdc_ncm'usb-0000:00: 1d.0 -1.6,CDC NCM
 [171783.092382]完成了。
 [171783.129959] ehci_hcd 0000:00:1d.0:dma_pool_free buffer-128,eb1aa000 / 2b1aa000(bad dma)
  • 涉及cdc_ncm模块; 这是高速蜂窝调制解调器的低级USB接口
  • 此错误表明F3507g WWAN卡之前遇到过与Ubuntu / Linux类似的问题,并且内核更新修复了它。
    • 该错误应仅影响暂停/恢复/冻结,并且不应影响3G卡的正常操作。
    • 但我建议你尝试一个主线内核(或Quantal 3.5内核),看看它是否有任何区别。
    • 当然,另一种极端的替代方法是在BIOS中禁用3G卡,或者如果您主动使用它,请考虑将其替换为其他品牌/型号。

2.“do_IRQ”和“sdb1”

在没有上下文的情况下调试这些孤立的警告更加困难(这可能是关键,如上所示)。 因此,我们只需要猜测,直到您可以提供包含这些错误中的一个或两个的kern.log

  • “do_IRQ”似乎最常出现在包括显卡在内的PCI-Express总线问题上,而且VIA芯片组经常受到牵连。
    • 否则可以安全地忽略此消息。
  • 鉴于您的SMART日志看起来没问题,“sdb1”错误可能来自外部驱动器的更多USB通信问题。

    • 如果你发现更多的USB错误,我会把它归结为偶尔的USB不兼容性而不用担心; 但如果它们只由它们自己发生,则可能表明驱动器存在问题。 更完整的日志将有助于:)
  • 同样,如果事情发生变化,我建议尝试使用Quantal 3.5内核之一和看见,特别是对于“do_IRQ”。

3.尝试3.5系列量子内核(或主线版本)

  • 一旦Ubuntu 12.10发布,其内核将作为“backport”提供给12.04(13.04和13.10也是如此)。
  • 现在,您可以从Ubuntu-X团队PPA获得“beta”内核
  • 但是这个PPA还包含许多额外的软件包,您无需升级。
  • 所以我在另一个PPA中只提供了后向内核
  • 安装:

     sudo apt-add-repository ppa:auanswers / lts-backported-kernels-prerelease
     sudo apt-get update
     sudo apt-get inst all linux-generic-lts-quantal
    
  • 重新启动,你应该启动进入新内核(使用uname -a检查)。 Nvidia / AMD显卡和Broadcom无线网卡可能存在问题。 您始终可以通过在启动时按住Shift键直到Grub菜单显示来选择旧的3.2系列内核,然后进入“以前的Linux版本”

  • 对于更多的前沿内核,您可以尝试其中一个主线构建。 有关更多信息,请参阅此问题和答案:

我应该升级到“主线”内核吗?

您在编辑中添加的错误似乎是指磁盘扇区损坏。

你尝试过运行fsck或badblocks吗?

我建议您从Live CD环境执行以下所有操作

  1. 启动实时Ubuntu CD(或任何其他发行版)
  2. 使用fdisk扫描磁盘和分区

     sudo fdisk -l 
  3. 一旦确定了正确的磁盘标签(例如/dev/sda1 ),请尝试运行这两个命令。 fsck命令的-c参数尝试识别和隔离坏块

     sudo e2fsck -cv /dev/sda1 sudo badblocks -sv /dev/sda 

对于“no irq for vector”问题,请尝试将“pci = nomsi”添加到内核引导选项中。