brintos

brintos / linux-shallow public Read only

0
0
Text · 5.5 KiB · dbe9595 Raw
159 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3.. include:: ../../disclaimer-zh_TW.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 90ACPI相關的定義91==============92 93CPUINTC::94 95  ACPI_MADT_TYPE_CORE_PIC;96  struct acpi_madt_core_pic;97  enum acpi_madt_core_pic_version;98 99LIOINTC::100 101  ACPI_MADT_TYPE_LIO_PIC;102  struct acpi_madt_lio_pic;103  enum acpi_madt_lio_pic_version;104 105EIOINTC::106 107  ACPI_MADT_TYPE_EIO_PIC;108  struct acpi_madt_eio_pic;109  enum acpi_madt_eio_pic_version;110 111HTVECINTC::112 113  ACPI_MADT_TYPE_HT_PIC;114  struct acpi_madt_ht_pic;115  enum acpi_madt_ht_pic_version;116 117PCH-PIC::118 119  ACPI_MADT_TYPE_BIO_PIC;120  struct acpi_madt_bio_pic;121  enum acpi_madt_bio_pic_version;122 123PCH-MSI::124 125  ACPI_MADT_TYPE_MSI_PIC;126  struct acpi_madt_msi_pic;127  enum acpi_madt_msi_pic_version;128 129PCH-LPC::130 131  ACPI_MADT_TYPE_LPC_PIC;132  struct acpi_madt_lpc_pic;133  enum acpi_madt_lpc_pic_version;134 135參考文獻136========137 138龍芯3A5000的文檔:139 140  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-3A5000-usermanual-1.02-CN.pdf (中文版)141 142  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-3A5000-usermanual-1.02-EN.pdf (英文版)143 144龍芯LS7A芯片組的文檔:145 146  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-7A1000-usermanual-2.00-CN.pdf (中文版)147 148  https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-7A1000-usermanual-2.00-EN.pdf (英文版)149 150.. note::151    - CPUINTC:即《龍芯架構參考手冊卷一》第7.4節所描述的CSR.ECFG/CSR.ESTAT寄存器及其152      中斷控制邏輯;153    - LIOINTC:即《龍芯3A5000處理器使用手冊》第11.1節所描述的“傳統I/O中斷”;154    - EIOINTC:即《龍芯3A5000處理器使用手冊》第11.2節所描述的“擴展I/O中斷”;155    - HTVECINTC:即《龍芯3A5000處理器使用手冊》第14.3節所描述的“HyperTransport中斷”;156    - PCH-PIC/PCH-MSI:即《龍芯7A1000橋片用戶手冊》第5章所描述的“中斷控制器”;157    - PCH-LPC:即《龍芯7A1000橋片用戶手冊》第24.3節所描述的“LPC中斷”。158 159