1*f949cb75SHu Haowen.. SPDX-License-Identifier: GPL-2.0 2*f949cb75SHu Haowen 3*f949cb75SHu Haowen.. include:: ../../disclaimer-zh_TW.rst 4*f949cb75SHu Haowen 5*f949cb75SHu Haowen:Original: Documentation/arch/loongarch/irq-chip-model.rst 6*f949cb75SHu Haowen:Translator: Huacai Chen <chenhuacai@loongson.cn> 7*f949cb75SHu Haowen 8*f949cb75SHu Haowen================================== 9*f949cb75SHu HaowenLoongArch的IRQ芯片模型(層級關係) 10*f949cb75SHu Haowen================================== 11*f949cb75SHu Haowen 12*f949cb75SHu Haowen目前,基於LoongArch的處理器(如龍芯3A5000)只能與LS7A芯片組配合工作。LoongArch計算機 13*f949cb75SHu Haowen中的中斷控制器(即IRQ芯片)包括CPUINTC(CPU Core Interrupt Controller)、LIOINTC( 14*f949cb75SHu HaowenLegacy I/O Interrupt Controller)、EIOINTC(Extended I/O Interrupt Controller)、 15*f949cb75SHu HaowenHTVECINTC(Hyper-Transport Vector Interrupt Controller)、PCH-PIC(LS7A芯片組的主中 16*f949cb75SHu Haowen斷控制器)、PCH-LPC(LS7A芯片組的LPC中斷控制器)和PCH-MSI(MSI中斷控制器)。 17*f949cb75SHu Haowen 18*f949cb75SHu HaowenCPUINTC是一種CPU內部的每個核本地的中斷控制器,LIOINTC/EIOINTC/HTVECINTC是CPU內部的 19*f949cb75SHu Haowen全局中斷控制器(每個芯片一個,所有核共享),而PCH-PIC/PCH-LPC/PCH-MSI是CPU外部的中 20*f949cb75SHu Haowen斷控制器(在配套芯片組裏面)。這些中斷控制器(或者說IRQ芯片)以一種層次樹的組織形式 21*f949cb75SHu Haowen級聯在一起,一共有兩種層級關係模型(傳統IRQ模型和擴展IRQ模型)。 22*f949cb75SHu Haowen 23*f949cb75SHu Haowen傳統IRQ模型 24*f949cb75SHu Haowen=========== 25*f949cb75SHu Haowen 26*f949cb75SHu Haowen在這種模型裏面,IPI(Inter-Processor Interrupt)和CPU本地時鐘中斷直接發送到CPUINTC, 27*f949cb75SHu HaowenCPU串口(UARTs)中斷髮送到LIOINTC,而其他所有設備的中斷則分別發送到所連接的PCH-PIC/ 28*f949cb75SHu HaowenPCH-LPC/PCH-MSI,然後被HTVECINTC統一收集,再發送到LIOINTC,最後到達CPUINTC:: 29*f949cb75SHu Haowen 30*f949cb75SHu Haowen +-----+ +---------+ +-------+ 31*f949cb75SHu Haowen | IPI | --> | CPUINTC | <-- | Timer | 32*f949cb75SHu Haowen +-----+ +---------+ +-------+ 33*f949cb75SHu Haowen ^ 34*f949cb75SHu Haowen | 35*f949cb75SHu Haowen +---------+ +-------+ 36*f949cb75SHu Haowen | LIOINTC | <-- | UARTs | 37*f949cb75SHu Haowen +---------+ +-------+ 38*f949cb75SHu Haowen ^ 39*f949cb75SHu Haowen | 40*f949cb75SHu Haowen +-----------+ 41*f949cb75SHu Haowen | HTVECINTC | 42*f949cb75SHu Haowen +-----------+ 43*f949cb75SHu Haowen ^ ^ 44*f949cb75SHu Haowen | | 45*f949cb75SHu Haowen +---------+ +---------+ 46*f949cb75SHu Haowen | PCH-PIC | | PCH-MSI | 47*f949cb75SHu Haowen +---------+ +---------+ 48*f949cb75SHu Haowen ^ ^ ^ 49*f949cb75SHu Haowen | | | 50*f949cb75SHu Haowen +---------+ +---------+ +---------+ 51*f949cb75SHu Haowen | PCH-LPC | | Devices | | Devices | 52*f949cb75SHu Haowen +---------+ +---------+ +---------+ 53*f949cb75SHu Haowen ^ 54*f949cb75SHu Haowen | 55*f949cb75SHu Haowen +---------+ 56*f949cb75SHu Haowen | Devices | 57*f949cb75SHu Haowen +---------+ 58*f949cb75SHu Haowen 59*f949cb75SHu Haowen擴展IRQ模型 60*f949cb75SHu Haowen=========== 61*f949cb75SHu Haowen 62*f949cb75SHu Haowen在這種模型裏面,IPI(Inter-Processor Interrupt)和CPU本地時鐘中斷直接發送到CPUINTC, 63*f949cb75SHu HaowenCPU串口(UARTs)中斷髮送到LIOINTC,而其他所有設備的中斷則分別發送到所連接的PCH-PIC/ 64*f949cb75SHu HaowenPCH-LPC/PCH-MSI,然後被EIOINTC統一收集,再直接到達CPUINTC:: 65*f949cb75SHu Haowen 66*f949cb75SHu Haowen +-----+ +---------+ +-------+ 67*f949cb75SHu Haowen | IPI | --> | CPUINTC | <-- | Timer | 68*f949cb75SHu Haowen +-----+ +---------+ +-------+ 69*f949cb75SHu Haowen ^ ^ 70*f949cb75SHu Haowen | | 71*f949cb75SHu Haowen +---------+ +---------+ +-------+ 72*f949cb75SHu Haowen | EIOINTC | | LIOINTC | <-- | UARTs | 73*f949cb75SHu Haowen +---------+ +---------+ +-------+ 74*f949cb75SHu Haowen ^ ^ 75*f949cb75SHu Haowen | | 76*f949cb75SHu Haowen +---------+ +---------+ 77*f949cb75SHu Haowen | PCH-PIC | | PCH-MSI | 78*f949cb75SHu Haowen +---------+ +---------+ 79*f949cb75SHu Haowen ^ ^ ^ 80*f949cb75SHu Haowen | | | 81*f949cb75SHu Haowen +---------+ +---------+ +---------+ 82*f949cb75SHu Haowen | PCH-LPC | | Devices | | Devices | 83*f949cb75SHu Haowen +---------+ +---------+ +---------+ 84*f949cb75SHu Haowen ^ 85*f949cb75SHu Haowen | 86*f949cb75SHu Haowen +---------+ 87*f949cb75SHu Haowen | Devices | 88*f949cb75SHu Haowen +---------+ 89*f949cb75SHu Haowen 90*f949cb75SHu HaowenACPI相關的定義 91*f949cb75SHu Haowen============== 92*f949cb75SHu Haowen 93*f949cb75SHu HaowenCPUINTC:: 94*f949cb75SHu Haowen 95*f949cb75SHu Haowen ACPI_MADT_TYPE_CORE_PIC; 96*f949cb75SHu Haowen struct acpi_madt_core_pic; 97*f949cb75SHu Haowen enum acpi_madt_core_pic_version; 98*f949cb75SHu Haowen 99*f949cb75SHu HaowenLIOINTC:: 100*f949cb75SHu Haowen 101*f949cb75SHu Haowen ACPI_MADT_TYPE_LIO_PIC; 102*f949cb75SHu Haowen struct acpi_madt_lio_pic; 103*f949cb75SHu Haowen enum acpi_madt_lio_pic_version; 104*f949cb75SHu Haowen 105*f949cb75SHu HaowenEIOINTC:: 106*f949cb75SHu Haowen 107*f949cb75SHu Haowen ACPI_MADT_TYPE_EIO_PIC; 108*f949cb75SHu Haowen struct acpi_madt_eio_pic; 109*f949cb75SHu Haowen enum acpi_madt_eio_pic_version; 110*f949cb75SHu Haowen 111*f949cb75SHu HaowenHTVECINTC:: 112*f949cb75SHu Haowen 113*f949cb75SHu Haowen ACPI_MADT_TYPE_HT_PIC; 114*f949cb75SHu Haowen struct acpi_madt_ht_pic; 115*f949cb75SHu Haowen enum acpi_madt_ht_pic_version; 116*f949cb75SHu Haowen 117*f949cb75SHu HaowenPCH-PIC:: 118*f949cb75SHu Haowen 119*f949cb75SHu Haowen ACPI_MADT_TYPE_BIO_PIC; 120*f949cb75SHu Haowen struct acpi_madt_bio_pic; 121*f949cb75SHu Haowen enum acpi_madt_bio_pic_version; 122*f949cb75SHu Haowen 123*f949cb75SHu HaowenPCH-MSI:: 124*f949cb75SHu Haowen 125*f949cb75SHu Haowen ACPI_MADT_TYPE_MSI_PIC; 126*f949cb75SHu Haowen struct acpi_madt_msi_pic; 127*f949cb75SHu Haowen enum acpi_madt_msi_pic_version; 128*f949cb75SHu Haowen 129*f949cb75SHu HaowenPCH-LPC:: 130*f949cb75SHu Haowen 131*f949cb75SHu Haowen ACPI_MADT_TYPE_LPC_PIC; 132*f949cb75SHu Haowen struct acpi_madt_lpc_pic; 133*f949cb75SHu Haowen enum acpi_madt_lpc_pic_version; 134*f949cb75SHu Haowen 135*f949cb75SHu Haowen參考文獻 136*f949cb75SHu Haowen======== 137*f949cb75SHu Haowen 138*f949cb75SHu Haowen龍芯3A5000的文檔: 139*f949cb75SHu Haowen 140*f949cb75SHu Haowen https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-3A5000-usermanual-1.02-CN.pdf (中文版) 141*f949cb75SHu Haowen 142*f949cb75SHu Haowen https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-3A5000-usermanual-1.02-EN.pdf (英文版) 143*f949cb75SHu Haowen 144*f949cb75SHu Haowen龍芯LS7A芯片組的文檔: 145*f949cb75SHu Haowen 146*f949cb75SHu Haowen https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-7A1000-usermanual-2.00-CN.pdf (中文版) 147*f949cb75SHu Haowen 148*f949cb75SHu Haowen https://github.com/loongson/LoongArch-Documentation/releases/latest/download/Loongson-7A1000-usermanual-2.00-EN.pdf (英文版) 149*f949cb75SHu Haowen 150*f949cb75SHu Haowen.. note:: 151*f949cb75SHu Haowen - CPUINTC:即《龍芯架構參考手冊卷一》第7.4節所描述的CSR.ECFG/CSR.ESTAT寄存器及其 152*f949cb75SHu Haowen 中斷控制邏輯; 153*f949cb75SHu Haowen - LIOINTC:即《龍芯3A5000處理器使用手冊》第11.1節所描述的“傳統I/O中斷”; 154*f949cb75SHu Haowen - EIOINTC:即《龍芯3A5000處理器使用手冊》第11.2節所描述的“擴展I/O中斷”; 155*f949cb75SHu Haowen - HTVECINTC:即《龍芯3A5000處理器使用手冊》第14.3節所描述的“HyperTransport中斷”; 156*f949cb75SHu Haowen - PCH-PIC/PCH-MSI:即《龍芯7A1000橋片用戶手冊》第5章所描述的“中斷控制器”; 157*f949cb75SHu Haowen - PCH-LPC:即《龍芯7A1000橋片用戶手冊》第24.3節所描述的“LPC中斷”。 158*f949cb75SHu Haowen 159