On 6/8/21 10:16 PM, Fabiano Fidêncio wrote:
virt-host-validate should print "Checking for device assignment
IOMMU
support" for all architectures, not only for Intel / AMD.
This is the output without the patch:
```
[fidencio@dentola libvirt]$ virt-host-validate
QEMU: comprobando if device /dev/kvm exists : PASA
QEMU: comprobando if device /dev/kvm is accessible : PASA
QEMU: comprobando if device /dev/vhost-net exists : PASA
QEMU: comprobando if device /dev/net/tun exists : PASA
QEMU: comprobando for cgroup 'cpu' controller support :
PASA
QEMU: comprobando for cgroup 'cpuacct' controller support :
PASA
QEMU: comprobando for cgroup 'cpuset' controller support :
PASA
QEMU: comprobando for cgroup 'memory' controller support :
PASA
QEMU: comprobando for cgroup 'devices' controller support :
ADVERTENCIA (Enable 'devices' in kernel Kconfig file or mount/enable cgroup
controller in your system)
QEMU: comprobando for cgroup 'blkio' controller support :
PASA
ADVERTENCIA (Unknown if this platform has IOMMU support)
QEMU: comprobando for secure guest support :
ADVERTENCIA (Unknown if this platform has Secure Guest support)
```
This is the output with the patch:
```
[fidencio@dentola libvirt]$ ./build/tools/virt-host-validate
QEMU: Checking if device /dev/kvm exists : PASS
QEMU: Checking if device /dev/kvm is accessible : PASS
QEMU: Checking if device /dev/vhost-net exists : PASS
QEMU: Checking if device /dev/net/tun exists : PASS
QEMU: Checking for cgroup 'cpu' controller support :
PASS
QEMU: Checking for cgroup 'cpuacct' controller support :
PASS
QEMU: Checking for cgroup 'cpuset' controller support :
PASS
QEMU: Checking for cgroup 'memory' controller support :
PASS
QEMU: Checking for cgroup 'devices' controller support :
WARN (Enable 'devices' in kernel Kconfig file or mount/enable cgroup controller in
your system)
QEMU: Checking for cgroup 'blkio' controller support :
PASS
QEMU: Checking for device assignment IOMMU support : WARN
(Unknown if this platform has IOMMU support)
QEMU: Checking for secure guest support : WARN
(Unknown if this platform has Secure Guest support)
```
Signed-off-by: Fabiano Fidêncio <fabiano(a)fidencio.org>
---
This is a follow-up on
https://listman.redhat.com/archives/libvir-list/2021-June/msg00190.html
---
tools/virt-host-validate-common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Almost good :-)
diff --git a/tools/virt-host-validate-common.c
b/tools/virt-host-validate-common.c
index 9412bb7514..ee22a88b31 100644
--- a/tools/virt-host-validate-common.c
+++ b/tools/virt-host-validate-common.c
@@ -335,6 +335,8 @@ int virHostValidateIOMMU(const char *hvname,
struct dirent *dent;
int rc;
+ virHostMsgCheck(hvname, "%s", _("for device assignment IOMMU
support"));
+
So this prints out "checking for device ..." message (without \n at EOL)...
flags = virHostValidateGetCPUFlags();
if (flags && virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_VMX))
@@ -345,7 +347,6 @@ int virHostValidateIOMMU(const char *hvname,
virBitmapFree(flags);
if (isIntel) {
- virHostMsgCheck(hvname, "%s", _("for device assignment IOMMU
support"));
if (access("/sys/firmware/acpi/tables/DMAR", F_OK) == 0) {
virHostMsgPass();
bootarg = "intel_iommu=on";
@@ -357,7 +358,6 @@ int virHostValidateIOMMU(const char *hvname,
return VIR_HOST_VALIDATE_FAILURE(level);
}
} else if (isAMD) {
- virHostMsgCheck(hvname, "%s", _("for device assignment IOMMU
support"));
if (access("/sys/firmware/acpi/tables/IVRS", F_OK) == 0) {
virHostMsgPass();
bootarg = "iommu=pt iommu=1";
.. but here, later in this if-else blocks other archs have their branch
too (ppc64 and s390). Therefore, I think this needs to be squashed in:
diff --git i/tools/virt-host-validate-common.c w/tools/virt-host-validate-common.c
index ee22a88b31..e5fe4dfc53 100644
--- i/tools/virt-host-validate-common.c
+++ w/tools/virt-host-validate-common.c
@@ -369,7 +369,7 @@ int virHostValidateIOMMU(const char *hvname,
return VIR_HOST_VALIDATE_FAILURE(level);
}
} else if (ARCH_IS_PPC64(arch)) {
- /* Empty Block */
+ virHostMsgPass();
} else if (ARCH_IS_S390(arch)) {
g_autoptr(DIR) dir = NULL;
@@ -382,6 +382,7 @@ int virHostValidateIOMMU(const char *hvname,
rc = virDirRead(dir, &dent, NULL);
if (rc <= 0)
return 0;
+ virHostMsgPass();
} else {
virHostMsgFail(level,
"Unknown if this platform has IOMMU support");
No need to resend, just let me know if you're okay with it. I can squash
it in before pushing.
Michal