diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/ia64/IRQ-redir.txt |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/ia64/IRQ-redir.txt')
-rw-r--r-- | Documentation/ia64/IRQ-redir.txt | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Documentation/ia64/IRQ-redir.txt b/Documentation/ia64/IRQ-redir.txt new file mode 100644 index 000000000000..f7bd72261283 --- /dev/null +++ b/Documentation/ia64/IRQ-redir.txt | |||
@@ -0,0 +1,69 @@ | |||
1 | IRQ affinity on IA64 platforms | ||
2 | ------------------------------ | ||
3 | 07.01.2002, Erich Focht <efocht@ess.nec.de> | ||
4 | |||
5 | |||
6 | By writing to /proc/irq/IRQ#/smp_affinity the interrupt routing can be | ||
7 | controlled. The behavior on IA64 platforms is slightly different from | ||
8 | that described in Documentation/IRQ-affinity.txt for i386 systems. | ||
9 | |||
10 | Because of the usage of SAPIC mode and physical destination mode the | ||
11 | IRQ target is one particular CPU and cannot be a mask of several | ||
12 | CPUs. Only the first non-zero bit is taken into account. | ||
13 | |||
14 | |||
15 | Usage examples: | ||
16 | |||
17 | The target CPU has to be specified as a hexadecimal CPU mask. The | ||
18 | first non-zero bit is the selected CPU. This format has been kept for | ||
19 | compatibility reasons with i386. | ||
20 | |||
21 | Set the delivery mode of interrupt 41 to fixed and route the | ||
22 | interrupts to CPU #3 (logical CPU number) (2^3=0x08): | ||
23 | echo "8" >/proc/irq/41/smp_affinity | ||
24 | |||
25 | Set the default route for IRQ number 41 to CPU 6 in lowest priority | ||
26 | delivery mode (redirectable): | ||
27 | echo "r 40" >/proc/irq/41/smp_affinity | ||
28 | |||
29 | The output of the command | ||
30 | cat /proc/irq/IRQ#/smp_affinity | ||
31 | gives the target CPU mask for the specified interrupt vector. If the CPU | ||
32 | mask is preceded by the character "r", the interrupt is redirectable | ||
33 | (i.e. lowest priority mode routing is used), otherwise its route is | ||
34 | fixed. | ||
35 | |||
36 | |||
37 | |||
38 | Initialization and default behavior: | ||
39 | |||
40 | If the platform features IRQ redirection (info provided by SAL) all | ||
41 | IO-SAPIC interrupts are initialized with CPU#0 as their default target | ||
42 | and the routing is the so called "lowest priority mode" (actually | ||
43 | fixed SAPIC mode with hint). The XTP chipset registers are used as hints | ||
44 | for the IRQ routing. Currently in Linux XTP registers can have three | ||
45 | values: | ||
46 | - minimal for an idle task, | ||
47 | - normal if any other task runs, | ||
48 | - maximal if the CPU is going to be switched off. | ||
49 | The IRQ is routed to the CPU with lowest XTP register value, the | ||
50 | search begins at the default CPU. Therefore most of the interrupts | ||
51 | will be handled by CPU #0. | ||
52 | |||
53 | If the platform doesn't feature interrupt redirection IOSAPIC fixed | ||
54 | routing is used. The target CPUs are distributed in a round robin | ||
55 | manner. IRQs will be routed only to the selected target CPUs. Check | ||
56 | with | ||
57 | cat /proc/interrupts | ||
58 | |||
59 | |||
60 | |||
61 | Comments: | ||
62 | |||
63 | On large (multi-node) systems it is recommended to route the IRQs to | ||
64 | the node to which the corresponding device is connected. | ||
65 | For systems like the NEC AzusA we get IRQ node-affinity for free. This | ||
66 | is because usually the chipsets on each node redirect the interrupts | ||
67 | only to their own CPUs (as they cannot see the XTP registers on the | ||
68 | other nodes). | ||
69 | |||