Show a cover letter.

GET /api/1.0/covers/2175429/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "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(-)"
}