[PATCH] virt-host-validate: Fix IOMMU output on aarch64
Fabiano Fidêncio
fabiano at fidencio.org
Wed Jun 9 10:19:36 UTC 2021
On Wed, Jun 9, 2021 at 11:22 AM Michal Prívozník <mprivozn at 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 at 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 at 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 at 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
More information about the libvir-list
mailing list