mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
virt-host-validate: Detect SMMU support on ARMs
In vir-host-validate we do two checks related to IOMMU: 1) hardware support, and 2) kernel support. While users are usually interested in the latter, the former also makes sense. And for the former (hardware support) we have this huge if-else block for nearly every architecture, except ARM. Now, IOMMU is called SMMU in ARM world, and while there's certainly a definitive way of detecting SMMU support (e.g. via dumping some registers in asm), we can work around this - just like we do for Intel and AMD - and check for an ACPI table presence. In ARM world, there's I/O Remapping Table (IORT) which describes SMMU capabilities on given host and is exposed in sysfs (regardless of arm_smmu module). Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2178885 Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
1f76b5365e
commit
2c13a2a7c9
@ -388,6 +388,15 @@ int virHostValidateIOMMU(const char *hvname,
|
||||
return VIR_HOST_VALIDATE_FAILURE(VIR_HOST_VALIDATE_NOTE);
|
||||
}
|
||||
virHostMsgPass();
|
||||
} else if (ARCH_IS_ARM(arch)) {
|
||||
if (access("/sys/firmware/acpi/tables/IORT", F_OK) == 0) {
|
||||
virHostMsgPass();
|
||||
} else {
|
||||
virHostMsgFail(level,
|
||||
"No ACPI IORT table found, IOMMU not "
|
||||
"supported by this hardware platform");
|
||||
return VIR_HOST_VALIDATE_FAILURE(level);
|
||||
}
|
||||
} else {
|
||||
virHostMsgFail(level,
|
||||
"Unknown if this platform has IOMMU support");
|
||||
|
Loading…
Reference in New Issue
Block a user