Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2202633/?format=api
{ "id": 2202633, "url": "http://patchwork.ozlabs.org/api/patches/2202633/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260227221632.827046-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": "<20260227221632.827046-3-vivek.kasireddy@intel.com>", "list_archive_url": null, "date": "2026-02-27T22:13:48", "name": "[v8,02/10] 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": "Vivek Kasireddy", "email": "vivek.kasireddy@intel.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260227221632.827046-3-vivek.kasireddy@intel.com/mbox/", "series": [ { "id": 493824, "url": "http://patchwork.ozlabs.org/api/series/493824/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=493824", "date": "2026-02-27T22:13:46", "name": "vfio: Create dmabuf from multiple VFIO ranges and use it in virtio-gpu", "version": 8, "mbox": "http://patchwork.ozlabs.org/series/493824/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2202633/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2202633/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=bxSWjjSz;\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 4fN2qn5gdSz1xxx\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 28 Feb 2026 09:21:57 +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 1vw6Bc-000643-ID; Fri, 27 Feb 2026 17:19:52 -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 1vw6Ba-00063m-P8\n for qemu-devel@nongnu.org; Fri, 27 Feb 2026 17:19:51 -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 1vw6BY-0007ml-Oe\n for qemu-devel@nongnu.org; Fri, 27 Feb 2026 17:19:50 -0500", "from fmviesa003.fm.intel.com ([10.60.135.143])\n by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Feb 2026 14:19:40 -0800", "from vkasired-desk2.fm.intel.com ([10.105.128.132])\n by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Feb 2026 14:19:40 -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=1772230789; x=1803766789;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=lYWaP1kFmLOPTRi7iW/x1sxii0x816fC62gZjXLi8LA=;\n b=bxSWjjSzkSYA9RVpv4bDiglpYgJ1QB9TOkQDCmqEW2eHipFIl/txY/gk\n 29x+cQLYZztibDXH7KOMSJlXEwkR7MlsnkzUJHwnRQYHLsJyzUmC3wO6d\n 2P6jAtHpWwpPGiOo0vnbJsafVnH+32xUZqDnlTVdMy7/B3i3d/WUto4Uf\n IXhVwj6wxug6G5b8eCnO8ArQqN3y98/zibJfnq+aGRb0Y2PV0kKmjTU0u\n 6tdkuU1vdNYyG2/xMTBWz/gt1cO8SYj74TTDvlf+7XIksqHazgAE46rmk\n 1TAiWvWkjwqkX7hdPhGAhix/8TRyq/9ATymBku90RR0G+dSlrfHxm+Jpf Q==;", "X-CSE-ConnectionGUID": [ "B8lLo1vORSG7NMPc+l6E7g==", "udaJMluJTZKqf5kGTm4e/Q==" ], "X-CSE-MsgGUID": [ "izsXlQnOTDWxF2ZcOvm4NQ==", "HDsMqSXNR8SnSxS1J458Ww==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6800,10657,11714\"; a=\"73509333\"", "E=Sophos;i=\"6.21,314,1763452800\"; d=\"scan'208\";a=\"73509333\"" ], "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 v8 02/10] virtio-gpu: Find hva for Guest's DMA addr associated\n with a ram device", "Date": "Fri, 27 Feb 2026 14:13:48 -0800", "Message-ID": "<20260227221632.827046-3-vivek.kasireddy@intel.com>", "X-Mailer": "git-send-email 2.53.0", "In-Reply-To": "<20260227221632.827046-1-vivek.kasireddy@intel.com>", "References": "<20260227221632.827046-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": "-32", "X-Spam_score": "-3.3", "X-Spam_bar": "---", "X-Spam_report": "(-3.3 / 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_CERTIFIED_BLOCKED=0.706,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.401, 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 f20111fa57..f5c6a7deb9 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": [ "v8", "02/10" ] }