Symmetric Multiprocessing (SMP) development
 help / color / mirror / Atom feed
From: "Earle R. Nietzel" <nietzel@rhinobox.org>
To: linux-smp <linux-smp@vger.kernel.org>
Subject: How does an UNEXPECTED_IO_APIC happen?
Date: 17 Apr 2003 14:58:01 +0200	[thread overview]
Message-ID: <1050584281.3616.34.camel@home> (raw)

How does an UNEXPECTED_IO_APIC happen?
(as of 2.4.20)

Probably everyone has seen this common message among who has new
hardware or
hardware that is not very common.
 
"An unexpected IO-APIC was found."

The most common questions that are askes as a result are:
Many people will ask what does this mean? Is something broke? Is my
system not stable because of this? Does this affect my performance? How
can I fix this?

To answer all of those questions with just one answer:
This message does not identify that something is broke, or that a system
is unstable, or that it could affect your performance what it does do is
allow kernel programmers (most likely Ingo Molnar) to see what types of
hardware (motherboards) are out there and to create a known list (the
vanilla list).

How does your hardware get onto the list?
That I do not know and the maintainer (Ingo Molnar) would be the person
to ask.

How does an UNEXPECTED_IO_APIC happen?

The IO_APIC is read into 3 structures that are each 32 bits (u32) and
are packed with different fields:


register#00 = 0x02000000
                |||-----
                rIr
                eDe
                s s
                1 2

res1 is 4 bits (reserved)
ID is 4 bits
res2 is the remaining 24 bits (reserved)


register#01 = 0x00178020
                |-|-|-|-
                r e Prv
                e n Ree
                s t Qsr
                1 r  2s
                  i   i
                  e   o
                  s   n
                      
 res1 is 8 bits (reserved)
 entries is 8 bits
*PRQ is 1 bit (the 16th bit)
*res2 is 7 bits (reserved)
 version is 8 bits

(*PRQ and reserved make up 8 bits with PRQ being the first)


register#02 = 0x00000000
                |||-----
                rar
                ere
                sbs
                1i2
                 t 
                 r 
                 a 
                 t 
                 i 
                 o  
                 n  

res1 is 4 bits (reserved)
arbitration is 4 bits
res2 is the remaining 24 bits (reserved)


After reading each IO_APIC they are examined, for example:
On my SuperMicro X5DAE (Dual Xeon 2.4G, Intel E7505):

IO APIC #2......
.... register #00: 02000000
.......    : physical APIC id: 02
.... register #01: 00178020
.......     : max redirection entries: 0017
.......     : PRQ implemented: 1
.......     : IO APIC version: 0020
.... register #02: 00000000
.......     : arbitration: 00

IO APIC #3......
.... register #00: 03000000
.......    : physical APIC id: 03
.... register #01: 00178020
.......     : max redirection entries: 0017
.......     : PRQ implemented: 1
.......     : IO APIC version: 0020
.... register #02: 03000000
.......     : arbitration: 03

IO APIC #4......
.... register #00: 04000000
.......    : physical APIC id: 04
.... register #01: 00178020
.......     : max redirection entries: 0017
.......     : PRQ implemented: 1
.......     : IO APIC version: 0020
.... register #02: 04000000
.......     : arbitration: 04


The rules for generating an UNEXPECTED_IO_APIC are:

1)If any value other than 0 is found in the reserved bit areas (res1 ||
res2) of the 3 registers it is considered an unexpected IO_APIC. 

2)In register#01 if the entries field contains any other value except:
0x0f (older (Neptune) boards)
0x17 (typical ISA+PCI boards)
0x1b (Compaq Proliant boards)
0x1f (dual Xeon boards)
0x22 (bigger Xeon boards)
0x2E (?)
0x3F (?)

3)In register#01 if the version field contains any other value except:
0x01 (82489DX IO-APICs)
0x02 (VIA)
0x10 (oldest IO-APICs)
0x11 (Pentium/Pro IO-APICs)
0x13 (Xeon IO-APICs)
0x20 (Intel P64H [82806 AA])

-- 
Earle R. Nietzel <nietzel@rhinobox.org>


             reply	other threads:[~2003-04-17 12:58 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-04-17 12:58 Earle R. Nietzel [this message]
2003-04-17 17:16 ` How does an UNEXPECTED_IO_APIC happen? Randy.Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1050584281.3616.34.camel@home \
    --to=nietzel@rhinobox.org \
    --cc=linux-smp@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox