Date: Wed, 20 Sep 2000 11:39:53 +0100 From: Daniel Bye <Daniel.Bye@uk.uu.net> To: "'questions@freebsd.org'" <questions@freebsd.org> Subject: SMP kernel for 4.1-STABLE Message-ID: <FB7CAC781DB6D311BEE800805FE6FADA2F4BE6@camexch4.cam.uk.internal>
next in thread | raw e-mail | index | archive | help
Hi all,
I have a Compaq 1850R dual PIII 550, running 4.1-STABLE quite happily with
almost any (sensible) uniprocessor kernel I give it. As it's a dual
processor machine, I thought I'd try building an SMP kernel. Easy. Only
no, it wasn't. Using the current UP build as the basis, I added various
values for the appropriate fields. But no matter what I gave it, the new
kernel never boots. What am I doing wrong?
Here are the relevant lines from the system file:
# To make an SMP kernel, the next two are needed
options SMP # Symmetric MultiProcessor Kernel
options APIC_IO # Symmetric (APIC) I/O
# Optionally these may need tweaked, (defaults shown):
options NCPU=2 # number of CPUs
options NBUS=4 # number of busses
options NAPIC=4 # number of IO APICs
options NINTR=37 # number of INTs
The thing tells me if I give it too few INTs, and says that probing found
37. But no matter what combination of numbers for the NBUS and NAPIC
fields, it never does more than this:
(All normal up to memory check, then...)
Programming 35 pins in IOAPIC #0
IOAPIC #0 intpin 2 -> irq 0
IOAPIC #0 intpin 31 -> irq 2
And there it stops.
This is the dmesg output from a good kernel:
Copyright (c) 1992-2000 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 4.1-RELEASE #5: Mon Sep 18 12:22:00 GMT 2000
danielby@ecam082.cam.uk.internal:/usr/src/sys/compile/ECAM082
Timecounter "i8254" frequency 1193182 Hz
Timecounter "TSC" frequency 548336360 Hz
CPU: Pentium III/Pentium III Xeon/Celeron (548.34-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0x673 Stepping = 3
Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,
PAT,PSE36,MMX,FXSR,XMM>
real memory = 671072256 (655344K bytes)
avail memory = 648982528 (633772K bytes)
Preloaded elf kernel "kernel.SINGLE" at 0xc0302000.
Pentium Pro MTRR support enabled
md0: Malloc disk
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Intel 82443BX host to PCI bridge (AGP disabled)> on motherboard
pci0: <PCI bus> on pcib0
pci0: <unknown card> (vendor=0x1000, dev=0x000f) at 6.0 irq 5
pci0: <unknown card> (vendor=0x1000, dev=0x000f) at 6.1 irq 10
tl0: <Compaq Netelligent 10/100 Proliant> port 0x2c00-0x2c0f mem
0xc6efccf0-0xc6efccff irq 11 at device 7.0 on pci0
tl0: Ethernet address: 00:50:8b:cc:30:d9
miibus0: <MII bus> on tl0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
tlphy0: <ThunderLAN 10baseT media interface> on miibus0
tlphy0: 10base2/BNC, 10base5/AUI
pci0: <ATI Mach64-GV graphics accelerator> at 8.0
pci0: <unknown card> (vendor=0x0e11, dev=0xa0f0) at 9.0
pcib1: <IBM 82351 PCI-PCI bridge> at device 13.0 on pci0
pci1: <PCI bus> on pcib1
ida0: <Compaq Smart Array 221 controller> port 0x3000-0x30ff mem
0xb8000000-0xbfffffff,0xc6ffff00-0xc6ffffff irq 15 at device 0.0 on pci1
ida0: drives=1 firm_rev=4.16
idad0: <Compaq Logical Drive> on ida0
idad0: 34727MB (71122560 sectors), blocksize=512
isab0: <Intel 82371AB PCI to ISA bridge> at device 20.0 on pci0
isa0: <ISA bus> on isab0
pci0: <Intel PIIX4 ATA controller> at 20.1
pci0: <Intel 82371AB/EB (PIIX4) USB controller> at 20.2 irq 0
chip1: <Intel 82371AB Power management controller> at device 20.3 on pci0
eisa0: <EISA bus> on motherboard
mainboard0: <CPQ0679 (System Board)> on eisa0 slot 0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: cannot reserve I/O port range
no devsw (majdev=0 bootdev=0xa0200000)
Mounting root from ufs:/dev/idad0s1a
And this is what I see when I do mptable:
MP Floating Pointer Structure:
location: BIOS
physical address: 0x000f4ff0
signature: '_MP_'
length: 16 bytes
version: 1.4
checksum: 0x00
mode: Virtual Wire
----------------------------------------------------------------------------
---
MP Config Table Header:
physical address: 0x000f2b9f
signature: 'PCMP'
base table length: 420
version: 1.4
checksum: 0x6a
OEM ID: 'COMPAQ '
Product ID: 'PROLIANT '
OEM table pointer: 0x00000000
OEM table size: 0
entry count: 44
local APIC address: 0xfee00000
extended table length: 76
extended table checksum: 86
----------------------------------------------------------------------------
---
MP Config Base Table Entries:
--
Processors: APIC ID Version State Family Model Step
Flags
0 0x10 BSP, usable 6 2 1
0x0381
0 0x10 AP, usable 6 7 3
0x383fbff
--
Bus: Bus ID Type
0 PCI
9 ISA
--
I/O APICs: APIC ID Version State Address
8 0x11 usable 0xfec00000
--
I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#
INT active-lo level 0 13:A 8 17
INT active-lo level 0 13:B 8 16
INT active-lo level 0 13:C 8 17
INT active-lo level 0 13:D 8 16
INT active-lo level 0 15:A 8 19
INT active-lo level 0 15:B 8 18
INT active-lo level 0 15:C 8 19
INT active-lo level 0 15:D 8 18
INT active-lo level 0 16:A 8 21
INT active-lo level 0 16:B 8 20
INT active-lo level 0 16:C 8 21
INT active-lo level 0 16:D 8 20
INT active-lo level 0 18:A 8 23
INT active-lo level 0 18:B 8 22
INT active-lo level 0 18:C 8 23
INT active-lo level 0 18:D 8 22
INT active-lo level 0 6:A 8 31
INT active-lo level 0 6:B 8 30
INT active-lo level 0 7:A 8 29
INT active-lo level 0 8:A 8 28
INT active-lo edge 0 9:A 8 13
INT active-hi edge 9 1 8 1
INT active-hi edge 9 0 8 2
INT active-hi edge 9 3 8 3
INT active-hi edge 9 4 8 4
INT active-hi edge 9 5 8 5
INT active-hi edge 9 6 8 6
INT active-hi edge 9 7 8 7
INT active-hi edge 9 8 8 8
INT active-hi level 9 9 8 9
INT active-hi edge 9 10 8 10
INT active-hi edge 9 11 8 11
INT active-hi edge 9 12 8 12
INT active-lo edge 9 13 8 13
INT active-hi edge 9 14 8 14
INT active-hi edge 9 15 8 15
--
Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#
ExtINT conforms conforms 9 0
255 0
NMI conforms conforms 9 0
255 1
----------------------------------------------------------------------------
---
MP Config Extended Table Entries:
Extended Table HOSED!
So, in more specific terms, what are the correct values for NBUS and NAPIC?
And how do you derive those numbers from the mptable output? I read the
stuff at http://people.freebsd.org/~fsmp/SMP/getstarted.html, including the
rogue hardware tips, but made no sense of it. (This is the first time I
have tried to build an SMP kernel, so must confess I don't really know what
I'm doing...)
Dan Bye
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FB7CAC781DB6D311BEE800805FE6FADA2F4BE6>
