Subject: Re: Multiple IO APICs?
To: None <tech-smp@netbsd.org>
From: Ben Harris <bjh21@netbsd.org>
List: tech-smp
Date: 07/18/2001 19:31:26
On Tue, 17 Jul 2001, Ben Harris wrote:

> Long, long ago, Bill Sommerfeld wrote (regarding his i386 MP test
> kernels):
>
> > Test cases I'm interested in:
> ...
> >         - more than 1 I/O APIC.
>
> Has anyone tested this?  I note that a search of the mailing list archives
> for "ioapic1" comes up blank.  I ask because at work we've just obtained a
> machine that Linux reports as having two IO APICs, and I can probably get
> away with booting NetBSD on it briefly if that would be useful.  I tried
> to boot last February's test floppies, and got a panic from UVM somewhere
> before the APICs were detected.

Reading more of this list, I realised that I needed rather less RAM in
this machine than it usually has.  Booting with 512 MB installed, I got
the results below.  Note that the second CPU didn't become ready on this
boot, but it did on an earlier one (which promptly panicked).  Also note
that pci1 and the Adaptec SCSI controller attached to it were never found.
I hope this is useful.

NetBSD 1.4T (INSTALL.MP) #5: Tue Feb 29 09:45:16 EST 2000
    wes@thunk:/usr/wes/current/src/sys/arch/i386/compile/INSTALL.MP
