From nobody Sun Feb 8 22:34:46 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1511514740964667.3524105851806; Fri, 24 Nov 2017 01:12:20 -0800 (PST) Received: from localhost ([::1]:48110 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eIA1r-0005sD-6b for importer@patchew.org; Fri, 24 Nov 2017 04:12:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48602) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eI9zV-0004DU-Cc for qemu-devel@nongnu.org; Fri, 24 Nov 2017 04:09:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eI9zR-0000MG-FG for qemu-devel@nongnu.org; Fri, 24 Nov 2017 04:09:45 -0500 Received: from mga09.intel.com ([134.134.136.24]:49873) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eI9zR-0000JB-4p for qemu-devel@nongnu.org; Fri, 24 Nov 2017 04:09:41 -0500 Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Nov 2017 01:09:40 -0800 Received: from sky-dev.bj.intel.com ([10.238.144.127]) by orsmga005.jf.intel.com with ESMTP; 24 Nov 2017 01:09:38 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,446,1505804400"; d="scan'208";a="177227790" From: "Liu, Yi L" To: qemu-devel@nongnu.org, mst@redhat.com, david@gibson.dropbear.id.au Date: Fri, 24 Nov 2017 16:52:40 +0800 Message-Id: <1511513560-28611-8-git-send-email-yi.l.liu@linux.intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1511513560-28611-1-git-send-email-yi.l.liu@linux.intel.com> References: <1511513560-28611-1-git-send-email-yi.l.liu@linux.intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 134.134.136.24 Subject: [Qemu-devel] [PATCH v2 7/7] vfio/pci: register vfio_iommu_bind_pasidtbl_notify notifier X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: tianyu.lan@intel.com, "Liu, Yi L" , kevin.tian@intel.com, yi.l.liu@intel.com, jasowang@redhat.com, peterx@redhat.com, alex.williamson@redhat.com, pbonzini@redhat.com, eric.auger.pro@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is an example to show the usage of IOMMUObject based notifier. For passthru devices, if there is a vIOMMU exposed to guest, guest would issue iommu operation on the devices. And the iommu operations needs to be propagated to host iommu driver. In future, the IOMMUObject notifiers may include: * notifier for guest pasid table binding * notifier for guest iommu tlb invalidation Both of the two notifiers would be include in future virt-SVM patchset. In virt-SVM patchset, this notifier would be fulfilled. Signed-off-by: Liu, Yi L --- hw/vfio/pci.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 5b77c7e..3ed521e 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2637,6 +2637,14 @@ static void vfio_unregister_req_notifier(VFIOPCIDevi= ce *vdev) vdev->req_enabled =3D false; } =20 +static void vfio_iommu_bind_pasidtbl_notify(IOMMUNotifier *n, + IOMMUEventData *event_data) +{ +/* Sample code, would be detailed in coming virt-SVM patchset. + VFIOGuestIOMMUObject *giommu =3D container_of(n, VFIOGuestIOMMUObject,= n); + VFIOContainer *container =3D giommu->container; +*/ +} static void vfio_realize(PCIDevice *pdev, Error **errp) { VFIOPCIDevice *vdev =3D DO_UPCAST(VFIOPCIDevice, pdev, pdev); @@ -2889,6 +2897,12 @@ static void vfio_realize(PCIDevice *pdev, Error **er= rp) QLIST_INSERT_HEAD(&group->container->giommu_object_list, giommu, giommu_next); + /* Register vfio_iommu_bind_pasidtbl_notify with event flag + IOMMU_EVENT_BIND_PASIDT */ + iommu_notifier_register(iommu, + &giommu->n, + vfio_iommu_bind_pasidtbl_notify, + IOMMU_EVENT_BIND_PASIDT); } =20 return; --=20 1.9.1