|
@@ -1,12 +1,14 @@
|
|
|
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.
|
|
|
+which is an enhanced interrupt controller. It enables us to route
|
|
|
+hardware interrupts to multiple CPUs, or to CPU groups. Without an
|
|
|
+IO-APIC, interrupts from hardware will be delivered only to the
|
|
|
+CPU which boots the operating system (usually CPU#0).
|
|
|
|
|
|
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).
|
|
|
+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
|
|
|
+There are (a few) known breakages in certain older boards, such 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.
|
|
|
|
|
@@ -28,18 +30,18 @@ If your box boots fine with enabled IO-APIC IRQs, then your
|
|
|
hell:~>
|
|
|
<----------------------------
|
|
|
|
|
|
-some interrupts are still listed as 'XT PIC', but this is not a problem,
|
|
|
+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,
|
|
|
+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
|
|
|
+is non-trivial though and cannot be automated. One sample /etc/lilo.conf
|
|
|
entry:
|
|
|
|
|
|
append="pirq=15,11,10"
|
|
|
|
|
|
-the actual numbers depend on your system, on your PCI cards and on their
|
|
|
+The actual numbers depend on your system, on your PCI cards and on their
|
|
|
PCI slot position. Usually PCI slots are 'daisy chained' before they are
|
|
|
connected to the PCI chipset IRQ routing facility (the incoming PIRQ1-4
|
|
|
lines):
|
|
@@ -54,7 +56,7 @@ lines):
|
|
|
PIRQ1 ----| |- `----| |- `----| |- `----| |--------| |
|
|
|
`-' `-' `-' `-' `-'
|
|
|
|
|
|
-every PCI card emits a PCI IRQ, which can be INTA,INTB,INTC,INTD:
|
|
|
+Every PCI card emits a PCI IRQ, which can be INTA, INTB, INTC or INTD:
|
|
|
|
|
|
,-.
|
|
|
INTD--| |
|
|
@@ -95,21 +97,21 @@ card (IRQ11) in Slot3, and have Slot1 empty:
|
|
|
[value '0' is a generic 'placeholder', reserved for empty (or non-IRQ emitting)
|
|
|
slots.]
|
|
|
|
|
|
-generally, it's always possible to find out the correct pirq= settings, just
|
|
|
+Generally, it's always possible to find out the correct pirq= settings, just
|
|
|
permute all IRQ numbers properly ... it will take some time though. An
|
|
|
'incorrect' pirq line will cause the booting process to hang, or a device
|
|
|
-won't function properly (if it's inserted as eg. a module).
|
|
|
+won't function properly (e.g. if it's inserted as a module).
|
|
|
|
|
|
-If you have 2 PCI buses, then you can use up to 8 pirq values. Although such
|
|
|
+If you have 2 PCI buses, then you can use up to 8 pirq values, although such
|
|
|
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 ...
|
|
|
+Use smart trial-and-error techniques to find out the correct pirq line ...
|
|
|
|
|
|
-good luck and mail to linux-smp@vger.kernel.org or
|
|
|
+Good luck and mail to linux-smp@vger.kernel.org or
|
|
|
linux-kernel@vger.kernel.org if you have any problems that are not covered
|
|
|
by this document.
|
|
|
|