为什么我的系统日志告诉我我的BIOS坏了?

我在我的syslog文件中找到了这个,我该怎么做才能修复它? 还是值得修理?

一切似乎都正常。 运行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 OEM 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: [] dump_stack+0x46/0x58 [] warn_slowpath_common+0x8c/0xc0 [] warn_slowpath_fmt_taint+0x3f/0x50 [] ? acpi_os_map_memory+0x27/0x150 [] warn_invalid_dmar+0x8f/0xa0 [] check_zero_address+0x57/0xf7 [] detect_intel_iommu+0x17/0xb8 [] pci_iommu_alloc+0x44/0x6e [] mem_init+0x11/0xa2 [] start_kernel+0x1de/0x41e [] ? do_early_param+0x87/0x87 [] ? early_idt_handlers+0x120/0x120 [] x86_64_start_reservations+0x2a/0x2c [] x86_64_start_kernel+0x108/0x117 ---[ end trace 11d0aeb7d970f0a3 ]--- 

我找到的最佳来源是从Redhat解释这个 。 它不是特定于Ubuntu,而是与内核(我们共享)相关,而您的硬件向内核提供错误的信息。

在从链接复制的文本中交换Redhat for Ubuntu并记住3个要点(也许你可以使用它来规避这个):


系统无法启动,USB无法正常工作,网络适配器无法工作(或可能是其他症状),因为IOMMU处理失败导致BIOS处理不完善

  • Bugzilla: #524808和Bugzilla: #533952

一些制造商提供带有BIOS的系统,其处理IOMMU硬件不正确。 BIOS应该告诉操作系统在内存中找到IOMMU硬件,但是有些BIOS没有正确执行,提供垃圾位置或有效但实际上不在设备所在位置的位置。 内核尝试处理这些情况,但有些仍未在Fedora 12发布内核中完全处理。 如果您的系统受此问题的影响,最常见的症状是USB子系统将无法工作(没有USB外围设备可以工作),但其他症状包括完全无法启动的系统和非function性网络适配器。

目前已知某些系统可能受此问题的影响。 对于除HP xw4600工作站和Dell Precision M6400之外的所有其他设备,在遇到错误之前,必须满足以下所有条件:

  • 您必须使用32位版本的Fedora 12
  • 你必须没有4GB地址区以外的内存(实际上,这意味着你必须拥有大约2.5GB或更少的物理RAM)
  • 必须在BIOS中禁用虚拟化function(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中启用虚拟化function也应该可以解决这个问题。 最后,您可以通过在引导配置中附加内核参数iommu = soft来解决此问题。

已发布更新的内核包以解决此问题。 如果您尚未拥有此更新,请照常更新系统以接收此更新。 显然,如果您受到此问题的影响,则需要使用上述解决方法之一来首先将系统置于可以安装固定内核的状态。