total memory = 511 MB
avail memory = 464 MB
using 4870 buffers containing 26292 KB of memory
biostramp installed @ 1000
BIOS32 rev. 0 found at 0xfd98e
mainbus0 (root)
mainbus0: scanning 0x9f400 to 0x9f7f0 for MP signature
mainbus0: scanning 0x9f000 to 0x9f3f0 for MP signature
mainbus0: scanning 0xf0000 to 0xffff0 for MP signature
mainbus0: MP floating pointer found in bios at 0xf6af0
mainbus0: MP config table at 0x9f560, 268 bytes long
mainbus0: Intel MP Specification (Version 1.4)
mainbus0: MP OEM INTEL    Product STL2
cpu0 at mainbus0: apid 3 (boot processor)
cpu0: family 6 model 8 step 6
cpu0: Intel Pentium III (E) (686-class)
cpu0: features 387fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR>
cpu0: features 387fbff<PGE,MCA,CMOV,FGPAT,PSE36,PN,MMX,FXSR,XMM>
cpu0: calibrating local timer
cpu0: apic clock running at 133 MHz
cpu0: kstack at 0xdd02c000 for 8192 bytes
cpu0: idle pcb at 0xdd02c000, idle sp at 0xdd02dfa0
cpu1 at mainbus0: apid 0 (application processor)
cpu1: family 6 model 8 step 6
cpu1: Intel Pentium III (E) (686-class)
cpu1: features 387fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR>
cpu1: features 387fbff<PGE,MCA,CMOV,FGPAT,PSE36,PN,MMX,FXSR,XMM>
cpu1: kstack at 0xdd02e000 for 8192 bytes
cpu1: idle pcb at 0xdd02e000, idle sp at 0xdd02ffa0
ioapic0 at mainbus0 apid 4 (I/O APIC)
ioapic0: pa 0xfec00000, virtual wire mode, version 11, 16 pins
ioapic1 at mainbus0 apid 5 (I/O APIC)
ioapic1: pa 0xfec01000, virtual wire mode, version 11, 16 pins
ioapic0: int0 attached to ExtINT (type 3<type=3=ExtINT> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int1 attached to isa0 irq 1 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int3 attached to isa0 irq 3 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int4 attached to isa0 irq 4 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int5 attached to isa0 irq 5 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int6 attached to isa0 irq 6 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int7 attached to isa0 irq 7 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int8 attached to isa0 irq 8 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic1: int0 attached to pci1 device 4 INT_A (type 0<type=0> flags f<pol=3=Act Lo,trig=3=Level>)
ioapic1: int2 attached to pci0 device 3 INT_A (type 0<type=0> flags f<pol=3=Act Lo,trig=3=Level>)
ioapic1: int3 attached to pci0 device 2 INT_A (type 0<type=0> flags f<pol=3=Act Lo,trig=3=Level>)
ioapic0: int12 attached to isa0 irq 12 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int13 attached to isa0 irq 13 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int14 attached to isa0 irq 14 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic0: int15 attached to isa0 irq 15 (type 0<type=0> flags 5<pol=1=Act Hi,trig=1=Edge>)
ioapic1: int1 attached to pci1 device 4 INT_B (type 0<type=0> flags f<pol=3=Act Lo,trig=3=Level>)
local apic: int0 attached to ExtINT (type 3<type=3=ExtINT> flags 5<pol=1=Act Hi,trig=1=Edge>)
local apic: int1 attached to NMI (type 1<type=1=NMI> flags 5<pol=1=Act Hi,trig=1=Edge>)
mainbus0: MP WARNING: 240 bytes of extended entries not examined
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled
pchb0 at pci0 dev 0 function 0
pchb0: vendor 0x1166 product 0x0009 (rev. 0x06)
pchb1 at pci0 dev 0 function 1
pchb1: vendor 0x1166 product 0x0009 (rev. 0x06)
vendor 0x1002 product 0x4756 (VGA display, revision 0x7a) at pci0 dev 2 function 0 not configured
fxp0 at pci0 dev 3 function 0: Intel i82557 Ethernet, rev 8
fxp0: interrupting at apic 5 int 2 (irq 10)
fxp0: detected 64 word EEPROM
fxp0: Ethernet address 00:d0:b7:b7:22:67, 10/100 Mb/s
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4
inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp0: supplying EUI64: 00:d0:b7:ff:fe:b7:22:67
pcib0 at pci0 dev 15 function 0
pcib0: vendor 0x1166 product 0x0200 (rev. 0x50)
pciide0 at pci0 dev 15 function 1: vendor 0x1166 product 0x0211 (rev. 0x00)
pciide0: bus-master DMA support present, but unused (no driver support)
pciide0: primary channel configured to compatibility mode
pciide0: primary channel interrupting at irq 14
pciide0: secondary channel configured to compatibility mode
pciide0: secondary channel interrupting at irq 15
isa0 at pcib0
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
seaprobe: board type unknown at address 0xc8000
isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
npx0 at isa0 port 0xf0-0xff: using exception 16
pc0 at isa0 port 0x60-0x6f irq 1: color
pc0: console
fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
fd0 at fdc0 drive 0: 1.44MB, 80 cyl, 2 head, 18 sec
isapnp0: no ISA Plug 'n Play devices found
biomask 0 netmask 0 ttymask 0
cpu0: prelint0 700<vector=0,delmode=7,dest=0> 0<target=0>
cpu0: prelint1 400<vector=0,delmode=4,dest=0> 0<target=0>
cpu0: timer0 300d0<vector=d0,delmode=0,masked,dest=0> 0<target=0>
cpu0: pcint0 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
cpu0: lint0 10700<vector=0,delmode=7,masked,dest=0> 0<target=0>
cpu0: lint1 400<vector=0,delmode=4,dest=0> 0<target=0>
cpu0: err0 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic0: enabling
ioapic0: int0 10700<vector=0,delmode=7,masked,dest=0> 0<target=0>
ioapic0: int1 1a0<vector=a0,delmode=1,dest=0> 3000000<target=3>
ioapic0: int2 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic0: int3 1e1<vector=e1,delmode=1,dest=0> 3000000<target=3>
ioapic0: int4 1e2<vector=e2,delmode=1,dest=0> 3000000<target=3>
ioapic0: int5 10100<vector=0,delmode=1,masked,dest=0> 0<target=0>
ioapic0: int6 170<vector=70,delmode=1,dest=0> 3000000<target=3>
ioapic0: int7 10100<vector=0,delmode=1,masked,dest=0> 0<target=0>
ioapic0: int8 10100<vector=0,delmode=1,masked,dest=0> 0<target=0>
ioapic0: int9 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic0: int10 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic0: int11 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic0: int12 10100<vector=0,delmode=1,masked,dest=0> 0<target=0>
ioapic0: int13 10100<vector=0,delmode=1,masked,dest=0> 0<target=0>
ioapic0: int14 171<vector=71,delmode=1,dest=0> 3000000<target=3>
ioapic0: int15 172<vector=72,delmode=1,dest=0> 3000000<target=3>
ioapic1: enabling
ioapic1: int0 1a100<vector=0,delmode=1,actlo,level,masked,dest=0> 0<target=0>
ioapic1: int1 1a100<vector=0,delmode=1,actlo,level,masked,dest=0> 0<target=0>
ioapic1: int2 a181<vector=81,delmode=1,actlo,level,dest=0> 3000000<target=3>
ioapic1: int3 1a100<vector=0,delmode=1,actlo,level,masked,dest=0> 0<target=0>
ioapic1: int4 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int5 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int6 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int7 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int8 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int9 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int10 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int11 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int12 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int13 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int14 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
ioapic1: int15 10000<vector=0,delmode=0,masked,dest=0> 0<target=0>
md0: internal 1587K image area
boot device: fd0
root on md0a dumps on md0b
mountroot: trying msdos...
mountroot: trying cd9660...
mountroot: trying ntfs...
mountroot: trying nfs...
mountroot: trying ext2fs...
mountroot: trying ffs...
root file system type: ffs
cpu1: starting
cpu1: init idle stack ptr is 0xdd02ffa0
cpu failed to become ready
init: copying out flags `-s' 3
init: copying out path `/sbin/init' 11
<7>fxp0: starting DAD for fe80:0001::02d0:b7ff:feb7:2267
<6>fxp0: DAD complete for fe80:0001::02d0:b7ff:feb7:2267 - no duplicates found

-- 
Ben Harris                                                   <bjh21@netbsd.org>
Portmaster, NetBSD/arm26               <URL:http://www.netbsd.org/Ports/arm26/>