X86 SCI-系统控制中断向量是如何定义的?
根据ACPI规范,FADT(固定ACPI描述表)表包含一个向操作系统报告SCI中断编号的字段。该字段定义如下: 我在Intel x86平台上转储了FADT表,并看到SCI中断与编号X86 SCI-系统控制中断向量是如何定义的?,x86,interrupt,interrupt-handling,X86,Interrupt,Interrupt Handling,根据ACPI规范,FADT(固定ACPI描述表)表包含一个向操作系统报告SCI中断编号的字段。该字段定义如下: 我在Intel x86平台上转储了FADT表,并看到SCI中断与编号9: 但根据英特尔手册,0-31是IA架构定义中断的保留向量。具体而言,9定义为: 因此,根据注释,9不是在I386处理器之后生成的。所以我想这就是为什么9可以被SCI回收的原因。这可以看作是ACPI规范的特定于x86的实现 我说的对吗 加1 我好像误解了什么。将在以后更新。在整个过程中,使用中断机制的每个通知事
9
:
但根据英特尔手册,0-31
是IA架构定义中断的保留向量。具体而言,9
定义为:
因此,根据注释,9
不是在I386处理器之后生成的。所以我想这就是为什么9可以被SCI回收的原因。这可以看作是ACPI规范的特定于x86的实现
我说的对吗
加1
我好像误解了什么。将在以后更新。在整个过程中,使用中断机制的每个通知事件都会与关联。GSI在先前链接的6.1 ACPI规范1的第5.2.13节“全局系统中断”中进行了简要描述 全局系统中断可视为ACPI即插即用IRQ编号。
他们习惯于 在执行中断资源分配的表和ASL方法中虚拟化中断 规范使用术语系统向量表示GSI的编号。
例如,GSI编号9具有系统向量编号9。
这是公认的混淆,因为术语“向量”可能会被误认为英特尔手册中“中断向量”中的术语“向量” 要了解GSIs,必须至少了解IRQ。
x86系统上的两个标准中断控制器是
在标准IO地址上总是有两个PIC,每个PIC有八个输入引脚(IR 0-7)。
一个PIC是主PIC,处理IRQ 0-7。
另一个是从机,处理IRQ 8-15,其输出到主机2的IR2
不要将IO APIC与LAPIC混淆。
可以有一个或多个IO APIC,所有内存都映射到可变(但通常固定)地址,每个IO APIC都具有可变数量的INTINx输入引脚。
通常,其中一个IO APIC连接并配置为模拟PIC,INTIN0-15映射到IRQ0-15,但这不是要求
这不是一个中断控制器(因此不计入计数),但值得一提。
PIC是第一代控制器,IO APIC是第二代控制器,MSI是第三代控制器。
它们以写入特定内存地址的方式实现,因此不需要控制器。
在x86系统上,PCI(e)设备配置为写入LAPIC专用区域3
PIC的标准配置为
IRQ 0-7 -> INT 08h - 0fh
IRQ 8-15 -> INT 70h - 77h
请注意,IBM将第一个IRQ映射到基08h是一个错误(Intel将前32个中断向量标记为保留)
一旦知道了IRQ号,就很容易得到INT号,操作系统通常可以很容易地为此目的制作一个表,因为中断控制器如何连接到CPU是众所周知的(或者可以通过ACPI表知道)
将IRQ与设备关联(称为中断路由的过程)非常复杂,因为它需要了解设备如何连接,ACPI规范使用GSI来简化这一方面
最后,GSI(或ACPI中的系统向量)必须映射到IRQ,这在PIC模式下以一对一的方式完成,或者通过为每个IO APIC分配一个GSI基(系统向量基),从而将所有GSI从基分配到引脚数减一
记住所有这些,我们最终可以理解
SCI_INT
字段的描述:
SCI中断以8259模式连接到的系统向量。在…上
不包含8259的系统,此字段包含
SCI中断的全局系统中断号
在我看来,文本不精确,全局系统中断号只是系统向量的另一个名称,因此整个文本简化为“SCI中断的系统向量”
SCI是一个系统向量数,它具有GSI的性质,因此您找到的数字9是IRQ 94。
默认情况下,IRQ 9是INT 71h,但任何使用ACPI的操作系统都肯定已将IRQ重新映射到不同的基,并且肯定避免了与处理器异常的任何冲突
长话短说,数字9不是一个中断向量,而是一个系统向量(由ACPI定义)
GSI-IRQ-INT
系统向量中断向量
1最迟在撰写本文时。
8259A的设计考虑了链式连接。
3在所有LAPIC之间共享,但可以重新映射,特别是对于非SMP系统,以避免交叉QPI链路。
4正如我们所知,在APIC模式下,GSI 9可由不处理ISA IRQ的IO APIC处理 9是IRQ编号。8259A或APIC链将从特定的矢量号开始重新映射IRQ。在实模式下,默认值将IRQ0-7映射到INT 8-15,并将IRQ8-15映射到INT 70h-77h。进入保护模式后,操作系统在前32个中断向量后重新映射IRQ,以便它们不会与异常重叠。我感觉这只是从每个PIC的
局部编号空间
到全局编号空间
的一种映射。这样的映射可以更容易地分辨来自每个PIC.yarchive.net/comp/linux/tla.html的每个中断输入。Linus也不喜欢这个术语。我猜全局系统中断与全局系统中断来自同一个名称
GSI <----> IRQ <----> INT
System vector Interrupt vector