当我启动系统时,我收到以下消息:
[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
答案2
如果您在重新编译时从内核配置中删除该选项,则在启动时搜索要连接的 USB 设备和内存映射将被禁用。
因此,如果您在启动时使用某些 IBM 主板(例如我的 T500 笔记本电脑上的主板)连接到其他设备(USB 驱动器、带有内存网络堆栈的屏幕等),内核将不会映射它,您必须手动执行此操作。
仅当您将某些恶意硬件放在 USB 上或通过 USB 连接到其上的恶意网络时,才可能出现安全问题。否则,将内核配置保留为当前默认值是无害的。
IBM Rio Grande 和等效的 Windows 内核配置功能很可能已被基于 Windows、Linux 内核的发行版的不良行为者使用。谁知道?
答案3
使用:
- HP Z640 工作站,采用 Intel Corporation C610/X99 系列芯片组
- 双重的英特尔(R) 至强(R) CPU E5-2620 v3处理器
- 使用
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