Stale page
The contents of this page must be revised to reflect the current state of MINIX3.
APIC is a successor to the legacy PIC. The main advantage is that together with IO APIC controllers it enables the system to use much more IRQ lines than the 16 legacy (E)ISA IRQs and thus possible much less IRQ sharing. Using local APICs is a requirement for multi-processor systems.
The local APIC code is always compiled in the MINIX kernel, however the default mode is PIC. The main reason is that in contrast to real hardware, when running Minix in a virtual machine the timing of the local APIC timer is difficult to configure right and the timer ticks much faster than it should. It is not a problem when Minix runs on real hardware. To turn the APIC mode on the no_apic variable must be set to 0 in the boot monitor. Although the no_ part may look confusing APIC is meant to become the default mode in Minix as soon as the timing issue in VMs is resolved and setting this variable should turn APIC off on old systems.
To use the APIC mode on most hardware ACPI driver is required as only through ACPI can we figure out how the interrupts are routed in the system. This is not an issue in systems like KVM which use only legacy interrupts. The ACPI driver is not part of the default image as it can only be compiled with a compiler that provides native 64bit integers. Use CC=gcc to compile such an image