Problems with APIC on QEMU
Posted: Thu Oct 30, 2014 11:02 pm
Visopsys 0.75 does not boot successfully on QEMU (tested on 2.0.0 and 2.1.0), it stays still while waiting for IDE drive interrupts.. (as compiling the kernel with debug enabled reveals). I did a bit of research and I found the culprit: it is the APIC support that was added in this very release.
Visopsys disables any old-style interrupt controllers if it finds an APIC-compatible interrupt controller.
It seems that QEMU's APIC support does not work correctly, and thus the kernel seems unable to get (at least some) interrupts.
The workaround right now is disabling the APIC driver, but as there is no way to configure a Visopsys kernel when compiling or at runtime, one first needs to comment the relevant line for the APIC driver in src/kernel/kernelDevice.c (just make a search for APIC in the file) in the sources and then build the system from sources again.
This makes Visopsys 0.75 work and boot fine on QEMU.
I made floppy, CD and USB images with APIC already disabled:
http://unhaut.fav.cc/visopsys/visopsys- ... ic-img.zip (floppy)
http://unhaut.fav.cc/visopsys/visopsys- ... ic-iso.zip (CD ISO image)
http://unhaut.fav.cc/visopsys/visopsys- ... ic-usb.zip (USB image)
You can use these with QEMU until this issue is fixed.
Visopsys disables any old-style interrupt controllers if it finds an APIC-compatible interrupt controller.
It seems that QEMU's APIC support does not work correctly, and thus the kernel seems unable to get (at least some) interrupts.
The workaround right now is disabling the APIC driver, but as there is no way to configure a Visopsys kernel when compiling or at runtime, one first needs to comment the relevant line for the APIC driver in src/kernel/kernelDevice.c (just make a search for APIC in the file) in the sources and then build the system from sources again.
This makes Visopsys 0.75 work and boot fine on QEMU.
I made floppy, CD and USB images with APIC already disabled:
http://unhaut.fav.cc/visopsys/visopsys- ... ic-img.zip (floppy)
http://unhaut.fav.cc/visopsys/visopsys- ... ic-iso.zip (CD ISO image)
http://unhaut.fav.cc/visopsys/visopsys- ... ic-usb.zip (USB image)
You can use these with QEMU until this issue is fixed.