Cover Letter Detail
Show a cover letter.
GET /api/1.0/covers/2175429/?format=api
{ "id": 2175429, "url": "http://patchwork.ozlabs.org/api/1.0/covers/2175429/?format=api", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/1.0/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": "" }, "msgid": "<20251218062643.624796-1-zhenzhong.duan@intel.com>", "date": "2025-12-18T06:26:21", "name": "[v6,0/9] vfio: relax the vIOMMU check", "submitter": { "id": 81636, "url": "http://patchwork.ozlabs.org/api/1.0/people/81636/?format=api", "name": "Duan, Zhenzhong", "email": "zhenzhong.duan@intel.com" }, "series": [ { "id": 485789, "url": "http://patchwork.ozlabs.org/api/1.0/series/485789/?format=api", "date": "2025-12-18T06:26:21", "name": "vfio: relax the vIOMMU check", "version": 6, "mbox": "http://patchwork.ozlabs.org/series/485789/mbox/" } ], "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=W6MoRQ8o;\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 4dX11r4Q6Dz1y2F\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 17:28:00 +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 1vW7Tx-0003KU-2j; Thu, 18 Dec 2025 01:27:25 -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 1vW7Tu-0003KE-Ry\n for qemu-devel@nongnu.org; Thu, 18 Dec 2025 01:27:23 -0500", "from mgamail.intel.com ([198.175.65.18])\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 1vW7Ts-00014o-1g\n for qemu-devel@nongnu.org; Thu, 18 Dec 2025 01:27:21 -0500", "from orviesa005.jf.intel.com ([10.64.159.145])\n by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 17 Dec 2025 22:27:16 -0800", "from unknown (HELO gnr-sp-2s-612.sh.intel.com) ([10.112.230.229])\n by orviesa005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 17 Dec 2025 22:27:13 -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=1766039240; x=1797575240;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=rTY/Eu4tk0oC+6yLaZgKeMVGeYV+L5caLDdv7cY1wjA=;\n b=W6MoRQ8oIOXdGRwZw/W9fVsSFiX1XMdmSTWiVeVp67UZjnmS3b0GsCC6\n inQtmddhFiO+FQSgEtet6OpbmnZhU+SqPIRlV/ZT6SAj/ow8JqxgYHf8l\n GH6EvxukeXNYnVrsPKfIJtGqHRD2NbUICUutd2FsFsmiycPekT0QvAIeY\n asaByP40Fdzo5NLyiDiXmuIGFqLrP+mIbaiKdS/Tu9aDLqe+H6kHX2O6p\n Cd5lbBGiU7C/NGnapORvGSGNap4k9TcZ/m3/XNxBM8QiJrcFqupdKjvgN\n rMmpbAQ6Rgiic98z4+1NilnlvrZ7xnNJd+A4CSwCoNG8Bu0WrX40LgfYA w==;", "X-CSE-ConnectionGUID": [ "n5+u3mw+TS6OvpI1B180YQ==", "f6P2dYKVTVKjdGOYRTaTJA==" ], "X-CSE-MsgGUID": [ "STbY4VavSXKFxHK8MlhQlA==", "92Aw2b8cQWOJsLVPU2Fvug==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6800,10657,11645\"; a=\"68028486\"", "E=Sophos;i=\"6.21,156,1763452800\"; d=\"scan'208\";a=\"68028486\"", "E=Sophos;i=\"6.21,156,1763452800\"; d=\"scan'208\";a=\"203569829\"" ], "X-ExtLoop1": "1", "From": "Zhenzhong Duan <zhenzhong.duan@intel.com>", "To": "qemu-devel@nongnu.org", "Cc": "alex@shazbot.org, clg@redhat.com, mst@redhat.com, jasowang@redhat.com,\n yi.l.liu@intel.com, clement.mathieu--drif@eviden.com,\n eric.auger@redhat.com, joao.m.martins@oracle.com, avihaih@nvidia.com,\n xudong.hao@intel.com, giovanni.cabiddu@intel.com, rohith.s.r@intel.com,\n mark.gross@intel.com, arjan.van.de.ven@intel.com,\n Zhenzhong Duan <zhenzhong.duan@intel.com>", "Subject": "[PATCH v6 0/9] vfio: relax the vIOMMU check", "Date": "Thu, 18 Dec 2025 01:26:21 -0500", "Message-ID": "<20251218062643.624796-1-zhenzhong.duan@intel.com>", "X-Mailer": "git-send-email 2.47.1", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=198.175.65.18;\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-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\nThis series relax the vIOMMU check and allows live migration with vIOMMU\nwithout VFs using device dirty tracking. It's rewritten based on first 4\npatches of [1] from Joao.\n\nCurrently what block us is the lack of dirty bitmap query with iommufd\nbefore unmap. By adding that query and handle some corner case we can\nrelax the check.\n\nBased on vfio-next branch:\n\npatch1-2: add dirty bitmap query with iommufd\npatch3: a ranaming cleanup\npatch4-5: unmap_bitmap optimization\npatch6-7: fixes to avoid losing dirty pages\npatch8: add a blocker if VM memory is really quite large for unmap_bitmap\npatch9: relax vIOMMU check\n\nQemu code can be found at [2], it's based on vfio-next + base nesting series.\n\nWe tested VM live migration (running QAT workload in VM) with QAT device\npassthrough, below matrix configs with guest config 'iommu=pt' and 'iommu=nopt':\n1.Scalable mode vIOMMU + IOMMUFD cdev mode\n2.Scalable mode vIOMMU + legacy VFIO mode\n3.legacy mode vIOMMU + IOMMUFD cdev mode\n4.legacy mode vIOMMU + legacy VFIO mode\n\nThe QAT workload is a user level app that utilizes VFIO to control QAT device.\n\nThanks\nZhenzhong\n\n[1] https://github.com/jpemartins/qemu/commits/vfio-migration-viommu/\n[2] https://github.com/yiliu1765/qemu/tree/liuyi/zhenzhong/relax_viommu_check\n\nChangelog:\nv6:\n- check global_dirty_tracking in vfio_listener_region_del() (Liuyi)\n- add note and update subject of patch7 (Liuyi)\n- check global_dirty_tracking in vtd_address_space_unmap()\n\nv5:\n- drop the patch checking iommu_dirty_tracking (Avihai, Joao)\n- pass iotlb info to unmap_bitmap when switch out of system AS\n\nv4:\n- bypass memory size check for device dirty tracking as it's unrelated (Avihai)\n- split vfio_device_dirty_pages_disabled() helper out as a separate patch\n- add a patch to fix minor error on checking vbasedev->iommu_dirty_tracking\n\nv3:\n- return bitmap query failure to fail migration (Avihai)\n- refine patch7, set IOMMUFD backend 'dirty_pgsizes' and 'max_dirty_bitmap_size' (Cédric)\n- refine patch7, calculate memory limit instead of hardcode 8TB (Liuyi)\n- refine commit log (Cédric, Liuyi)\n\nv2:\n- add backend_flag parameter to pass DIRTY_BITMAP_NO_CLEAR (Joao, Cédric)\n- add a cleanup patch to rename vfio_dma_unmap_bitmap (Cédric)\n- add blocker if unmap_bitmap limit check fail (Liuyi)\n\n\nJoao Martins (1):\n vfio: Add a backend_flag parameter to\n vfio_contianer_query_dirty_bitmap()\n\nZhenzhong Duan (8):\n vfio/iommufd: Add framework code to support getting dirty bitmap\n before unmap\n vfio/iommufd: Query dirty bitmap before DMA unmap\n vfio/container-legacy: rename vfio_dma_unmap_bitmap() to\n vfio_legacy_dma_unmap_get_dirty_bitmap()\n vfio/iommufd: Add IOMMU_HWPT_GET_DIRTY_BITMAP_NO_CLEAR flag support\n intel_iommu: Fix unmap_bitmap failure with legacy VFIO backend\n vfio/listener: Add missing dirty tracking in region_del\n vfio/migration: Add migration blocker if VM memory is too large to\n cause unmap_bitmap failure\n vfio/migration: Allow live migration with vIOMMU without VFs using\n device dirty tracking\n\n include/hw/vfio/vfio-container.h | 8 +++--\n include/hw/vfio/vfio-device.h | 10 ++++++\n include/system/iommufd.h | 2 +-\n backends/iommufd.c | 5 +--\n hw/i386/intel_iommu.c | 42 +++++++++++++++++++++++++\n hw/vfio-user/container.c | 5 +--\n hw/vfio/container-legacy.c | 15 +++++----\n hw/vfio/container.c | 20 ++++++------\n hw/vfio/device.c | 6 ++++\n hw/vfio/iommufd.c | 53 +++++++++++++++++++++++++++++---\n hw/vfio/listener.c | 28 ++++++++++++++---\n hw/vfio/migration.c | 40 ++++++++++++++++++++++--\n backends/trace-events | 2 +-\n hw/vfio/trace-events | 2 +-\n 14 files changed, 201 insertions(+), 37 deletions(-)" }