brintos

brintos / linux-shallow public Read only

0
0
Text · 6.7 KiB · 4727619 Raw
190 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3.. include:: ../../disclaimer-zh_CN.rst4 5:Original: Documentation/arch/loongarch/irq-chip-model.rst6: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,然后由EIOINTC96统一收集,再直接到达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