xref: /linux/Documentation/translations/zh_CN/arch/loongarch/irq-chip-model.rst (revision 52c996d3f40b40f87ef9dc80596903309682acc3)
1.. SPDX-License-Identifier: GPL-2.0
2
3.. include:: ../../disclaimer-zh_CN.rst
4
5:Original: Documentation/arch/loongarch/irq-chip-model.rst
6:Translator: Huacai Chen <chenhuacai@loongson.cn>
7
8==================================
9LoongArch的IRQ芯片模型(层级关系)
10==================================
11
12目前,基于LoongArch的处理器(如龙芯3A5000)只能与LS7A芯片组配合工作。LoongArch计算机
13中的中断控制器(即IRQ芯片)包括CPUINTC(CPU Core Interrupt Controller)、LIOINTC(
14Legacy I/O Interrupt Controller)、EIOINTC(Extended I/O Interrupt Controller)、
15HTVECINTC(Hyper-Transport Vector Interrupt Controller)、PCH-PIC(LS7A芯片组的主中
16断控制器)、PCH-LPC(LS7A芯片组的LPC中断控制器)和PCH-MSI(MSI中断控制器)。
17
18CPUINTC是一种CPU内部的每个核本地的中断控制器,LIOINTC/EIOINTC/HTVECINTC是CPU内部的
19全局中断控制器(每个芯片一个,所有核共享),而PCH-PIC/PCH-LPC/PCH-MSI是CPU外部的中
20断控制器(在配套芯片组里面)。这些中断控制器(或者说IRQ芯片)以一种层次树的组织形式
21级联在一起,一共有两种层级关系模型(传统IRQ模型和扩展IRQ模型)。
22
23传统IRQ模型
24===========
25
26在这种模型里面,IPI(Inter-Processor Interrupt)和CPU本地时钟中断直接发送到CPUINTC,
27CPU串口(UARTs)中断发送到LIOINTC,而其他所有设备的中断则分别发送到所连接的PCH-PIC/
28PCH-LPC/PCH-MSI,然后被HTVECINTC统一收集,再发送到LIOINTC,最后到达CPUINTC::
29
30     +-----+     +---------+     +-------+
31     | IPI | --> | CPUINTC | <-- | Timer |
32     +-----+     +---------+     +-------+
33                      ^
34                      |
35                 +---------+     +-------+
36                 | LIOINTC | <-- | UARTs |
37                 +---------+     +-------+
38                      ^
39                      |
40                +-----------+
41                | HTVECINTC |
42                +-----------+
43                 ^         ^
44                 |         |
45           +---------+ +---------+
46           | PCH-PIC | | PCH-MSI |
47           +---------+ +---------+
48             ^     ^           ^
49             |     |           |
50     +---------+ +---------+ +---------+
51     | PCH-LPC | | Devices | | Devices |
52     +---------+ +---------+ +---------+
53          ^
54          |
55     +---------+
56     | Devices |
57     +---------+
58
59扩展IRQ模型
60===========
61
62在这种模型里面,IPI(Inter-Processor Interrupt)和CPU本地时钟中断直接发送到CPUINTC,
63CPU串口(UARTs)中断发送到LIOINTC,而其他所有设备的中断则分别发送到所连接的PCH-PIC/
64PCH-LPC/PCH-MSI,然后被EIOINTC统一收集,再直接到达CPUINTC::
65
66          +-----+     +---------+     +-------+
67          | IPI | --> | CPUINTC | <-- | Timer |
68          +-----+     +---------+     +-------+
69                       ^       ^
70                       |       |
71                +---------+ +---------+     +-------+
72                | EIOINTC | | LIOINTC | <-- | UARTs |
73                +---------+ +---------+     +-------+
74                 ^       ^
75                 |       |
76          +---------+ +---------+
77          | PCH-PIC | | PCH-MSI |
78          +---------+ +---------+
79            ^     ^           ^
80            |     |           |
81    +---------+ +---------+ +---------+
82    | PCH-LPC | | Devices | | Devices |
83    +---------+ +---------+ +---------+
84         ^
85         |
86    +---------+
87    | Devices |
88    +---------+
89
90高级扩展IRQ模型
91===============
92
93在这种模型里面,IPI(Inter-Processor Interrupt)和CPU本地时钟中断直接发送到CPUINTC,
94CPU串口(UARTs)中断发送到LIOINTC,PCH-MSI中断发送到AVECINTC,而后通过AVECINTC直接
95送达CPUINTC,而其他所有设备的中断则分别发送到所连接的PCH-PIC/PCH-LPC,然后由EIOINTC
96统一收集,再直接到达CPUINTC::
97
98 +-----+     +-----------------------+     +-------+
99 | IPI | --> |        CPUINTC        | <-- | Timer |
100 +-----+     +-----------------------+     +-------+
101              ^          ^          ^
102              |          |          |
103       +---------+ +----------+ +---------+     +-------+
104       | EIOINTC | | AVECINTC | | LIOINTC | <-- | UARTs |
105       +---------+ +----------+ +---------+     +-------+
106            ^            ^
107            |            |
108       +---------+  +---------+
109       | PCH-PIC |  | PCH-MSI |
110       +---------+  +---------+
111         ^     ^           ^
112         |     |           |
113 +---------+ +---------+ +---------+
114 | Devices | | PCH-LPC | | Devices |
115 +---------+ +---------+ +---------+
116                  ^
117                  |
118             +---------+
119             | Devices |
120             +---------+
121
122ACPI相关的定义
123==============
124
125CPUINTC::
126
127  ACPI_MADT_TYPE_CORE_PIC;
128  struct acpi_madt_core_pic;
129  enum acpi_madt_core_pic_version;
130
131LIOINTC::
132
133  ACPI_MADT_TYPE_LIO_PIC;
134  struct acpi_madt_lio_pic;
135  enum acpi_madt_lio_pic_version;
136
137EIOINTC::
138
139  ACPI_MADT_TYPE_EIO_PIC;
140  struct acpi_madt_eio_pic;
141  enum acpi_madt_eio_pic_version;
142
143HTVECINTC::
144
145  ACPI_MADT_TYPE_HT_PIC;
146  struct acpi_madt_ht_pic;
147  enum acpi_madt_ht_pic_version;
148
149PCH-PIC::
150
151  ACPI_MADT_TYPE_BIO_PIC;
152  struct acpi_madt_bio_pic;
153  enum acpi_madt_bio_pic_version;
154
155PCH-MSI::
156
157  ACPI_MADT_TYPE_MSI_PIC;
158  struct acpi_madt_msi_pic;
159  enum acpi_madt_msi_pic_version;
160
161PCH-LPC::
162
163  ACPI_MADT_TYPE_LPC_PIC;
164  struct acpi_madt_lpc_pic;
165  enum acpi_madt_lpc_pic_version;
166
167参考文献
168========
169
170龙芯3A5000的文档:
171
172  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-3A5000-usermanual-1.02-CN.pdf (中文版)
173
174  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-3A5000-usermanual-1.02-EN.pdf (英文版)
175
176龙芯LS7A芯片组的文档:
177
178  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-7A1000-usermanual-2.00-CN.pdf (中文版)
179
180  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-7A1000-usermanual-2.00-EN.pdf (英文版)
181
182.. note::
183    - CPUINTC:即《龙芯架构参考手册卷一》第7.4节所描述的CSR.ECFG/CSR.ESTAT寄存器及其
184      中断控制逻辑;
185    - LIOINTC:即《龙芯3A5000处理器使用手册》第11.1节所描述的“传统I/O中断”;
186    - EIOINTC:即《龙芯3A5000处理器使用手册》第11.2节所描述的“扩展I/O中断”;
187    - HTVECINTC:即《龙芯3A5000处理器使用手册》第14.3节所描述的“HyperTransport中断”;
188    - PCH-PIC/PCH-MSI:即《龙芯7A1000桥片用户手册》第5章所描述的“中断控制器”;
189    - PCH-LPC:即《龙芯7A1000桥片用户手册》第24.3节所描述的“LPC中断”。
190