如何定义SCI - 系统控制中断向量?

时间:2017-07-20 05:49:29

标签: x86 interrupt interrupt-handling

根据ACPI规范, FADT (固定ACPI描述表)表包含一个向OS报告 SCI中断编号的字段。该字段定义如下:

enter image description here

我将FADT表转储到Intel x86平台上,并看到SCI中断与号码9相关联:

enter image description here

但根据英特尔手册,0-31是IA架构定义的中断的保留向量。具体而言,9定义为:

enter image description here

因此,根据说明,在I386处理器之后不会生成9。所以我猜这就是为什么9可以 抢救 用于SCI。这可以被视为ACPI规范的 x86特定实现

我是对的吗?

ADD 1

似乎我在这里误解了一些东西。稍后会更新。

1 个答案:

答案 0 :(得分:5)

在整个ACPI specifications中,使用中断机制的每个通知事件都与Global System Interrupt (GSI)相关联。
GSI在前面 1 链接的6.1 ACPI规范的 5.2.13全局系统中断部分中进行了简要描述。

  

全局系统中断可以被视为ACPI即插即用IRQ号码    他们习惯了   虚拟化表和ASL方法中的中断,这些方法执行中断的资源分配。

规范使用术语系统向量来表示GSI的编号 例如,GSI编号9具有系统矢量编号9 这无疑令人困惑,因为术语“向量”可能被误认为是英特尔手册中使用的“中断向量”中的“向量”一词。

要了解GSI,必须具有最低限度的理解或IRQ x86系统上的两个标准中断控制器是

  1. 8259A PIC [datasheet] [OSDev wiki]
    标准IO地址总是有两个PIC,每个PIC有8个输入引脚(IR 0-7) 一个PIC是主站并处理IRQ 0-7 另一个是从机并处理IRQ 8-15,其输出转到主机 2 的IR2。

  2. IO APIC [datasheet] [OSDev wiki]
    不要将IO APIC与LAPIC混淆。

    可以有一个或多个IO APIC,所有内存都映射到可变(但通常是固定的)地址,每个地址都有可变数量的输入引脚INTINx。
    通常,IO APIC中的一个连线并配置为模拟PIC,INTIN0-15映射到IRQ0-15,但这不是必需的。

  3. 消息信号中断 [OSDev forum thread]
    这不是一个中断控制器(因此它不会在计数中加起来),但值得一提 PIC是第一代控制器,IO APIC是第二代,MSI是第三代 它们被实现为对特定存储器地址的写入,因此不需要控制器 在x86系统上,PCI(e)设备配置为写入LAPIC专用区 3

  4. 中断控制器与LAPIC一起配置为将IRQ编号映射到矢量编号 PIC的标准配置是

    IRQ 0-7  -> INT 08h - 0fh  
    IRQ 8-15 -> INT 70h - 77h  
    

    请注意,映射基准08h的第一个IRQ是IBM的错误(英特尔将前32个中断向量标记为保留)。

    一旦知道了IRQ编号就很容易获得INT编号,操作系统通常可以很容易地为此目的制作一个表,因为它是众所周知的(或者可以用ACPI表知道)中断控制器是如何连接的到CPU。

    将IRQ与设备关联(称为中断路由的过程)非常复杂,因为它需要了解设备的连接方式,ACPI规范使用GSI来简化这一方面。

    最后,GSI(或ACPI字,系统向量)必须映射到IRQ,这在PIC模式下或通过分配GSI基础以一对一的方式完成(系统向量库)到每个IO APIC - 从而将所有GSI从基数分配给引脚数减1。

    考虑到这一切,我们终于可以理解SCI_INT字段的描述:

      

    SCI中断在8259模式下连接的系统向量。上   系统不包含8259,此字段包含   全局系统中断SCI中断号。

    我认为文本不精确,全局系统中断号只是系统向量的另一个名称,因此整个文本缩减为“SCI中断的系统向量” ”。

    SCI,作为系统向量编号,它具有GSI的性质,因此您找到的数字9是IRQ 9 4 。 默认情况下,IRQ 9是INT 71h,但任何使用ACPI的操作系统肯定已将IRQ重新映射到不同的基础,并且确实避免了与处理器异常的任何冲突。

    长话短说,数字9不是中断向量,而是系统向量(由ACPI定义)。

         GSI        <---->   IRQ     <---->           INT
    System vector                                Interrupt vector
    

    1 写作时的最新消息 按照它配置的 2 ,8259A的设计考虑了链接 3 在所有LAPIC中共享,但可以重新映射,特别是对于非SMP系统,以避免跨越QPI链接。
    4 我们知道,并非严格意义上说,在APIC模式下,GSI 9可以由不处理ISA IRQ的IO APIC处理。