QEMU-Devel Archive mirror
 help / color / mirror / Atom feed
From: "Duan, Zhenzhong" <zhenzhong.duan@intel.com>
To: CLEMENT MATHIEU--DRIF <clement.mathieu--drif@eviden.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Cc: "alex.williamson@redhat.com" <alex.williamson@redhat.com>,
	"clg@redhat.com" <clg@redhat.com>,
	"eric.auger@redhat.com" <eric.auger@redhat.com>,
	"mst@redhat.com" <mst@redhat.com>,
	"peterx@redhat.com" <peterx@redhat.com>,
	"jasowang@redhat.com" <jasowang@redhat.com>,
	"jgg@nvidia.com" <jgg@nvidia.com>,
	"nicolinc@nvidia.com" <nicolinc@nvidia.com>,
	"joao.m.martins@oracle.com" <joao.m.martins@oracle.com>,
	"Tian, Kevin" <kevin.tian@intel.com>,
	"Liu, Yi L" <yi.l.liu@intel.com>,
	"Peng, Chao P" <chao.p.peng@intel.com>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	 Richard Henderson <richard.henderson@linaro.org>,
	Eduardo Habkost <eduardo@habkost.net>
Subject: RE: [PATCH v4 19/19] intel_iommu: Check compatibility with host IOMMU capabilities
Date: Wed, 8 May 2024 06:30:36 +0000	[thread overview]
Message-ID: <SJ0PR11MB6744EB8A647EB824DD2E021E92E52@SJ0PR11MB6744.namprd11.prod.outlook.com> (raw)
In-Reply-To: <fcd43b9f-f598-47b4-b7df-d0f0f7c3b704@eviden.com>

[-- Attachment #1: Type: text/plain, Size: 3768 bytes --]

Hi Clement,

See inline.

From: CLEMENT MATHIEU--DRIF <clement.mathieu--drif@eviden.com>
Sent: Tuesday, May 7, 2024 7:40 PM
To: Duan, Zhenzhong <zhenzhong.duan@intel.com>; qemu-devel@nongnu.org
Cc: alex.williamson@redhat.com; clg@redhat.com; eric.auger@redhat.com; mst@redhat.com; peterx@redhat.com; jasowang@redhat.com; jgg@nvidia.com; nicolinc@nvidia.com; joao.m.martins@oracle.com; Tian, Kevin <kevin.tian@intel.com>; Liu, Yi L <yi.l.liu@intel.com>; Peng, Chao P <chao.p.peng@intel.com>; Marcel Apfelbaum <marcel.apfelbaum@gmail.com>; Paolo Bonzini <pbonzini@redhat.com>; Richard Henderson <richard.henderson@linaro.org>; Eduardo Habkost <eduardo@habkost.net>
Subject: Re: [PATCH v4 19/19] intel_iommu: Check compatibility with host IOMMU capabilities


Hi Zhenzhong,
On 07/05/2024 11:20, Zhenzhong Duan wrote:

Caution: External email. Do not open attachments or click links, unless this email comes from a known sender and you know the content is safe.





If check fails, host device (either VFIO or VDPA device) is not

compatible with current vIOMMU config and should not be passed to

guest.



Only aw_bits is checked for now, we don't care other capabilities

before scalable modern mode is introduced.



Signed-off-by: Yi Liu <yi.l.liu@intel.com><mailto:yi.l.liu@intel.com>

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com><mailto:zhenzhong.duan@intel.com>

---

 hw/i386/intel_iommu.c | 26 ++++++++++++++++++++++++++

 1 file changed, 26 insertions(+)



diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c

index 747c988bc4..146fde23fc 100644

--- a/hw/i386/intel_iommu.c

+++ b/hw/i386/intel_iommu.c

@@ -35,6 +35,7 @@

 #include "sysemu/kvm.h"

 #include "sysemu/dma.h"

 #include "sysemu/sysemu.h"

+#include "sysemu/host_iommu_device.h"

 #include "hw/i386/apic_internal.h"

 #include "kvm/kvm_i386.h"

 #include "migration/vmstate.h"

@@ -3819,6 +3820,25 @@ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s, PCIBus *bus,

     return vtd_dev_as;

 }



+static bool vtd_check_hdev(IntelIOMMUState *s, VTDHostIOMMUDevice *vtd_hdev,

+                           Error **errp)

