Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Jan 2001 23:39:06 -0800
From:      Peter Wemm <peter@netplex.com.au>
To:        smp@freebsd.org
Subject:   DL360 *fun*..
Message-ID:  <200101180739.f0I7d6K10125@mobile.wemm.org>

next in thread | raw e-mail | index | archive | help
Compaq have got some interesting hardware and software in these beasties.

First of all, the DL360 that we have has got these cpus:

APIC ID Version State           Family  Model   Step    Flags
0       0x10    BSP, usable     6       2       1       0x0381
0       0x10    AP, usable      6       8       6       0x383fbff

One is clocked at 800MHz, and the other is at 866MHz  !!!!!

I was unaware that this was possible.  But it sure is!  This is a
serverworks chipset based motherboard.  And yes, they really
are running at different speeds.  So much for the theory about using
the TSC for time measurement on the SMP kernel some day.

I just thought I'd pass along that bit of info.


The second "interesting" problem are the well known mptable bugs.  Compaq have
got the PIC->apic pin 0 (ExtINT) table entry at the *end* of the table.
In the released roms, they have an off-by-one error in the table header
that leads to the 'MP extended table HOSED!" message.

The fixed rom they gave me has an interesting quirk.. the entries are now
out of order!  mptable(1) cannot deal with this and gets VERY VERY upset.
I fixed mptable and a before-and-after is appended:

BEFORE:

-------------------------------------------------------------------------------

MP Config Table Header:

  physical address:             0x000f29c9
  signature:                    'PCMP'
  base table length:            356
  version:                      1.4
  checksum:                     0x1e
  OEM ID:                       'COMPAQ  '
  Product ID:                   'PROLIANT    '
  OEM table pointer:            0x00000000
  OEM table size:               0
  entry count:                  36  (<<<< Here is where the off-by-one was)
  local APIC address:           0xfee00000
  extended table length:        184
  extended table checksum:      106

-------------------------------------------------------------------------------

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       8       6       0x383fbff
--
Bus:            Bus ID  Type
                 0       PCI   
                 1       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   5:A          8   21
                INT     active-lo       level        0   5:B          8   20
                INT     active-lo       level        0   5:C          8   21
                INT     active-lo       level        0   5:D          8   20
                INT     active-lo       level        1   6:A          8   23
                INT     active-lo       level        1   6:B          8   22
                INT     active-lo       level        1   6:C          8   23
                INT     active-lo       level        1   6:D          8   22
                INT     active-lo       level        0   1:A          8   19
                INT     active-lo       level        0   1:B          8   18
                INT     active-lo       level        1   4:A          8   17
                INT     active-lo       level        1   5:A          8   24
                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        edge        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       level        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!

-------------------------------------------------------------------------------

Here is what we get after fixing mptable(1):
AFTER:

-------------------------------------------------------------------------------

MP Config Table Header:

  physical address:             0x000f29c9
  signature:                    'PCMP'
  base table length:            356
  version:                      1.4
  checksum:                     0x1e
  OEM ID:                       'COMPAQ  '
  Product ID:                   'PROLIANT    '
  OEM table pointer:            0x00000000
  OEM table size:               0
  entry count:                  36
  local APIC address:           0xfee00000
  extended table length:        184
  extended table checksum:      106

-------------------------------------------------------------------------------

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       8       6       0x383fbff
--
Bus:            Bus ID  Type
                 0       PCI   
                 1       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   5:A          8   21
                INT     active-lo       level        0   5:B          8   20
                INT     active-lo       level        0   5:C          8   21
                INT     active-lo       level        0   5:D          8   20
                INT     active-lo       level        1   6:A          8   23
                INT     active-lo       level        1   6:B          8   22
                INT     active-lo       level        1   6:C          8   23
                INT     active-lo       level        1   6:D          8   22
                INT     active-lo       level        0   1:A          8   19
                INT     active-lo       level        0   1:B          8   18
                INT     active-lo       level        1   4:A          8   17
                INT     active-lo       level        1   5:A          8   24
                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        edge        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       level        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
--
MPTABLE OUT OF ORDER!
I/O Ints:       Type    Polarity    Trigger     Bus ID   IRQ    APIC ID PIN#
                ExtINT   conforms    conforms        9     0          8    0

-------------------------------------------------------------------------------

MP Config Extended Table Entries:

--
System Address Space
 bus ID: 0 address type: I/O address
 address base: 0x0
 address range: 0x3000
--
System Address Space
 bus ID: 0 address type: I/O address
 address base: 0x3080
 address range: 0xcf80
.... much trimmed ....


Note how we go from I/O Ints to Local ints and back to I/O Ints for the
last PIC->apic daisy chain entry?

-current hangs on this box right now.  I will fix it, but I thought I'd
pass along the good news about mptable(1).

Cheers,
-Peter
--
Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
"All of this is for nothing if we don't go to the stars" - JMS/B5



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101180739.f0I7d6K10125>