No irq handler for vector

在安装了CentOS6.2之后,遇到了传说中的
kernel:do_IRQ: 3.189 No irq handler for vector (irq -1)
错误。其中3.189不一定,可能是0.189, 1.89, 2.189 …。这里,189是IRQ中断号,而前面的数字,我推测,应该是CPU号。

在网上查了无数资料,大多数人给出的答案是修改boot文件参数,加上pci=nomsi,noaer就可以了。可是我试过之后,发现还是会出现这个错误。一但出错之后,可能的情况是两个,1,死机数秒后恢复正常。2,自动关机。

为些,大力google research。得出以下的可能的原因:
a) 硬件故障
b) 硬件驱动不正确。它可能注册了无法响应的IRQ号。
c) 硬件驱动有bug,在响应共用的IRQ号的过程中不通畅。
d) 不良的APIC (programmable interrupt controller)将PCI设备中断号指向了错误的IRQ号。

提出的诊断办法有:

lspci -v

查看出错的中断号来自于什么硬件

cat /proc/interrupts

查看注册了的中断号,注意这个注册的中断号可能被许多硬件设备共用。

如果上面都没有查出什么问题的话,最有可能的就是原因d了。可以在启动文件中加入noapic参数来关闭不良的APIC。

可以查看 /var/log/syslog 当中有没有什么关于出错中断号的信息。

可以使用dmesg命令来查看启动过程记录。

启动文件在/boot/grub/menu.lst
打开它

vi /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-220.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/vg_cbb-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_cbb/lv_root rd_LVM_LV=vg_cbb/lv_swap rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM noapic pci=nomsi,noaer
        initrd /initramfs-2.6.32-220.el6.x86_64.img

注意其中加入的noapic pci=nomsi,noaer参数。

至此,似乎一切正常。

后来又遇到187中断错误。再查,加上了acpi=off参数。发现81~190都是高级电源管理的中断。

Leave a Reply

  

  

  

%d 博主赞过: