From owner-freebsd-smp Sun Nov 17 15:12:09 1996 Return-Path: owner-smp Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id PAA20310 for smp-outgoing; Sun, 17 Nov 1996 15:12:09 -0800 (PST) Received: from uruk.org (root@ns.uruk.org [198.145.95.253]) by freefall.freebsd.org (8.7.5/8.7.3) with SMTP id PAA20286 for ; Sun, 17 Nov 1996 15:11:49 -0800 (PST) Received: from uruk.org [127.0.0.1] (erich) by uruk.org with esmtp (Exim 0.53 #1) id E0vPGRt-0006oV-00; Sun, 17 Nov 1996 15:16:25 -0800 To: Steve Passe cc: smp@freebsd.org Subject: Re: Can test again... In-reply-to: Your message of "Sun, 17 Nov 1996 15:39:19 MST." <199611172239.PAA06234@clem.systemsix.com> Date: Sun, 17 Nov 1996 15:16:25 -0800 From: Erich Boleyn Message-Id: Sender: owner-smp@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Hi Steve! Thanks for responding so quickly on this topic. Steve Passe writes: > > I grabbed the SMP tree, and have been hacking on it a bit. > > > > What I've noticed so far are: > > > > -- mptable-2.0.2.c AND the kernel : Both do the MPS floating pointer > > probe wrong. They are searching on 4-byte boundaries (it should > > be 16-byte boundaries), and search too many areas. This caused > > my test machine to not be recognized correctly. > > > > The proper probe sequence is to search (again, on 16-byte > > boundaries): > > > > (1) If the EBDA is defined: > > -- The first kilobyte of the EBDA > > else: > > -- The last kilobyte of system base memory. > > (2) ROM space between 0xF0000 and 0xFFFFF. > > > > If you find it anywhere else, it might be a false report (as > > mentioned, it did on my test box). > > I cleaned up the kernel to adhear to the letter of the MP spec., but left > mptable.c more liberal. The newest mptable.c is now on the SMP page. I checked out the new "mptable.c", and it should work for most boxes. There is one problem left though. The "last kilobyte of system base memory" should really be stated as PHYSICAL base memory, not BIOS reported memory. In other words, getting this value from the BIOS or from the BIOS data area (at 0x413 in physical RAM) is invalid. The only place to get this value predictably is from the CMOS RTC values. For example on my machine it tried to check from 637K-638K, when it should have tried the 639K-640K area. I am fairly certain of this because version 1.4 of the MP Spec (top of page 4-2) is ambiguous about what is reported at location (40:13h) of the BIOS data area, it actually says to look at 639K-640K or 511K-512K, and the RTC values are known to be the physical RAM amounts. The probe sequence mentioned above (which is also in the sample Intel MPS probe code I have) has been tried on a pretty big list of machines and has always worked so far. > general usage of mptable is now: > > mptable -verbose -dmesg ... Here is the output of the new mptable on my test box (an Intel Alder w/4 150MHz Pentium Pros): -----------------------(start mptable_output)------------------------------ =============================================================================== MPTable, version 2.0.4 looking for EBDA pointer @ 0x040e, found, searching EBDA @ 0x0009f800 searching CMOS 'top of mem' @ 0x0009f400 (637K) searching default 'top of mem' @ 0x0009fc00 (639K) searching BIOS @ 0x000f0000 MP FPS found in BIOS @ physical addr: 0x000f77e0 ------------------------------------------------------------------------------- MP Floating Pointer Structure: location: BIOS physical address: 0x000f77e0 signature: '_MP_' length: 16 bytes version: 1.4 checksum: 0x2a mode: Virtual Wire ------------------------------------------------------------------------------- MP Config Table Header: physical address: 0x000f77f0 signature: 'PCMP' base table length: 300 version: 1.4 checksum: 0x14 OEM ID: 'INTEL ' Product ID: 'ALDER ' OEM table pointer: 0x00000000 OEM table size: 0 entry count: 26 local APIC address: 0xfec08000 extended table length: 180 extended table checksum: 76 ------------------------------------------------------------------------------- MP Config Base Table Entries: -- Processors: APIC ID Version State Family Model Step Flags 0 0x11 BSP, usable 6 1 2 0xfbff 4 0x11 AP, usable 6 1 2 0xfbff 1 0x11 AP, usable 6 1 2 0xfbff 2 0x11 AP, usable 6 1 2 0xfbff -- Bus: Bus ID Type 0 PCI 1 PCI 18 EISA -- I/O APICs: APIC ID Version State Address 14 0x11 usable 0xfec00000 -- I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID INT# ExtINT active-hi edge 18 0 14 0 INT active-hi edge 18 1 14 1 INT active-hi edge 18 0 14 2 INT active-hi edge 18 3 14 3 INT active-hi edge 18 4 14 4 INT active-hi edge 18 5 14 5 INT active-hi edge 18 6 14 6 INT active-hi edge 18 7 14 7 INT active-hi edge 18 8 14 8 INT conforms level 18 9 14 9 INT active-hi edge 18 10 14 10 INT active-hi edge 18 11 14 11 INT active-hi edge 18 12 14 12 INT active-hi edge 18 13 14 13 INT active-hi edge 18 14 14 14 INT conforms level 18 15 14 15 -- Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID INT# ExtINT active-hi edge 18 0 255 0 NMI active-hi edge 0 0:A 255 1 ------------------------------------------------------------------------------- MP Config Extended Table Entries: -- bus ID: 0 address type: memory address address base: 0xa0000 address range: 0x20000 -- bus ID: 1 address type: prefetch address address base: 0xfe900000 address range: 0x100000 -- bus ID: 1 address type: memory address address base: 0xfea00000 address range: 0x100000 -- bus ID: 1 address type: I/O address address base: 0xf000 address range: 0x1000 -- bus ID: 0 address type: memory address address base: 0x8000000 address range: 0xf6900000 -- bus ID: 0 address type: memory address address base: 0xfeb00000 address range: 0x1500000 -- bus ID: 0 address type: I/O address address base: 0x0 address range: 0xf000 -- bus ID: 18 bus info: 0x01 parent bus ID: 0-- bus ID: 0 address modifier: add predefined range: 0x00000000-- bus ID: 0 address modifier: add predefined range: 0x00000001-- bus ID: 1 address modifier: subtract predefined range: 0x00000000-- bus ID: 1 address modifier: subtract predefined range: 0x00000001 ------------------------------------------------------------------------------- dmesg output: 1991, 1993 The Regents of the University of California. All rights reserved. FreeBSD 2.2-ALPHA #0: Wed Nov 13 15:29:19 1996 jkh@time.cdrom.com:/usr/src/sys/compile/GENERIC Calibrating clock(s) relative to mc146818A clock ... i586 clock: 150001401 Hz, i8254 clock: 1193195 Hz CPU: Pentium Pro (147.00-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x612 Stepping=2 Features=0xfbff,MTRR,PGE,MCA,CMOV> real memory = 67108864 (65536K bytes) avail memory = 62664704 (61196K bytes) eisa0: Probing for devices on the EISA bus ep0: <3Com 3C579-TP EISA Network Adapter> at 0x3000-0x300f, 0x3c80-0x3c89 irq 5 ep0: on eisa0 slot 3 ep0: aui/utp[*AUI*] address 00:20:af:0b:7e:e0 Probing for devices on PCI bus 0: vga0 rev 3 on pci0:12 chip0 rev 5 on pci0:14:0 pci0:15:0: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned] pci0:15:1: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned] pci0:15:2: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned] pci0:15:3: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned] pci0:15:4: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned] pci0:15:5: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned] pci0:15:6: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned] pci0:15:7: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned] chip1 rev 3 on pci0:25 chip2 rev 3 on pci0:26 Probing for devices on PCI bus 1: ahc0 rev 3 int a irq 15 on pci1:11 ahc0: Using left over BIOS settings ahc0: aic7870 Wide Channel, SCSI Id=7, 16 SCBs ahc0 waiting for scsi devices to settle (ahc0:0:0): "iomega jaz 1GB H.71" type 0 removable SCSI 2 sd0(ahc0:0:0): Direct-Access sd0(ahc0:0:0): ILLEGAL REQUEST asc:24,0 Invalid field in CDB sd0 could not mode sense (4). Using ficticious geometry 1021MB (2091050 512 byte sectors) (ahc0:1:0): "SEAGATE ST11950N 0009" type 0 fixed SCSI 2 sd1(ahc0:1:0): Direct-Access 1611MB (3301239 512 byte sectors) (ahc0:2:0): "TOSHIBA CD-ROM XM-3501TA 2694" type 5 removable SCSI 2 cd0(ahc0:2:0): CD-ROM cd0(ahc0:2:0): NOT READY asc:3a,0 Medium not present can't get the size ahc1 rev 3 int a irq 9 on pci1:12 ahc1: aic7870 Wide Channel, SCSI Id=7, 16 SCBs ahc1: Host Adapter Bios disabled. Using default SCSI device parameters ahc1 waiting for scsi devices to settle Probing for devices on the ISA bus: sc0 at 0x60-0x6f irq 1 on motherboard sc0: VGA color <16 virtual consoles, flags=0x0> ed0 not found at 0x280 ed1 not found at 0x300 fe0 not found at 0x300 sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A sio2: disabled, not probed. sio3: disabled, not probed. lpt0 at 0x378-0x37f irq 7 on isa lpt0: Interrupt-driven port lp0: TCP/IP capable interface lpt1 at 0x378-0x37f on isa lpt1 not probed due to I/O address conflict with lpt0 at 0x378 mse0 not found at 0x23c psm0: disabled, not probed. fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa fdc0: NEC 72065B fd0: 1.44MB 3.5in wdc0 at 0x1f0-0x1f7 irq 14 on isa wdc0: unit 0 (wd0): wd0: 814MB (1667232 sectors), 1654 cyls, 16 heads, 63 S/T, 512 B/S wdc1 not found at 0x170 bt0 not found at 0x330 uha0 not found at 0x330 aha0 not found at 0x330 aic0 not found at 0x340 nca0 not found at 0x1f88 nca1 not found at 0x350 sea0 not found wt0 not found at 0x300 mcd0 not found at 0x300 matcdc0 not found at 0x230 scd0 not found at 0x230 ie0 not found at 0x360 ep0 not found at 0x300 ix0 not found at 0x300 le0 not found at 0x300 lnc0 not found at 0x280 ze0 not found at 0x300 zp0 not found at 0x300 npx0 on motherboard npx0: INT 16 interface apm0: disabled, not probed. changing root device to sd0a ------------------------------------------------------------------------------- # SMP kernel config file options: options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O options NCPU=4 # number of CPUs options NBUS=3 # number of busses options NAPIC=1 # number of IO APICs options NINTR=16 # number of INTs =============================================================================== -----------------------(end mptable_output)-------------------------------- -- Erich Stefan Boleyn \_ E-mail (preferred): Mad Genius wanna-be, CyberMuffin \__ (finger me for other stats) Web: http://www.uruk.org/~erich/ Motto: "I'll live forever or die trying"