检查主板/BIOS/UFI和CPU是否支持VT-D/IOMMU



我发现我可以使用以下代码确定VT-D/IOMMU是否启用:

if compgen -G "/sys/kernel/iommu_groups/*/devices/*" > /dev/null; then
echo "AMD's IOMMU / Intel's VT-D is enabled in the BIOS/UEFI."
else
echo "AMD's IOMMU / Intel's VT-D is not enabled in the BIOS/UEFI"
fi

但在没有启用的情况下,我无法找到一种方法来检查系统是否首先支持该选项。

我知道Intel/AMD已经记录了他们的哪些CPU支持VT-D/IOMMU,但我想知道整个系统(主板+UEFI/BIOS+CPU+芯片组(是否会支持这一功能,因为例如,我的笔记本电脑有一个支持它的CPU,但UEFI中没有启用它的选项。

检测对英特尔VT-d支持的唯一方法是通过ACPI表"DMAR"的存在。如果在BIOS中禁用VT-d,则该表将不存在,并且无法确定该功能是否可用。

对于AMD系统,ACPI表被称为"IVRS"。

在Linux上,可以使用acpidump命令查看这些表中是否存在一个。

acpidump | egrep "DMAR|IVRS"

相关内容

  • 没有找到相关文章

最新更新