qemu-kvm and guest kernel < 2.6.24 sporadic boot fail: Kernel panic - not syncing: IO-APIC + timer doesn't work!
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
qemu-kvm (Ubuntu) |
Triaged
|
Low
|
Unassigned |
Bug Description
Binary package hint: qemu-kvm
Booting Centos 4 with the default 2.6.9 kernel I get a sporadic error maybe ~5% of the time:
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 pin1=2 pin2=-1
..MP-BIOS bug: 8254 timer not connected to IO-APIC
...trying to set up timer (IRQ0) through the 8259A ... failed
...trying to set up timer as Virtual Wire IRQ... failed.
...trying to set up timer as ExtINT IRQ... failed :(.
Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with apic=debug and send a report. Then try booting with the 'noapic' option
This issue has been reported in the past on the linux-kvm mailing list but no resolution was found.[1]
It appears that this bug may in fact be a bug handling interrupts on boot in older kernels.[2] Interrupts were meant to be disabled in a 30ms window, but were not. An interrupt arriving in this time will cause the kernel boot to fail. Virtualization may make it more likely that this bug will appear now than it used to on real hardware, since the model in which interrupts are delivered to the kernel from the "hardware" is different. If this diagnosis is correct, then the issue is very difficult to fix since it would require detecting that a pre-2.6.24 kernel is in use, and managing the boot process so no interrupt is delivered in the problematic window. The alternative is to just accept that pre-2.6.24 kernels may have sporadic boot failures, and to make this information available so that users who run into the issue can either patch or update the kernel that they are using.
[1] http://
[2] http://<email address hidden>
Changed in qemu-kvm (Ubuntu): | |
importance: | Undecided → Medium |
importance: | Medium → Low |
status: | New → Triaged |
Thanks for the research Chris.
Marking Triaged, since you've tracked this down to the upstream mailing list posts. Marking Low, since kernels <2.6.24 are (hopefully) becoming increasingly rare.
To your two suggestions... I know that upstream qemu in the past has really, really tried to avoid special case code for buggy behavior in guests. The latter is far more doable. How do you propose that we do this? If your guest is an Ubuntu kernel <2.6.24 (ie, Dapper), we can open a task and try to get it fixed. If it's another distribution, I suggest you try to contact that distribution's kernel developers.