暂停/恢复时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环境执行以下所有操作
- 启动实时Ubuntu CD(或任何其他发行版)
-
使用fdisk扫描磁盘和分区
sudo fdisk -l
-
一旦确定了正确的磁盘标签(例如
/dev/sda1
),请尝试运行这两个命令。fsck
命令的-c
参数尝试识别和隔离坏块sudo e2fsck -cv /dev/sda1 sudo badblocks -sv /dev/sda
对于“no irq for vector”问题,请尝试将“pci = nomsi”添加到内核引导选项中。