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

smw*_*dia 1 x86 interrupt interrupt-handling

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

在此处输入图片说明

我将FADT表转储到了Intel x86平台上,并看到SCI中断与该数字相关联9

在此处输入图片说明

但是根据《英特尔手册》,0-31保留了IA体系结构定义的中断的向量。具体来说,9定义为:

在此处输入图片说明

因此,根据说明,9I386处理器之后不会生成。因此,我想这就是SCI 可以挽救 9的原因。这可以看作是ACPI规范的x86特定实现

我说得对吗?

加1

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

Mar*_*oom 5

在整个ACPI规范中,使用中断机制的每个通知事件都与全局系统中断(GSI)相关联。
GSIS是简单地在节中描述5.2.13全球系统中断的6.1 ACPI规范以前链接1

可以将全局系统中断视为ACPI即插即用IRQ号。
它们用于虚拟化表和执行中断资源分配的ASL方法中的中断。

规范使用术语系统向量来表示GSI的编号。
例如,GSI编号9的系统向量编号为9。
这很容易混淆,因为术语“向量”可能会误用为Intel手册中“中断向量”中的术语“向量”。

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

  1. 8259A PIC [数据表] [OSDev wiki]
    总是有两个PIC,它们位于标准IO地址,每个PIC具有八个输入引脚(IR 0-7)。
    一个PIC是主机,处理IRQ 0-7。
    另一个是从站,处理IRQ 8-15,其输出发送到主站2的 IR2 。

  2. IO APIC [数据表] [OSDev Wiki]
    不要将IO APIC与LAPIC混淆。
     
    可以有一个或多个IO APIC,所有内存映射到可变(但通常是固定的)地址,每个地址都有可变数量的输入引脚INTINx。
    通常,将IO APIC之一连接并配置为模拟PIC,将INTIN0-15映射到IRQ0-15,但这不是必需的。

  3. 消息通知中断[ OSDev论坛主题 ]
    这不是中断控制器(因此它不会累加计数),但是值得一提。
    PIC是第一代控制器,IO APIC是第二代控制器,MSI是第三代。
    它们实现为对特定内存地址的写操作,因此不需要控制器。
    在x86系统上,将PCI(e)设备配置为对LAPIC专用区域3进行写操作。

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

IRQ 0-7  -> INT 08h - 0fh  
IRQ 8-15 -> INT 70h - 77h  
Run Code Online (Sandbox Code Playgroud)

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

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

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

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


考虑到所有这些,我们最终可以理解该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
Run Code Online (Sandbox Code Playgroud)

1撰写本文时为最新。
2,其被配置为它时,8259A是设计时考虑到链接。
3在所有LAPIC之间共享,但可以重新映射,特别是对于非SMP系统,以避免跨越QPI链接。
4众所周知,在APIC模式下GSI 9可以由不处理ISA IRQ的IO APIC来处理。