+{

+    HostIOMMUDevice *hiod = vtd_hdev->dev;

Why not passing the hiod pointer as parameter directly? Maybe you have something in mind for a future patch?

[Zhenzhong] Yes, I have below change in commit https://github.com/yiliu1765/qemu/commit/7a8219b040b44efe7a828e130bdf5ccc2dddb4d0

    ret = host_iommu_device_get_cap(hiod, HOST_IOMMU_DEVICE_CAP_ERRATA, errp);

    if (ret < 0) {

        return false;

    }

vtd_hdev->errata = ret;

Thanks

Zhenzhong



It would allow us to allocate the VTDHostIOMMUDevice later in vtd_dev_set_iommu_device.



+    int ret;

+

+    /* Common checks */

+    ret = host_iommu_device_get_cap(hiod, HOST_IOMMU_DEVICE_CAP_AW_BITS, errp);

+    if (ret < 0) {

+        return false;

+    }

+    if (s->aw_bits > ret) {

+        error_setg(errp, "aw-bits %d > host aw-bits %d", s->aw_bits, ret);

+        return false;

+    }

+

+    return true;

+}

+

 static bool vtd_dev_set_iommu_device(PCIBus *bus, void *opaque, int devfn,

                                      HostIOMMUDevice *hiod, Error **errp)

 {

@@ -3848,6 +3868,12 @@ static bool vtd_dev_set_iommu_device(PCIBus *bus, void *opaque, int devfn,

     vtd_hdev->iommu_state = s;

     vtd_hdev->dev = hiod;



+    if (!vtd_check_hdev(s, vtd_hdev, errp)) {

+        g_free(vtd_hdev);

+        vtd_iommu_unlock(s);

+        return false;

+    }

+

     new_key = g_malloc(sizeof(*new_key));

     new_key->bus = bus;

     new_key->devfn = devfn;

--

2.34.1



[-- Attachment #2: Type: text/html, Size: 9626 bytes --]

      reply	other threads:[~2024-05-08  6:31 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-07  9:20 [PATCH v4 00/19] Add a host IOMMU device abstraction to check with vIOMMU Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 01/19] backends: Introduce HostIOMMUDevice abstract Zhenzhong Duan
2024-05-07  9:44   ` Philippe Mathieu-Daudé
2024-05-07 10:25     ` Duan, Zhenzhong
2024-05-07  9:20 ` [PATCH v4 02/19] vfio/container: Introduce TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO device Zhenzhong Duan
2024-05-07 12:16   ` Cédric Le Goater
2024-05-07  9:20 ` [PATCH v4 03/19] backends/iommufd: Introduce abstract TYPE_HOST_IOMMU_DEVICE_IOMMUFD device Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 04/19] vfio/iommufd: Introduce TYPE_HOST_IOMMU_DEVICE_IOMMUFD_VFIO device Zhenzhong Duan
2024-05-07 12:19   ` Cédric Le Goater
2024-05-08  6:21     ` Duan, Zhenzhong
2024-05-07  9:20 ` [PATCH v4 05/19] backends/host_iommu_device: Introduce HostIOMMUDeviceCaps Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 06/19] range: Introduce range_get_last_bit() Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 07/19] vfio/container: Implement HostIOMMUDeviceClass::realize() handler Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 08/19] backends/iommufd: Introduce helper function iommufd_backend_get_device_info() Zhenzhong Duan
2024-05-07 12:17   ` Cédric Le Goater
2024-05-07  9:20 ` [PATCH v4 09/19] vfio/iommufd: Implement HostIOMMUDeviceClass::realize() handler Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 10/19] vfio/container: Implement HostIOMMUDeviceClass::get_cap() handler Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 11/19] backends/iommufd: " Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 12/19] vfio: Introduce VFIOIOMMUClass::hiod_typename attribute Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 13/19] vfio: Create host IOMMU device instance Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 14/19] hw/pci: Introduce helper function pci_device_get_iommu_bus_devfn() Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 15/19] hw/pci: Introduce pci_device_[set|unset]_iommu_device() Zhenzhong Duan
2024-05-07 11:22   ` Cédric Le Goater
2024-05-07  9:20 ` [PATCH v4 16/19] vfio/pci: Pass HostIOMMUDevice to vIOMMU Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 17/19] intel_iommu: Extract out vtd_cap_init() to initialize cap/ecap Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 18/19] intel_iommu: Implement [set|unset]_iommu_device() callbacks Zhenzhong Duan
2024-05-07  9:20 ` [PATCH v4 19/19] intel_iommu: Check compatibility with host IOMMU capabilities Zhenzhong Duan
2024-05-07 11:39   ` CLEMENT MATHIEU--DRIF
2024-05-08  6:30     ` Duan, Zhenzhong [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=SJ0PR11MB6744EB8A647EB824DD2E021E92E52@SJ0PR11MB6744.namprd11.prod.outlook.com \
    --to=zhenzhong.duan@intel.com \
    --cc=alex.williamson@redhat.com \
    --cc=chao.p.peng@intel.com \
    --cc=clement.mathieu--drif@eviden.com \
    --cc=clg@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=eric.auger@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=jgg@nvidia.com \
    --cc=joao.m.martins@oracle.com \
    --cc=kevin.tian@intel.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mst@redhat.com \
    --cc=nicolinc@nvidia.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=yi.l.liu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).