patch-2.3.12 linux/Documentation/IO-APIC.txt

Next file: linux/Documentation/proc_usb_info.txt
Previous file: linux/Documentation/Configure.help
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.11/linux/Documentation/IO-APIC.txt linux/Documentation/IO-APIC.txt
@@ -1,51 +1,41 @@
-Most (all) Intel SMP boards have the so-called 'IO-APIC', which is
-an enhanced interrupt controller, able to route hardware interrupts
-to multiple CPUs, or to CPU groups.
+Most (all) Intel-MP compliant SMP boards have the so-called 'IO-APIC',
+which is an enhanced interrupt controller, it enables us to route
+hardware interrupts to multiple CPUs, or to CPU groups.
+
+Linux supports all variants of compliant SMP boards, including ones with
+multiple IO-APICs. (multiple IO-APICs are used in high-end servers to
+distribute IRQ load further).
+
+There are (a few) known breakages in certain older boards, which bugs are
+usually worked around by the kernel. If your MP-compliant SMP board does
+not boot Linux, then consult the linux-smp mailing list archives first.
 
-Linux supports the IO-APIC, but unfortunately there are broken boards
-out there which make it unsafe to enable the IO-APIC unconditionally.
-The Linux policy thus is to enable the IO-APIC only if it's 100% safe, ie.:
-
-	   - the board is on the 'whitelist'
-
-	or - the board does not have PCI pins connected to the IO-APIC
-
-	or - the user has overridden blacklisted settings with the
-	     pirq= boot option line.
-
-Kernel messages tell you whether the board is 'safe'. If your box
-boots with enabled IO-APIC IRQs, then you have nothing else to do. Your
+If your box boots fine with enabled IO-APIC IRQs, then your
 /proc/interrupts will look like this one:
 
    ---------------------------->
-   hell:~> cat /proc/interrupts
-              CPU0       CPU1
-     0:      90782          0   XT PIC   timer
-     1:       4135       2375  IO-APIC   keyboard
-     2:          0          0   XT PIC   cascade
-     3:        851        807  IO-APIC   serial
-     9:          6         22  IO-APIC   ncr53c8xx
-    11:        307        154  IO-APIC   NE2000
-    13:          4          0   XT PIC   fpu
-    14:      56000      30610  IO-APIC   ide0
-   NMI:          0
-   IPI:          0
-   <----------------------------
-
-some interrupts will still be 'XT PIC', but this is not a problem, none
-of those IRQ sources is 'heavy'.
-
-If one of your boot messages says 'unlisted/blacklisted board, DISABLING
-IO-APIC IRQs', then you should do this to get multi-CPU IO-APIC IRQs
-running:
-
-	A) if your board is unlisted, then mail to linux-smp to get
-	   it into either the white or the blacklist
-	B) if your board is blacklisted, then figure out the appropriate
-	   pirq= option to get your system to boot
-
-
-pirq= lines look like the following in /etc/lilo.conf:
+  hell:~> cat /proc/interrupts
+             CPU0
+    0:    1360293    IO-APIC-edge  timer
+    1:          4    IO-APIC-edge  keyboard
+    2:          0          XT-PIC  cascade
+   13:          1          XT-PIC  fpu
+   14:       1448    IO-APIC-edge  ide0
+   16:      28232   IO-APIC-level  Intel EtherExpress Pro 10/100 Ethernet
+   17:      51304   IO-APIC-level  eth0
+  NMI:          0
+  ERR:          0
+  hell:~>
+  <----------------------------
+
+some interrupts are still listed as 'XT PIC', but this is not a problem,
+none of those IRQ sources is performance-critical.
+
+
+in the unlikely case that your board does not create a working mp-table,
+you can use the pirq= boot parameter to 'hand-construct' IRQ entries. This
+is nontrivial though and cannot be automated. One sample /etc/lilo.conf
+entry:
 
 	append="pirq=15,11,10"
 
@@ -111,22 +101,13 @@
 won't function properly (if it's inserted as eg. a module).
 
 If you have 2 PCI buses, then you can use up to 8 pirq values. Although such
-boards tend to have a good configuration and will be included in the
-whitelist.
+boards tend to have a good configuration.
 
 Be prepared that it might happen that you need some strange pirq line:
 
 	append="pirq=0,0,0,0,0,0,9,11"
 
 use smart try-and-err techniques to find out the correct pirq line ...
-
-
-the following pirq line can be used to force a board into the whitelist:
-
-	append="pirq=0"
-
-[if your system works with no problems after this, then it should be added
-to the official whitelist, contact us]
 
 good luck and mail to linux-smp@vger.rutgers.edu or
 linux-kernel@vger.rutgers.edu if you have any problems that are not covered

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)