為什麼我的系統日誌告訴我我的 BIOS 損壞了?

為什麼我的系統日誌告訴我我的 BIOS 損壞了?

我在系統日誌檔案中發現了這個問題,我該如何修復它?或者它是否值得修復?

一切似乎都正常運作。運行 3.12.9-031209-generic。

WARNING: CPU: 0 PID: 0 at /home/apw/COD/linux/drivers/iommu/dmar.c:488 warn_invalid_dmar+0x8f/0xa0()
Your BIOS is broken; DMAR reported at address 0!
BIOS vendor: American Megatrends Inc.; Ver: F5; Product Version: To be filled by O.E.M.
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.9-031209-generic #201401251255
Hardware name: Gigabyte Technology Co., Ltd. Z87MX-D3H/Z87MX-D3H-CF, BIOS F5 08/02/2013
00000000000001e8 ffffffff81c01d98 ffffffff817433c6 00000000000017e0
ffffffff81c01de8 ffffffff81c01dd8 ffffffff810678ac ffffffff81c01e28
ffffffff81fd201c ffffffff81fd2058 ffffffff81dda2e0 ffff88022f5aad00
Call Trace:
[<ffffffff817433c6>] dump_stack+0x46/0x58
[<ffffffff810678ac>] warn_slowpath_common+0x8c/0xc0
[<ffffffff8106793f>] warn_slowpath_fmt_taint+0x3f/0x50
[<ffffffff8172dfbb>] ? acpi_os_map_memory+0x27/0x150
[<ffffffff816124af>] warn_invalid_dmar+0x8f/0xa0
[<ffffffff81d84944>] check_zero_address+0x57/0xf7
[<ffffffff81d849fb>] detect_intel_iommu+0x17/0xb8
[<ffffffff81d3a0db>] pci_iommu_alloc+0x44/0x6e
[<ffffffff81d49a5c>] mem_init+0x11/0xa2
[<ffffffff81d2fcfa>] start_kernel+0x1de/0x41e
[<ffffffff81d2f9ae>] ? do_early_param+0x87/0x87
[<ffffffff81d2f120>] ? early_idt_handlers+0x120/0x120
[<ffffffff81d2f5e8>] x86_64_start_reservations+0x2a/0x2c
[<ffffffff81d2f6f2>] x86_64_start_kernel+0x108/0x117
---[ end trace 11d0aeb7d970f0a3 ]---

答案1

我發現解釋這一點的最佳來源來自 Redhat。它不是 Ubuntu 特有的,而是與核心(我們都共享)以及向核心傳回錯誤訊息的硬體有關。

在從連結複製的文字中將 Redhat 替換為 Ubuntu,並注意 3 個要點(也許您可以使用它來規避此問題):


由於 BIOS 處理不完善以及 IOMMU 處理損壞,系統無法啟動、USB 無法運作、網路介面卡無法運作(或可能出現其他症狀)

一些製造商提供的系統的 BIOS 對 IOMMU 硬體的處理不正確。 BIOS 應該告訴作業系統在記憶體中的哪個位置找到 IOMMU 硬件,但有些 BIOS 沒有正確執行此操作,而是提供了垃圾位置或有效但不是設備實際所在位置的位置。核心嘗試處理這些情況,但有些情況在 Fedora 12 發行版核心中仍未完全處理。如果您的系統受此問題影響,最常見的症狀是 USB 子系統無法運作(USB 週邊裝置無法運作),但其他症狀還包括系統完全無法啟動以及網路介面卡無法運作。

目前已知某些系統可能受此問題影響。對於除 HP xw4600 工作站和 Dell Precision M6400 之外的所有工作站,在遇到錯誤之前必須滿足以下所有條件:

  • 您必須使用 32 位元版本的 Fedora 12
  • 您的記憶體不得超過 4GB 位址區域(實際上,這意味著您必須擁有大約 2.5GB 或更少的實體 RAM)
  • 必須在 BIOS 中停用虛擬化功能 (VT-d)

如果不是上述任一情況,則不應遇到此問題。如果您認為自己可能遇到此問題,請尋找包含類似以下內容的內核日誌訊息:

Your BIOS is broken; DMAR reported at address fed10000 returns all ones!

或者:

Your BIOS is broken; DMAR reported at address zero!

請注意,如果您使用的 BIOS 損壞的系統,核心訊息將始終出現,即使核心實際上正確處理了您的情況,或者您已成功解決了該問題。因此,不必擔心解決問題後您仍然會看到該訊息。

有多種方法可以解決此問題。在大多數情況下(見上文),安裝 64 位元版本的 Fedora 12 就足夠了。如果您的 BIOS 有此選項,則在 BIOS 中啟用虛擬化功能也可以解決此問題。最後,您可以透過將核心參數 iommu=soft 附加到引導配置來解決此問題。

已發布更新的核心包來解決此問題。如果您尚未安裝此更新,請照常更新您的系統以接收此更新。顯然,如果您受到該問題的影響,您將需要使用上述解決方法之一,首先使您的系統進入可以安裝固定核心的狀態。

相關內容