Chinaunix首页 | 论坛 | 博客
  • 博客访问: 451075
  • 博文数量: 90
  • 博客积分: 2158
  • 博客等级: 大尉
  • 技术积分: 1425
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-12 17:02
个人简介

怎么了选择

文章分类
文章存档

2023年(1)

2019年(1)

2018年(5)

2017年(5)

2015年(1)

2014年(1)

2013年(1)

2012年(74)

分类: Windows平台

2018-11-08 11:37:22

SCI与SMI的区别与联系

SMI: System Management Interrupt,系统管理中断,进入SMM的方法,包含(但不限于)电源管理功能,对OS透明的;
SMI pin触发后,CPU进入SMM Mode,转去执行BIOS中的SMI Handler。
SMI pin--> CPU SMM Mode --> BIOS routine

SCI: System Control Interrupt,系统控制中断,是ACPI定义的,专用于ACPI电源管理的一个IRQ,需要OS支持的。
SCI pin触发后,CPU去执行某个放在中断描述表(IDT)中的程式,一般都是指向某个驱动程式(ACPI.sys),ACPI driver会通知相关的驱动程式(ACPI EC Driver),然后跟EC BIOS取得一个代码,而这个代码就是ASL code中的Qxx Number,接着OS会去执行相应的ASL Code,一般都是Method(Qxx)。
 SCI pin --> OS Acpi Driver --> ASL Code (Q event) --> ? (看BIOS Spec需求)

联系:都可以用于电源管理功能
区别:SMI是CPU级别的,ACPI和非ACPI模式下都可以用;SCI是OS级别的,只有在ACPI模式才可以用。
SCI只能在ACPI的OS下发出来,如果在DOS下能触发的中断,那肯定不是SCI,那可能是SMI。SMI同样可以在OS下发出来。在进入ACPI的OS后,Bios把CPU的控制权交给OS,SMI还是可以发出来的。SMI大部分由硬件来issue,也可以发soft SMI,一般是在port 0B2h下command,然后在SMI Handle中加入对cmd的动作即可。

SCI_INT
FADT的Offset46为SCI_INT field。
它记录了在PIC Mode下,SCI连接到8259的哪个pin(通常都是IRQ9);在APIC Mode下,它记录了SCI interrupt的Global System interrupt number。
如果在PIC Mode下SCI连接到IRQ9,而在APIC Mode下IRQ9连接到INTIN11,则在FADT中SCI_INT为9, MADT中interrupt resource override entry mapping 将IRQ9 mapping到INTIN11。
如何把SCI_INT从IRQ9改成IRQ11?
三个地方要改:
1. SCI IRQ Select(D31:F0:R44h bit[2:0])由000h(IRQ9)改成010h(IRQ11)
2. FADT中SCI_INT 由9改成11
3. MADT中interrupt resource override entry, Source 0x09; GSI:由0x09改成0x0B
--------------------- 
阅读(6865) | 评论(0) | 转发(0) |
0

上一篇:ACPI Table基本知识

下一篇:没有了

给主人留下些什么吧!~~