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