cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

irq-chip-model.rst (5576B)


      1.. SPDX-License-Identifier: GPL-2.0
      2
      3.. include:: ../disclaimer-zh_CN.rst
      4
      5:Original: Documentation/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
     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中断”。