SMI#、SCI#信号在OS、BIOS、EC中的中断方式(Linux)
EC资料有个很好的CSDN博客推荐去看看:zhao_longwei的专栏
EC固件代码架构:https://blog.csdn.net/zhao_longwei/article/details/51010544
PCI/PCIE MSI#中断:https://blog.csdn.net/pwl999/article/details/78208151
Linux内核推荐:https://blog.csdn.net/pwl999/article/details/78817899#comments
关于SMI、MSI、SCI、INTx各种中断小结:https://blog.csdn.net/huangkangying/article/details/11178425
http://www.aiuxian.com/article/p-1103653.html
推荐博客:我所知道的EC====>KBSMI&KBSCI:http://www.aiuxian.com/article/p-1090092.html
小弟是学硬件的,苦苦修行中,
SCI VS SMI
SCI:System Control Interrupt, 系统控制中断。专门用于ACPI电源管理的一个IRQ,需要OS支持。
SMI:System Management Interrupt, 系统管理中断,使用系统进入SMM的特殊中断。
两者区别:
SMI是CPU级别的,ACPI和非ACPI模式下都可以使用,而SCI是OS级别的,只有在ACPI support的OS中才能见到。比如说DOS下触发的中断肯定不是SCI,但有可能是SMI。
两者联系:
两者可以用于电源管理,但SMI不限于电源管理。
触发过程:
SMI: (硬件方式)
SMI Pinassert -> CPU SMM mode -> BIOS SMI handler
SMI:(软件方式)
WriteIO(B2h) -> CPU SMM mode->BIOS SMI handler
SCI:
SCI Pinassert->IDT->OS ACPI driver->ASL code(Q Evnent)->?
http://www.aiuxian.com/relative/p-1103656.html
http://bbs.javaee.cc/post/289740_1_1.html
https://www.cnblogs.com/jyaray/p/7127316.html
http://www.chinafix.com/thread-1035371-1-4.html
https://blog.csdn.net/huangkangying/article/details/7918179
| 中断信号。也可以走LPC。但是有些对时效性有要求的,就走SCI/SMI了。SMI极少用到。主要是SCI比较多。 system management interrupt 系统管理中断 在繁忙中 请求停下来 先处理某个请求 中断有优先权 某个级别比较高的中断 |
![]() 管理信息结构SMI(structure of management information) |
![]() SMI#:System Management Interrupt,系统管理中断 SCI:beyond compare,系统控制中断 大师说:SCI主要是在进入ACPI后,ACPI用的中断信号。SMI一般在ACPI状态之前使用的用来做后台中断的东西。在ACPI后 ,SMI就自动关闭,切换到SCI的方式。 总之,功能一切正常,就是不能正常关机的。刷了BIOS换了桥还不好,查查这些吧。 PME:PCI Express Native Power Management Events control 电源管理的中断。因为在休眠状态下,设备的其他中断是关闭的,只能通过这个通知系统来唤醒设备用的。设备休眠了,没有这个信号,系统就不知道什么时候要唤醒他。就一直睡下去了。可能会整个系统都停了。 |
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
SMI#、SCI#信号在OS、BIOS、EC中的中断方式(Linux)的更多相关文章
- 18 os/os.path模块中关于文件/目录常用的函数使用方法 (转)
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...
- os、os.path模块中关于文件、目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举 ...
- python编程os、os.path 模块中关于文件、目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名( ...
- python—— 文件的打开模式和文件对象方法 & os、os.path 模块中关于文件、目录常用的函数使用方法
引用自“鱼c工作室” 文件的打开模式和文件对象方法 : https://fishc.com.cn/forum.php?mod=viewthread&tid=45279&ext ...
- Mac OS X中,有三种方式来实现启动项的配置
Mac OS x 启动项设置 Mac OS X的启动原理: 1,mac固件激活,初始化硬件,加载BootX引导器. 2,BootX加载内核与内核扩展(kext). 3,内核启动launchd进程. 4 ...
- VxWorks中的中断应用设计要点
硬件中断处理是实时系统设计中的关键性问题,设计人员有必要对其作深入研究,以更好地满足开发工作需要.文中以VxWorks操作系统为软件平台,讨论了在实时系统中进行中断应用设计时要注意的一些问题.由于软硬 ...
- 如何在CentOS 5.x 中安装Windows Azure Linux Agent (WALA)
Qing Liu Tue, Mar 10 2015 3:06 AM 在今天的这一个章节中,我们主要讨论在CentOs 5.x 中如何安装Windows Azure Linux Agent 2.11 ...
- python中pygame模块的Linux下安装过程
一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...
- 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)
https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...
随机推荐
- java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()解决办法
代码改变世界 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.pre ...
- iOS学习笔记44-Swift(四)枚举和结构体
一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值.Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型, ...
- html body width height 100%使用
首先我们来看一个实际的问题,让body中的一个div占全屏,(问题来源:http://stackoverflow.com/questions/1575141/make-div-100-height-o ...
- 对于quartz的控制台不断打印
控制台不断打印 batch acquisition of 0 triggers 解决方式 : 在log4j.properties的配置文件中加 log4j.logger.org.quartz=IN ...
- [USACO Section 4.4]追查坏牛奶Pollutant Control (最小割)
题目链接 Solution 一眼看过去就是最小割,但是要求割边最少的最小的割. 所以要用骚操作... 建边的时候每条边权 \(w = w * (E+1) + 1;\) 那么这样建图跑出来的 \(max ...
- Caused by: java.io.FileNotFoundException: class path resource
异常: java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.c ...
- IOs动画的那些事儿
CoreAnimation介绍 1:Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Animatio ...
- Oracle学习记录1
1.current_date与sysdate区别 在oracle中current_date与sysdate都是显示当前系统时间, 其结果基本相同,但是有三点区别:a. current_date返回的是 ...
- Scrapy学习-15-降低被识别为爬虫的方法
3种常见的方法 1. 在settings中配置禁用cookies COOKIES_ENABLED = False 2. scrapy限速处理,scrapy为我们提供了扩展模块,它能动态的限制下载速度 ...
- AC日记——[Sdoi2013]森林 bzoj 3123
3123: [Sdoi2013]森林 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 3216 Solved: 944[Submit][Status] ...
