Linux acpi off學習的必要
ACPI的內容龐雜,學習ACPI至少可以幫助我們理解配置信息。這些信息從legacy PNP設備的配置,到多處理器,到NUMA,比如現(xiàn)在的Multiple Core的信息就只能從ACPI得到。Linux啟動很多代碼就是處理這些配置信息,比如Linux acpi off,IOAPIC設置等。
ACPI相關設備。主要是筆記本電腦相關的設備,包括電源按鈕,電池,外接電源,風扇,熱鍵等。
底層硬件。比如PCI中斷路由,chipset(主要是南橋PCI-to-LPC bridge)操作等。
電源管理。ACPI定義的電源管理包括CPU的電源管理(調頻率P-state,idle C-state,throtting T-state),設備電源管理(D-state),系統(tǒng)電源管理(Suspend-to-Ram, Suspend-to-Disk, power off)等。
設備熱插拔。ACPI用一種統(tǒng)一的方式來描述設備的熱插拔,這樣的設備從單一的PCI設備,到筆記本電腦的Docking Station,到整個PCI hierarchy,CPU,Memory,甚至整個NUMA節(jié)點。
可以說要理解現(xiàn)代PC平臺必須了解ACPI。
Linux acpi off解決ACPI問題的小竅門
首先可以看看是否這是一個regression,如果以前版本的Linux kernel可以工作,但新的不行,則是一個regression,可以測試不同的kernel從而找出哪個版本引入了bug。使用git-bisect是一個好的選擇,它可以幫你定位到哪個patch導致了regression。一些git-bisect相關的資料如下:
http://www.stardust.webpages.pl/files/handbook/handbook-en.pdf
http://www.kernel.org/pub/software/scm/git/docs/tutorial.html
http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html
Linux acpi off系統(tǒng)不能啟動
試試kernel參數(shù)”acpi=off”,如果此參數(shù)沒有帶來任何改變,那么這不是一個ACPI bug。反之,則這很可能是一個ACPI bug。 確定了是一個ACPI bug后,我們還有其他一些參數(shù)來更進一步的區(qū)分到底是ACPI哪個部分的bug。
acpi=ht
這個參數(shù)和"acpi=off"幾乎一樣,它禁止了除多處理器配置相關的內容以外的所有ACPI功能。如果acpi=off正常,但acpi=ht 不正常, 則解析ACPI 表或者Linux SMP的代碼有bug.
pci=noacpi
禁止使用ACPI來處理任何PCI相關的內容,包括PCI root bus的枚舉和PCI設備中斷路由。
acpi=noirq
禁止使用ACPI來處理PCI設備中斷路由,和pci=noacpi的區(qū)別是它允許使用ACPI來枚舉PCI root bus.
pnpacpi=off
禁止使用ACPI來枚舉PNP設備,比如串口、PS2鍵盤鼠標等。
noapic
禁止使用io-apic來做設備中斷路由,這樣做的效果之一是ACPI返回的中斷路由表將是針對PIC(8259)的。
nolapic
禁止使用Local-APIC和IO-APIC。
Linux acpi off設備中斷相關的問題
出現(xiàn)中斷問題的可能性很多,比如驅動程序有bug。由ACPI導致的最常見的中斷問題是kernel打出:”irqXX: nobody cared!”。這意味著kernel收到一個中斷,但是沒有驅動程序來處理此中斷。Kernel會將此中斷禁止,從而導致掛在此中斷上的所有設備都停止工作。pci=noacpi, acpi=noirq, pnpacpi=off, noapic, nolapic這些參數(shù)可以幫助隔離一些問題。另外一個有用的參數(shù)是”irqpoll”,出現(xiàn)上面的中斷問題時,它可以使kernel自動探測哪個設備發(fā)出了中斷。這個參數(shù)對于調試那些中斷路由有問題的系統(tǒng)很有用。
【編輯推薦】
- Linux 查看磁盤空間實現(xiàn)代碼介紹
- Linux操作系統(tǒng)需要微軟的十大幫助
- 探尋Linux到底需要多低的配置
- Linux測試工具tcpdump監(jiān)視TCP/IP連接命令介紹
- Linux流量控制實例應用介紹