OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [ia64/] [IRQ-redir.txt] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
IRQ affinity on IA64 platforms
2
------------------------------
3
                           07.01.2002, Erich Focht 
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 preceeded 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
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.