“卡尔加里:无法在 EBDA 中找到 Rio Grande 表”

“卡尔加里:无法在 EBDA 中找到 Rio Grande 表”

当我启动系统时,我收到以下消息:

[Sat Oct 26 20:34:25 2019] Calgary: detecting Calgary via BIOS EBDA area
[Sat Oct 26 20:34:25 2019] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
  • 什么是“卡尔加里”?
  • 什么是“格兰德河桌”?
  • 为什么它需要位于 EBDA 中,既然如此,为什么我的内核无法这样做?
  • 这次失败的后果是什么?

我在 MSI Z170 PRO GAMING 主板上的 i5-7600K CPU 上运行 Devuan 3 (Beowulf)。

答案1

看起来卡尔加里是一个家庭IOMMUs,用于大多数 IBM X 系列(即 X86_64)刀片和主板 - 截至 2008 年(看这里)。这里奥格兰德表过去/现在是扩展 BIOS 数据区域中的一个信息表,它告诉操作系统在哪里可以找到卡尔加里 IOMMU(感谢 @telcoM)。

由于您,OP,没有使用这样的机器,您可能会考虑尝试在内核编译参数中禁用对它的搜索。正如 @jmullee 提醒我们的,以下是相关的 Linux 内核配置参数:

CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y

您可以将它们从 更改yn

答案2

如果您在重新编译时从内核配置中删除该选项,则在启动时搜索要连接的 USB 设备和内存映射将被禁用。

因此,如果您在启动时使用某些 IBM 主板(例如我的 T500 笔记本电脑上的主板)连接到其他设备(USB 驱动器、带有内存网络堆栈的屏幕等),内核将不会映射它,您必须手动执行此操作。

仅当您将某些恶意硬件放在 USB 上或通过 USB 连接到其上的恶意网络时,才可能出现安全问题。否则,将内核配置保留为当前默认值是无害的。

IBM Rio Grande 和等效的 Windows 内核配置功能很可能已被基于 Windows、Linux 内核的发行版的不良行为者使用。谁知道?

答案3

使用:

  1. HP Z640 工作站,采用 Intel Corporation C610/X99 系列芯片组
  2. 双重的英特尔(R) 至强(R) CPU E5-2620 v3处理器
  3. 使用4.15.0-200-generic内核运行 Ubuntu 18.04.6 LTS。内核配置有:
    $ grep CALGARY /boot/config-`uname -r`
    CONFIG_CALGARY_IOMMU=y
    CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
    

dmesg注意到输出中出现以下内容:

Dec 28 07:42:04 Haswell-Ubuntu kernel: [    0.000000] Calgary: detecting Calgary via BIOS EBDA area
Dec 28 07:42:04 Haswell-Ubuntu kernel: [    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!

这些消息是由PCI-calgary_64.c内核中的源文件。从detect_calgary函数结构来看卡尔加里:通过 BIOS EBDA 区域检测卡尔加里卡尔加里:无法在 EBDA 中找到 Rio Grande 表 - 逃亡!消息被报告该代码扫描了卡尔加里 IOMMU 设备的 PCI 总线,其供应商 ID 为PCI_VENDOR_ID_IBM

因此,我们相信这些消息是虚假的,并且会出现在没有 BIOS 报告卡尔加里 IOMMU 的 BIOS EBDA 区域的 PC 中。从源文件中的注释来看,认为 Calgary IOMMU 仅用于基于 IBM x3950 的系统。

detect_calgary如果函数首先扫描 PCI 总线中的 Calgary IOMMU,然后才检查 BIOS EBDA 区域,也许就不会那么混乱了。

顺便说一句,我只在 PC 中启用 Intel IOMMU 时才注意到与 Calgary IOMMU 相关的消息。成功启用 Intel IOMMU 后,dmesg 仍在报告有关卡尔加里 IOMMU 的消息,但根据上述分析,这些消息是虚假的,可以忽略。

答案4

这些是相关的内核源配置选项

CONFIG_CALGARY_IOMMU=y

CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y

相关内容