Cover Letter Detail
Show a cover letter.
GET /api/covers/2196471/?format=api
{ "id": 2196471, "url": "http://patchwork.ozlabs.org/api/covers/2196471/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260214034135.220413-1-zhenzhong.duan@intel.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260214034135.220413-1-zhenzhong.duan@intel.com>", "list_archive_url": null, "date": "2026-02-14T03:41:20", "name": "[RFCv2,00/13] intel_iommu: Enable PASID support for passthrough device", "submitter": { "id": 81636, "url": "http://patchwork.ozlabs.org/api/people/81636/?format=api", "name": "Zhenzhong Duan", "email": "zhenzhong.duan@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260214034135.220413-1-zhenzhong.duan@intel.com/mbox/", "series": [ { "id": 492156, "url": "http://patchwork.ozlabs.org/api/series/492156/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=492156", "date": "2026-02-14T03:41:20", "name": "intel_iommu: Enable PASID support for passthrough device", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/492156/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2196471/comments/", "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=h925539H;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fCZcG3R3qz1xwj\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 14 Feb 2026 14:42:36 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vr6Xb-00056k-GY; Fri, 13 Feb 2026 22:41:55 -0500", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhenzhong.duan@intel.com>)\n id 1vr6XZ-000569-6H\n for qemu-devel@nongnu.org; Fri, 13 Feb 2026 22:41:53 -0500", "from mgamail.intel.com ([198.175.65.12])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhenzhong.duan@intel.com>)\n id 1vr6XW-00089J-De\n for qemu-devel@nongnu.org; Fri, 13 Feb 2026 22:41:52 -0500", "from orviesa009.jf.intel.com ([10.64.159.149])\n by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 13 Feb 2026 19:41:47 -0800", "from unknown (HELO gnr-sp-2s-612.sh.intel.com) ([10.112.230.229])\n by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 13 Feb 2026 19:41:43 -0800" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1771040510; x=1802576510;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=yHDeaOD2WhR4jhQz3dGBFMjY4Egy+zTJ/z6t9DOiFts=;\n b=h925539HEWqXqqoiOwJWhl3hgBPZjBFxKx/qoZHaELF4YIawsVkdDuMR\n gxmSF0If5rP4buY+zbjdn0g6O8vt4CClqaUgfgohJ+iddryPjURdYZ3ve\n g76XH42GLfmQauadNIkeB+1p4bDzDzcVM2l7c7dBaDKz2Ap9ilrzhL2ZM\n 2FBr/6q5ubXIXeutWMCHNVhRJw83WTUT147+CLFhvi+knk2B3RS23xnuQ\n b62WG5DA2mAKtsffkNX5B+92xUQZSSj3sp2PkaNyzZrA9msQf+touQy2P\n zmgZPSZZdMs0B82gs24LqA+MSNoZvVp/eMA8LWVc6Biunfd5fLbu5gXX6 g==;", "X-CSE-ConnectionGUID": [ "9n9c7JwaTtOC5GWRSsbSCg==", "Lp8ZYaOlRyaXKXCKqypY8g==" ], "X-CSE-MsgGUID": [ "38vjxfXYRHisQpC2VTOIXQ==", "AzAEnVmlR6SWynnmJzNh2g==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6800,10657,11700\"; a=\"83666789\"", "E=Sophos;i=\"6.21,289,1763452800\"; d=\"scan'208\";a=\"83666789\"", "E=Sophos;i=\"6.21,289,1763452800\"; d=\"scan'208\";a=\"212932908\"" ], "X-ExtLoop1": "1", "From": "Zhenzhong Duan <zhenzhong.duan@intel.com>", "To": "qemu-devel@nongnu.org", "Cc": "alex@shazbot.org, clg@redhat.com, eric.auger@redhat.com, mst@redhat.com,\n jasowang@redhat.com, jgg@nvidia.com, nicolinc@nvidia.com,\n skolothumtho@nvidia.com, joao.m.martins@oracle.com,\n clement.mathieu--drif@eviden.com, kevin.tian@intel.com, yi.l.liu@intel.com,\n xudong.hao@intel.com, Zhenzhong Duan <zhenzhong.duan@intel.com>", "Subject": "[RFCv2 PATCH 00/13] intel_iommu: Enable PASID support for passthrough\n device", "Date": "Fri, 13 Feb 2026 22:41:20 -0500", "Message-ID": "<20260214034135.220413-1-zhenzhong.duan@intel.com>", "X-Mailer": "git-send-email 2.47.3", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=198.175.65.12;\n envelope-from=zhenzhong.duan@intel.com; helo=mgamail.intel.com", "X-Spam_score_int": "-43", "X-Spam_score": "-4.4", "X-Spam_bar": "----", "X-Spam_report": "(-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 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": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "Hi,\n\nNow we already support first stage translation with passthrough device\nbacked by nested translation in host, but only for PASID_0.\n\nStructure VTDAddressSpace includes some elements suitable for emulated\ndevice and passthrough device without PASID, e.g., address space,\ndifferent memory regions, etc, it is also protected by vtd iommu lock,\nall these are useless and become a burden for passthrough device with\nPASID.\n\nWhen there are lots of PASIDs used in one device, the AS and MRs are\nall registered to memory core and impact the whole system performance.\n\nSo instead of using VTDAddressSpace to cache pasid entry for each pasid\nof a passthrough device, we define a light weight structure\nVTDACCELPASIDCacheEntry with only necessary elements for each pasid. We\nwill use this struct as a parameter to conduct binding/unbinding to\nnested hwpt, to record the current binded nested hwpt and even future\nPRQ support. It's also designed to support PASID_0.\n\nThe potential full definition of VTDACCELPASIDCacheEntry may like:\n\n typedef struct VTDACCELPASIDCacheEntry {\n VTDHostIOMMUDevice *vtd_hiod;\n VTDPASIDEntry pe;\n uint32_t pasid;\n uint32_t fs_hwpt_id;\n uint32_t fault_id;\n int fault_fd;\n QLIST_HEAD(, VTDPRQEntry) vtd_prq_list;\n IOMMUPRINotifier pri_notifier_entry;\n IOMMUPRINotifier *pri_notifier;\n QLIST_ENTRY(VTDACCELPASIDCacheEntry) next;\n } VTDACCELPASIDCacheEntry;\n\nGIT branch: https://github.com/yiliu1765/qemu/tree/zhenzhong/iommufd_pasid\n\nPATCH01-06: Some preparing work\nPATCH07-09: Handle PASID entry addition and removal\nPATCH10-11: Support pasid binding and unbinding\nPATCH12-13: Add PASID related check and enable PASID for passthrough device\n\nThis patchset depends on a kernel feature enhancement[1] to work.\n\nTests:\nTested with DSA device which driver uses 2 PASIDs by default.\n\nThanks\nZhenzhong\n\n[1] https://lore.kernel.org/all/20260205023405.41583-1-zhenzhong.duan@intel.com/\n\nChangelog:\nRFCv2:\n- extend attach/detach_hwpt() instead of introducing new callbacks (Shammer)\n- Define IOMMU_NO_PASID for device attachment without pasid (Nicolin)\n- update vtd_destroy_old_fs_hwpt()'s parameter for naming consistency (Clement)\n- check pasid bits size to be no more than 20 bits (Clement)\n- initialize local variable max_pasid_log2 to 0 (Cédric)\n\n\nZhenzhong Duan (13):\n vfio/iommufd: Extend attach/detach_hwpt callback implementations with\n pasid\n iommufd: Extend attach/detach_hwpt callbacks to support pasid\n vfio/iommufd: Create nesting parent hwpt with IOMMU_HWPT_ALLOC_PASID\n flag\n intel_iommu: Create the nested hwpt with IOMMU_HWPT_ALLOC_PASID flag\n intel_iommu: Change pasid property from bool to uint8\n intel_iommu: Export some functions\n intel_iommu: Handle PASID entry addition for pc_inv_dsc request\n intel_iommu: Handle PASID entry removal for pc_inv_dsc request\n intel_iommu: Handle PASID entry removal for system reset\n intel_iommu_accel: Support pasid binding/unbinding and PIOTLB flushing\n intel_iommu_accel: drop _lock suffix in\n vtd_flush_host_piotlb_all_locked()\n intel_iommu_accel: Add pasid bits size check\n intel_iommu: Expose flag VIOMMU_FLAG_PASID_SUPPORTED when configured\n\n hw/i386/intel_iommu_accel.h | 34 ++-\n hw/i386/intel_iommu_internal.h | 41 +++-\n include/hw/core/iommu.h | 2 +\n include/hw/i386/intel_iommu.h | 4 +-\n include/hw/vfio/vfio-device.h | 1 +\n include/system/iommufd.h | 16 +-\n backends/iommufd.c | 9 +-\n hw/arm/smmuv3-accel.c | 12 +-\n hw/i386/intel_iommu.c | 81 +++----\n hw/i386/intel_iommu_accel.c | 406 +++++++++++++++++++++++++++------\n hw/vfio/device.c | 11 +\n hw/vfio/iommufd.c | 56 +++--\n hw/vfio/trace-events | 4 +-\n 13 files changed, 506 insertions(+), 171 deletions(-)" }