Subject: Re: advice/suggestions sought on new configuration
To: None <erplefoo@gmail.com>
From: Takayoshi Kochi <kochi@NetBSD.org>
List: port-i386
Date: 11/10/2004 19:30:51
Hi,

From: Sean Davis <erplefoo@gmail.com>
Date: Wed, 10 Nov 2004 02:02:41 -0500

> My main question is... is there any advantage to be gained by enabling
> the ioapic support in the kernel? It is currently disabled, and the
> box runs just fine... but this is also my first machine to even HAVE
> an APIC, so I know jack about it.

To clarify, there are two kinds of APICs: one is local APIC and the other
is IO APIC.  The former is implemented in CPU core and the latter is
implemented in chipset.
Only ioapic is configurable in kernel config file, but local APIC
is configured automatically if necessary.

On SMP platforms, local APICs and IO APIC work together to
deliver/distribute interrupts from IO devices (e.g. PCI) to each cpu.
Local APICs are also used for issueing and receiving IPIs
(inter-processor interrupts).
For SMP support, APIC support in the kernel is mandatory.

For uniprocessor machines, one advantage that IO APIC has
over normal PICs is number of IRQs that one APIC can support.
You might have less shared IRQs for PCI devices (but it
depends on how interrupt lines are wired on your motherboard),
thus you might gain some performance improvement;)

Most recent x86 chipsets has ioapic internally, but many of uniprocessor
motherboards don't export it via ACPI or any other means to the kernel,
and it's unusable.

Good Luck,

Takayoshi Kochi