From nobody Tue Nov 26 16:19:38 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1706772689; cv=none; d=zohomail.com; s=zohoarc; b=mX8r+O/znWpxqWRXkr3bt2Zy8e/5Y6oer+JEPtT3mdTG1fIO+oZuH/ApmoGiFTkWblkxdNaUomtichlQa1qDc2lpribyjIFCIRzrfowgnclelNRCA3+hIwY2r+pyvZzD2QrGlxLzCqp156c1+Ts2kDzHhynrded+YrVtqVuNO58= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1706772689; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dkHSu3+volDi1v+xUx9E33jqRYf5hw076kjm/6bJLDk=; b=kKc5krZ9okM4rfaCMsAMUz8RBXLoUeskRbmFZ4jE8aA/Rxx6f/0CqTnnstjfUvSJxO6s9mJ/qz76oA5TREMBneEJM/Md/e4Wwy5JeULImHa9uYF10amPauaK2DTI1F6VazGmloMlxDSijLAXO+zxdwhyZtgt8ORp50cBHXlcjaM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1706772688995364.7275078900426; Wed, 31 Jan 2024 23:31:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rVRWv-0005Em-Qh; Thu, 01 Feb 2024 02:30:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rVRWp-0005Cx-BB for qemu-devel@nongnu.org; Thu, 01 Feb 2024 02:30:31 -0500 Received: from mgamail.intel.com ([192.55.52.120]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rVRWl-0001R8-L8 for qemu-devel@nongnu.org; Thu, 01 Feb 2024 02:30:31 -0500 Received: from orviesa004.jf.intel.com ([10.64.159.144]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jan 2024 23:30:26 -0800 Received: from spr-s2600bt.bj.intel.com ([10.240.192.124]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jan 2024 23:30:23 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1706772627; x=1738308627; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sAIPXTm87HB/uGpJ/9YNiXxwn8eta5zQASgPvOQiYZs=; b=RuV8fY7LGwZtXStYP9Cg2KK8VUo5C9WUs/pamSJP/pc2+2ntMyOzfxrI kjWk+lkWkOSBDbs5gr5corHnztTb88blaudnkFWRW/Yo5tGJMhn3CfHD9 dc9hnIE5Bh4ez+EpzKBk/GlzWosrBzspkPdVX3nR1Ae5pr4RQYFZfGuk7 Hxos8dilViyB2Rgth5T7+AkLhfmd5p/yN7nEG2iLgwquigwx+soHpn5If gX7tmwWTOYWdcrnrsfZFdMFsz3kKNkl4BnQpPa7TcpVROrcL0dm1+QhNy Vu0KqQAiOJZtQuRTqB3ysOUX9weHfcAPs+aKvBQteQiwymAfvV9o2/9qy A==; X-IronPort-AV: E=McAfee;i="6600,9927,10969"; a="402676638" X-IronPort-AV: E=Sophos;i="6.05,234,1701158400"; d="scan'208";a="402676638" X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.05,234,1701158400"; d="scan'208";a="4443168" From: Zhenzhong Duan To: qemu-devel@nongnu.org Cc: alex.williamson@redhat.com, clg@redhat.com, eric.auger@redhat.com, peterx@redhat.com, jasowang@redhat.com, mst@redhat.com, jgg@nvidia.com, nicolinc@nvidia.com, joao.m.martins@oracle.com, kevin.tian@intel.com, yi.l.liu@intel.com, yi.y.sun@intel.com, chao.p.peng@intel.com, Zhenzhong Duan , Yi Sun Subject: [PATCH rfcv2 02/18] backends/iommufd: Introduce IOMMUFDDevice Date: Thu, 1 Feb 2024 15:28:02 +0800 Message-Id: <20240201072818.327930-3-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240201072818.327930-1-zhenzhong.duan@intel.com> References: <20240201072818.327930-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.120; envelope-from=zhenzhong.duan@intel.com; helo=mgamail.intel.com X-Spam_score_int: -56 X-Spam_score: -5.7 X-Spam_bar: ----- X-Spam_report: (-5.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.292, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1706772689901100005 Content-Type: text/plain; charset="utf-8" IOMMUFDDevice represents a device in iommufd and can be used as a communication interface between devices (i.e., VFIO, VDPA) and vIOMMU. Currently it includes only public iommufd handle and device id which could be used by vIOMMU to get hw IOMMU information. There will also be some elements in private field in future, i.e., capability bits for dirty tracking; when nested translation is supported in future, vIOMMU is going to have more iommufd related operations like allocate hwpt for a device, attach/detach hwpt, etc. So IOMMUFDDevice will be further extended with those needs. IOMMUFDDevice is willingly not a QOM object because we don't want it to be visible from the user interface. Introduce a helper iommufd_device_init to initialize IOMMUFDDevice. Originally-by: Yi Liu Signed-off-by: Yi Sun Signed-off-by: Zhenzhong Duan --- include/sysemu/iommufd.h | 14 ++++++++++++++ backends/iommufd.c | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/include/sysemu/iommufd.h b/include/sysemu/iommufd.h index 9af27ebd6c..c3f3469760 100644 --- a/include/sysemu/iommufd.h +++ b/include/sysemu/iommufd.h @@ -4,6 +4,7 @@ #include "qom/object.h" #include "exec/hwaddr.h" #include "exec/cpu-common.h" +#include "sysemu/host_iommu_device.h" =20 #define TYPE_IOMMUFD_BACKEND "iommufd" OBJECT_DECLARE_TYPE(IOMMUFDBackend, IOMMUFDBackendClass, IOMMUFD_BACKEND) @@ -33,4 +34,17 @@ int iommufd_backend_map_dma(IOMMUFDBackend *be, uint32_t= ioas_id, hwaddr iova, ram_addr_t size, void *vaddr, bool readonly); int iommufd_backend_unmap_dma(IOMMUFDBackend *be, uint32_t ioas_id, hwaddr iova, ram_addr_t size); + + +/* Abstraction of host IOMMUFD device */ +typedef struct IOMMUFDDevice { + HostIOMMUDevice base; + /* private: */ + + /* public: */ + IOMMUFDBackend *iommufd; + uint32_t devid; +} IOMMUFDDevice; + +void iommufd_device_init(IOMMUFDDevice *idev); #endif diff --git a/backends/iommufd.c b/backends/iommufd.c index 1ef683c7b0..d92791bba9 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -231,3 +231,9 @@ static void register_types(void) } =20 type_init(register_types); + +void iommufd_device_init(IOMMUFDDevice *idev) +{ + host_iommu_base_device_init(&idev->base, HID_IOMMUFD, + sizeof(IOMMUFDDevice)); +} --=20 2.34.1