Central-Processing-Unit

什麼是 hlt_bug?

  • October 25, 2012

我看到核心檢查 CPU 時不時提到它。我想這是與 HLT 指令相關的 CPU 的某種硬體錯誤,但我找不到任何有關此的資訊。那麼 hlt_bug 實際上是什麼?

我不確定確切的細節,因為這是很久以前的問題,可能早在基於 386 的機器很常見的時候。

HLT 指令只能在 CPU 不處於“真實”模式時在“環 0”中呼叫,因此它只能由現代作業系統中的核心呼叫。它指示處理器暫停,直到收到下一個中斷。現代 CPU 在這一點上將進入低功耗狀態,儘管它顯然不像多核 CPU 那樣簡單。

如果我沒記錯的話,錯誤是某些 386 CPU 在某些情況下不會響應某些中斷而喚醒。通過設置一個已知受影響的 CPU 響應和不響應的計時器來檢查是否存在此錯誤 - 如果 CPU 第一次喚醒是響應第一個更長的周期,則為您設置計時器知道錯誤存在,因為它應該已經預先喚醒並服務於另一個更短的時間,定時器的中斷。由於 HLT 指令通常不會在核心之外呼叫,因此您無需擔心它 - 我假設“hlt bug found”標誌的唯一影響是停止呼叫 HLT 的電源管理程式碼到有錯誤的空閑處理器所以可能不會醒來。

快速搜尋後,我在網上找到的唯一參考(除了核心引導輸出的副本、錯誤。* 源文件和這個問題(哇,這些網站上的問題很快就進入了Google的數據庫!))是現在討論是否需要將其檢查保留在核心中,因為它不太可能影響人們今天使用或將來要使用的任何硬體配置。

編輯: 這個 HOWTO列出了一些 486DX-100 晶片中的 HLT 問題(搜尋頁面以no-hlt獲取參考)。這可能是我記得的問題(而不是某些 386 晶片的問題)或者可能是巧合,並且有兩個關於該指令的從低功耗狀態喚醒的錯誤。

引用自:https://serverfault.com/questions/275166