Noapic
Luke Hebert
- 2 minutes read - 334 wordsThe noapic kernel parameter disables the Advanced Programmable Interrupt Controller (APIC) subsystem on x86 systems. If you are troubleshooting interrupt delivery problems or dealing with a BIOS that misconfigures APIC routing, this is the switch to reach for.
How APIC Works
LAPICs (Local APICs) manage all external interrupts for a specific processor in an SMP system. They also accept and generate inter-processor interrupts (IPIs) between LAPICs. A LAPIC may support up to 224 usable interrupt vectors from an I/O APIC. Vector numbers 0 through 31, out of the full 0 to 255 range, are reserved for exception handling by x86 processors.
There is typically one I/O APIC for each peripheral bus in the system. In original system designs, LAPICs and I/O APICs were connected by a dedicated APIC bus. Newer systems use the system bus for communication between all APIC components.
Why You Might Need noapic
Defective BIOSes may not set up interrupt routing properly, or they may provide incorrect ACPI tables and Intel MultiProcessor Specification (MPS) tables. The APIC can also cause system failure when the operating system does not support it properly. On older operating systems, users often had to disable the I/O and local APICs. While this is less common today due to the prevalence of symmetric multiprocessor and multi-core systems, firmware and OS bugs still surface occasionally.
Enabling the I/O APIC is required for 64-bit guest operating systems, especially Windows Vista and later. It is also required if you want to use more than one virtual CPU in a virtual machine. Disabling APIC in a VM will limit you to a single vCPU.
Using the Parameter
Add noapic to your kernel command line. For example, in GRUB:
GRUB_CMDLINE_LINUX="noapic"Then run grub2-mkconfig -o /boot/grub2/grub.cfg (or the equivalent for your bootloader) and reboot. Verify the setting took effect with:
dmesg | grep -i apicYou should see messages indicating that the APIC has been disabled and the system is falling back to the legacy 8259 PIC for interrupt handling.