最近遇到一些有關SCI的問題,也順便釐清SMI & SCI的一些觀念,故再此做一個筆記.
SMM is entered via the SMI (system management interrupt).
SMI - System Managment interrupt
SCI - System Control interrupt
1.SMI 觸發會使CPU進入SMM mode,而BIOS會把SMI handle放在SMM位置(SMRAM),
進入SMM mode之後會去確認是要執行那一段handle程式,當全部都處理完了會有一個指令
"RSM"叫CPU離開SMM mode或是使用reset離開.
SMI-->SMM mode-->BIOS SMI handle-->RSM or reset
2.SCI 觸發是讓OS去處理interrupt,所以SCI觸發後CPU會去找IDT(附註1),通常是指向驅動程式
(ACPI.SYS)(附註2),然後ACPI.SYS再去挖出相關ASL去執行.
SCI-->OS Acpi driver-->ASL-->?(看是需要做那些事)
當初懷疑SCI的由來所以有去確認一些細節,在ICH Spec會有一個register(ACPI Control register)
會去選擇map那一個IRQ!!如果沒有APIC 就是IRQ 9,10,11選擇(參考ICH9),如果有APIC就從
IRQ 20,21去選擇.
至於什麼時間發SMI或SCI要看是否進入ACPI模式(OS)!!只要進入ACPI就是發SCI,在DOS(APM)就是發
SMI,但是在OS底下也是可以發SMI讓CPU進入SMM mode執行SMI handle......(未完待續)
(2010.05.06)補充
要在ACPI底下發SMI有下列二種方式:
1. 使用南橋(SB) B2H
B2H是SB預設的一個Port可以用來觸發SMI.
2. 使用IO Trap
IO Trap是在ACPI必須要存取的Port設定到這個暫存器,只要被指定的Port有被存取的動作就會去
觸發SMI,就類似做一個陷阱讓CPU去處發SMI.
至於觸發SMI後要做些什麼事,就在寫SMI Handle去處理囉!!
http://tw.myblog.yahoo.com/jw!0riGYLKeGRjo1.6L_8j.6k6g0g--/article?mid=21&sc=1#30

留言功能已依作者設定調整顯示方式