get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2194890/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2194890,
    "url": "http://patchwork.ozlabs.org/api/patches/2194890/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260210070155.1176081-3-vivek.kasireddy@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": "<20260210070155.1176081-3-vivek.kasireddy@intel.com>",
    "list_archive_url": null,
    "date": "2026-02-10T06:59:42",
    "name": "[v6,02/11] virtio-gpu: Find hva for Guest's DMA addr associated with a ram device",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "65ffa2016f2a60a4ef38b3c5168524469df46ad2",
    "submitter": {
        "id": 81116,
        "url": "http://patchwork.ozlabs.org/api/people/81116/?format=api",
        "name": "Kasireddy, Vivek",
        "email": "vivek.kasireddy@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260210070155.1176081-3-vivek.kasireddy@intel.com/mbox/",
    "series": [
        {
            "id": 491614,
            "url": "http://patchwork.ozlabs.org/api/series/491614/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=491614",
            "date": "2026-02-10T06:59:41",
            "name": "vfio: Create dmabuf from multiple VFIO ranges and use it in virtio-gpu",
            "version": 6,
            "mbox": "http://patchwork.ozlabs.org/series/491614/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2194890/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2194890/checks/",
    "tags": {},
    "related": [],
    "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=I1SAq4Z3;\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 4f9CDv4Vqkz1xvb\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 10 Feb 2026 18:02:39 +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 1vphlP-0004xS-2f; Tue, 10 Feb 2026 02:02:23 -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 <vivek.kasireddy@intel.com>)\n id 1vphlN-0004x3-9O\n for qemu-devel@nongnu.org; Tue, 10 Feb 2026 02:02:21 -0500",
            "from mgamail.intel.com ([198.175.65.16])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <vivek.kasireddy@intel.com>)\n id 1vphlL-0004oR-FG\n for qemu-devel@nongnu.org; Tue, 10 Feb 2026 02:02:20 -0500",
            "from orviesa006.jf.intel.com ([10.64.159.146])\n by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 09 Feb 2026 23:02:13 -0800",
            "from vkasired-desk2.fm.intel.com ([10.105.128.132])\n by orviesa006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 09 Feb 2026 23:02: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=1770706939; x=1802242939;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=LuogRKHYhpk4yupWQQQxsAZlWl2tsNvD1m+TD2cKQWc=;\n b=I1SAq4Z3mNHswU3kRd93HTfEAl6TsGLmWn9xeFjxmLY3sW4AuEbGNh9Q\n 8hD4c1dibIiVzhGY8H85m4PEAR5PcNUYerE9nUh1/kCpA7PgrEcwkKdxn\n jJRXLX7Qk+GXfJraRk/OQlYbapv9fRTFp9MZ1Lp4DoTyyCC4K73ww+B2x\n XH++uQjmiWVB4qHnqVikm2+/GD5fDpcJnHjhQK5TvsQpaS5OwcRgAOvPr\n yHJwH0VGU//C7/HcD0Qs3HbuJSM2qt4u4QOPdGGqB0lq3mswQePUJpV+J\n ACxvELd2D7ZBrks5RpmleQ1Oak9R3Vf/ejDADMbz/BZhWVcIv+/qcDHHe w==;",
        "X-CSE-ConnectionGUID": [
            "z+BjVQmVTRSMivII3NkmXw==",
            "xu5jCr7JRhqIK2q9UfTDrg=="
        ],
        "X-CSE-MsgGUID": [
            "6+Oi12JmTe+s8kqMfW7RTg==",
            "KSreCBpMTtu5L1s3NFTcKA=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6800,10657,11696\"; a=\"72012144\"",
            "E=Sophos;i=\"6.21,283,1763452800\"; d=\"scan'208\";a=\"72012144\"",
            "E=Sophos;i=\"6.21,283,1763452800\"; d=\"scan'208\";a=\"210920535\""
        ],
        "X-ExtLoop1": "1",
        "From": "Vivek Kasireddy <vivek.kasireddy@intel.com>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "Vivek Kasireddy <vivek.kasireddy@intel.com>, =?utf-8?q?Marc-Andr=C3=A9_L?=\n\t=?utf-8?q?ureau?= <marcandre.lureau@redhat.com>,\n =?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>,\n Dmitry Osipenko <dmitry.osipenko@collabora.com>,\n Alex Williamson <alex@shazbot.org>,\n =?utf-8?q?C=C3=A9dric_Le_Goater?= <clg@redhat.com>",
        "Subject": "[PATCH v6 02/11] virtio-gpu: Find hva for Guest's DMA addr associated\n with a ram device",
        "Date": "Mon,  9 Feb 2026 22:59:42 -0800",
        "Message-ID": "<20260210070155.1176081-3-vivek.kasireddy@intel.com>",
        "X-Mailer": "git-send-email 2.50.1",
        "In-Reply-To": "<20260210070155.1176081-1-vivek.kasireddy@intel.com>",
        "References": "<20260210070155.1176081-1-vivek.kasireddy@intel.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Received-SPF": "pass client-ip=198.175.65.16;\n envelope-from=vivek.kasireddy@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": "If the Guest provides a DMA address that is associated with a ram\ndevice (such as a VFIO PCI device region and not its system memory),\nthen we can obtain the hva (host virtual address) by invoking\naddress_space_translate() followed by memory_region_get_ram_ptr().\n\nWe cannot use dma_memory_map() because for memory regions that do\nnot support direct access, it would create bounce buffers instead\nof returning the actual hva, which is not desirable here. And, since\nVFIO device regions are not considered directly accessible (because\nthey are mostly MMIO based), virtio-gpu cannot invoke dma_memory_map()\nto obtain the hva in this case.\n\nTherefore, in order to handle addresses associated with VFIO devices,\nwe need to use the address_space_translate() API to first identify\nthe right memory region and the appropriate offset within that\nregion and then use memory_region_get_ram_ptr() to get the hva.\nThis approach also works for addresses associated with the system\nmemory region.\n\nNote that, although we take an explicit reference on the memory\nregion, we would still rely on dma_memory_unmap() to drop that\nreference when the dma mapping is eventually unmapped.\n\nCc: Marc-André Lureau <marcandre.lureau@redhat.com>\nCc: Alex Bennée <alex.bennee@linaro.org>\nCc: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>\nCc: Dmitry Osipenko <dmitry.osipenko@collabora.com>\nCc: Alex Williamson <alex@shazbot.org>\nCc: Cédric Le Goater <clg@redhat.com>\nReviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>\nSigned-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>\n---\n hw/display/virtio-gpu.c | 21 ++++++++++++++++++---\n 1 file changed, 18 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c\nindex 3d58cebf4b..9930a21317 100644\n--- a/hw/display/virtio-gpu.c\n+++ b/hw/display/virtio-gpu.c\n@@ -798,6 +798,23 @@ static void virtio_gpu_set_scanout_blob(VirtIOGPU *g,\n                               &fb, res, &ss.r, &cmd->error);\n }\n \n+static void *virtio_gpu_dma_memory_map(VirtIOGPU *g,\n+                                       struct virtio_gpu_ctrl_command *cmd,\n+                                       uint64_t a, hwaddr *len)\n+{\n+    MemoryRegion *mr;\n+    hwaddr xlat;\n+\n+    mr = address_space_translate(VIRTIO_DEVICE(g)->dma_as, a, &xlat, len,\n+                                 DMA_DIRECTION_TO_DEVICE,\n+                                 MEMTXATTRS_UNSPECIFIED);\n+    if (memory_region_is_ram(mr)) {\n+        memory_region_ref(mr);\n+        return memory_region_get_ram_ptr(mr) + xlat;\n+    }\n+    return NULL;\n+}\n+\n int virtio_gpu_create_mapping_iov(VirtIOGPU *g,\n                                   uint32_t nr_entries, uint32_t offset,\n                                   struct virtio_gpu_ctrl_command *cmd,\n@@ -839,9 +856,7 @@ int virtio_gpu_create_mapping_iov(VirtIOGPU *g,\n \n         do {\n             len = l;\n-            map = dma_memory_map(VIRTIO_DEVICE(g)->dma_as, a, &len,\n-                                 DMA_DIRECTION_TO_DEVICE,\n-                                 MEMTXATTRS_UNSPECIFIED);\n+            map = virtio_gpu_dma_memory_map(g, cmd, a, &len);\n             if (!map) {\n                 qemu_log_mask(LOG_GUEST_ERROR, \"%s: failed to map MMIO memory for\"\n                               \" element %d\\n\", __func__, e);\n",
    "prefixes": [
        "v6",
        "02/11"
    ]
}