星期二, 3月 31, 2009

[FreeBSD] interrupt storm detected on "irq9:"; throttling interrupt source

今天把一台PentiumIII 的 Server 拿來重裝 FreeBSD 7.1,結果裝好了之後卻在畫面一直出現下列的錯誤訊息:

interrupt storm detected on "irq9:"; throttling interrupt source
本來以為是 BIOS 中 irq 的設定問題,結果進 BIOS 改了設定,無效,照常出現錯誤訊息。
又重新 compile 一次 kernel ,將不必要的驅動全註解掉,重開,還是無效~~~~
不得已,又求助google 大神,結果在 http://www.uplinux.com/download/doc/bsd/Handbook/acpi-debug.html 裡發現

11.16. 使用和調試 FreeBSD ACPI

撰寫人:Nate Lawson. 協力:Peter Schultz 和 Tom Rhodes.

ACPI 是在本質上是一種發現設備、管理電源使用, 提供過去由 BIOS 管理的訪問不同硬件的標準化方法。 讓 ACPI 在各種系統上都能正確使用的工作一直在進行, 但許多主板的 ACPI 機器語言 (AML) 字節代碼中的 bug, FreeBSD 的內核中資系統設計的不完善, 以及 Intel ACPI-CA 解釋器中的 bug 仍然市場會出現。

11.16.3.2. System Hangs (temporary or permanent)

Most system hangs are a result of lost interrupts or an interrupt storm. Chipsets have a lot of problems based on how the BIOS configures interrupts before boot, correctness of the APIC (MADT) table, and routing of the System Control Interrupt (SCI).

Interrupt storms can be distinguished from lost interrupts by checking the output of vmstat -i and looking at the line that has acpi0. If the counter is increasing at more than a couple per second, you have an interrupt storm. If the system appears hung, try breaking to DDB (CTRL+ALT+ESC on console) and type show interrupts.

Your best hope when dealing with interrupt problems is to try disabling APIC support with hint.apic.0.disabled="1" in loader.conf.

把 /boot/loader.conf 叫出來,然後加上 「hint.apic.0.disabled="1"」然後重開機,嘿!又是美好的一天了~~~~