暂停/恢复时出现严重的 DMA/do_IRQ 错误,偶尔会冻结

暂停/恢复时出现严重的 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/do 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

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

编辑:一些 smartctl (-a、-x、--log=error、--log=xerror) 指令的输出可在以下位置找到http://paste.ubuntu.com/1088488/

编辑(2012 年 8 月 31 日):输出dmesg|grep -i ehci可用http://paste.ubuntu.com/1177246/

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

答案1

1.“糟糕的 DMA”

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

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

请注意这个明显的序列,每次发生“坏 dma”错误时它都会重复:

[171783.085166] USB2-1.6:USB断开,设备编号10
[171783.086623]ehci_hcd 0000:00:1d.0:dma_pool_free 缓冲区-128,eafaa000/2afaa000(坏 dma)
[171783.087046]cdc_ncm 2-1.6:1.6: usb0:取消注册‘cdc_ncm’usb-0000:00:1d.0-1.6,疾病预防控制中心 NCM
[171783.092382] 完成。
[171783.129959] ehci_hcd 0000:00:1d.0: dma_pool_free buffer-128, eb1aa000/2b1aa000 (坏 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 系列 Quantal Kernel(或主线版本)

  • 一旦 Ubuntu 12.10 发布,其内核将作为“反向移植”提供给 12.04(13.04 和 13.10 也是如此)。
  • 现在,你可以从Ubuntu-X 团队 PPA
  • 此 PPA 还包含许多您无需升级的额外软件包。
  • 因此,我仅提供了反向移植的内核另一个 PPA
  • 安装:

    sudo apt-add-repository ppa:auanswers/lts-backported-kernels-prerelease
    sudo apt-get 更新
    sudo apt-get 安装所有 linux-generic-lts-quantal
    
  • 重新启动,您应该会启动到新内核(使用 进行检查uname -a)。Nvidia/AMD 显卡和 Broadcom 无线网卡可能会出现问题。您可以始终选择旧的 3.2 系列内核,方法是在启动时按住 Shift 直到显示 Grub 菜单,然后进入“以前的 Linux 版本”

  • 如果想要更先进的内核,你可以尝试其中一个主线版本。请参阅此问题和答案以获取更多信息:

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

答案2

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

您是否尝试过运行 fsck 或 badblocks?

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

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

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

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

答案3

对于“无向量中断”问题,请尝试将“pci=nomsi”添加到内核启动选项中。

相关内容