# IO-APIC only works when SMP enabled?

## Tamerz

For some reason if I enable IO-APIC in my kernel without also enabling SMP support I get a kenel panic on boot:

```
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
```

As soon as I enable SMP the only error I get is the 

```
..MP-BIOS bug: 8254 timer not connected to IO-APIC
```

 and the system works fine.

Any ideas why this happens?  What are the disadvantages of running as SMP with only one CPU?

----------

## NeddySeagoon

Tamerz,

Not all single CPU machines have an IO-APIC, however, its essential for SMP boxes. Worse, on some single CPU systems with an IO-APIC, it doesn't work.

This probably means that when you build the kernel with SMP in, it detects the broken/missing IO-APIC and forces CPU0 to deal with all the I/O interrups. There is a small overhead with running a SMP kernel on a single CPU box but not a lot.

Best would be to stop trying to use you IO-APIC at all.

----------

## Tamerz

Thanks.  That makes sense.  A few minutes ago a bunch of stuff stopped working correctly so that is probably what happened.  No more IO-APIC for me.

----------

## Tamerz

Ok I found this fix on nVidia's site:

 *Quote:*   

> This problem may be caused by an incorrect ACPI table entry that causes the timer interrupt to be incorrectly configured.
> 
> If the kernel console boot trace (viewable using dmesg) contains messages such as these:
> 
> ..MP-BIOS bug: 8254 timer not connected to IOAPIC
> ...

 

I think that did the trick.  Now IO-APIC seems to be working for me.

----------

## Dr. Strangelove

Wow!

Really old, not to say ancient thread, but at least had luck with using the search function!

This helped me with my ASUS M2NPV-VM (nforce430 + Geforce6150), which 

is the AM2 successor of the famous A8N-VM CSM Board!

Were forced to use apic=debug before, but sometimes it worked without the need of adding these line to kernel parameter (?)

```
 # cat /proc/interrupts

           CPU0

  0:     110486          XT-PIC  timer

  1:        143    IO-APIC-edge  i8042

  9:          0   IO-APIC-level  acpi

 14:       5280    IO-APIC-edge  ide0

 50:       6259   IO-APIC-level  nvidia

 58:        252   IO-APIC-level  HDA Intel

209:       8928   IO-APIC-level  eth0

217:          2   IO-APIC-level  ehci_hcd:usb1

225:        893   IO-APIC-level  ohci_hcd:usb2

233:        840   IO-APIC-level  wlan0

NMI:          0

LOC:     110289

ERR:          0

MIS:          0
```

Now I can do re-adding the rtc because I thought it was the bugger.

EDIT: spelling

----------

