没有BIOS支持的IOMMU初始化

12

注意: 如果您的主板上有AMD A55芯片组并支持IOMMU,请发送给我您的/sys/firmware/acpi/tables/DMAR的副本(或其他描述IOMMU的名称)。您不会承担任何风险。谢谢!


大多数主板制造商不会费心发布启用IOMMU的BIOS(BIOS中没有选项)。

根据这份来自AMD的文档,我的理解是BIOS通过添加ACPI表来初始化IOMMU。

因此,如果能够从具有不同主板但支持IOMMU的相同芯片组的系统中获取ACPI表(acpidump/acpiextract),是否可以在加载iommu模块之前插入这些表以激活IOMMU?

如果iommu已经构建到内核中(而不是作为模块),是否有任何机制允许在内核引导的早期阶段即时更改ACPI表?否则,引导加载程序(grub/lilo)可以实现吗?

很可能需要更新这些“新”表中的一些地址。这些地址是否在现有的ACPI表中(以便进行比较)?

1个回答

7
很好的问题。我们有一种机制来加载额外的DSDT(请参阅Documentation/acpi/dsdt-overriding.txt),还可以重写某些方法(method-customizing.txt),但我不确定DMAR表格是否可以被覆盖。至少ACPI规范没有说可以这样使用。我认为您可以黑掉您的内核并尝试这样做,但它是否能够上游呢?
更新。哦,这个看起来很有前途:Documentation/acpi/initrd_table_override.txt

听起来很不错,我急于尝试一下。但是,我使用UEFITool、MMTools、efiperun和其他各种工具从AsRock BIOS ROM(支持IOMMU的ROM)中检索ACPI表的努力非常有限。因此,如果您在支持IOMMU的主板上拥有AMD A55芯片组,请将您的/sys/firmware/acpi/tables/DMAR副本发送给我(无论名称是什么,如果不确定,请问我),这对您没有任何风险。谢谢! - Eric
不,我没有这样的硬件。但是如果你能运行Linux,你可以像你描述的那样检索它们。 - 0andriy
1
Andy:这是一个针对任何可能提供帮助的读者的评论 :) - Eric
我不理解你的回答:当然我可以使用Linux来检索数据。请再次阅读问题,您会发现技术知识并不是问题所在。问题在于访问具有正确功能的某些硬件。 - Eric
@Eric,如果硬件支持某项功能且未被固件禁用,则操作系统可以利用它。VT-d在此文档中有描述:https://software.intel.com/sites/default/files/managed/c5/15/vt-directed-io-spec.pdf - 0andriy
第8章指出:系统BIOS负责检测平台上的重新映射硬件功能,并定位主机系统地址空间中的内存映射重新映射硬件寄存器。 BIOS通过下面描述的DMA Remapping Reporting(DMAR)ACPI表将平台上的重新映射硬件单元报告给系统软件。 - 0andriy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接