[PATCH] virt-host-validate: Fix IOMMU output on aarch64

Fabiano Fidêncio posted 1 patch 2 years, 10 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20210608201642.109722-1-fabiano@fidencio.org
tools/virt-host-validate-common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] virt-host-validate: Fix IOMMU output on aarch64
Posted by Fabiano Fidêncio 2 years, 10 months ago
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@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(-)

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"));
+
     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";
-- 
2.31.1

Re: [PATCH] virt-host-validate: Fix IOMMU output on aarch64
Posted by Michal Prívozník 2 years, 10 months ago
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@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

Re: [PATCH] virt-host-validate: Fix IOMMU output on aarch64
Posted by Fabiano Fidêncio 2 years, 10 months ago
On Wed, Jun 9, 2021 at 11:22 AM Michal Prívozník <mprivozn@redhat.com> wrote:
>
> 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@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.

Please, go for it!

Thanks, Michal!
-- 
Fabiano Fidêncio


Re: [PATCH] virt-host-validate: Fix IOMMU output on aarch64
Posted by Michal Prívozník 2 years, 10 months ago
On 6/9/21 12:19 PM, Fabiano Fidêncio wrote:
> On Wed, Jun 9, 2021 at 11:22 AM Michal Prívozník <mprivozn@redhat.com> wrote:
>>
>> 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@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(-)


>> No need to resend, just let me know if you're okay with it. I can squash
>> it in before pushing.
> 
> Please, go for it!
> 
> Thanks, Michal!
> 

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

and pushed.

Michal