Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2227572/?format=api
{ "id": 2227572, "url": "http://patchwork.ozlabs.org/api/patches/2227572/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260424000544.9617-2-lucaaamaral@gmail.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": "<20260424000544.9617-2-lucaaamaral@gmail.com>", "list_archive_url": null, "date": "2026-04-24T00:05:42", "name": "[v5,1/3] virtio-gpu: validate host page alignment for MAP_FIXED blobs", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "39526a5f4097411393e7c806570da2c895ffb1ac", "submitter": { "id": 92822, "url": "http://patchwork.ozlabs.org/api/people/92822/?format=api", "name": "Lucas Amaral", "email": "lucaaamaral@gmail.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260424000544.9617-2-lucaaamaral@gmail.com/mbox/", "series": [ { "id": 501263, "url": "http://patchwork.ozlabs.org/api/series/501263/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=501263", "date": "2026-04-24T00:05:43", "name": "hvf: map granule abstraction, configurable IPA, and MAP_FIXED alignment fix", "version": 5, "mbox": "http://patchwork.ozlabs.org/series/501263/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2227572/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2227572/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=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=J2Y4Oi3s;\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=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists1p.gnu.org (lists1p.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 4g1tYl0p9Vz1yHv\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 10:07:06 +1000 (AEST)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wG43W-0006fa-Fd; Thu, 23 Apr 2026 20:06:02 -0400", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <lucaaamaral@gmail.com>)\n id 1wG43R-0006ex-Rg\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 20:05:57 -0400", "from mail-dy1-x132f.google.com ([2607:f8b0:4864:20::132f])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <lucaaamaral@gmail.com>)\n id 1wG43Q-0000yW-5h\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 20:05:57 -0400", "by mail-dy1-x132f.google.com with SMTP id\n 5a478bee46e88-2d8ffdc31d0so6824948eec.0\n for <qemu-devel@nongnu.org>; Thu, 23 Apr 2026 17:05:55 -0700 (PDT)", "from localhost.localdomain ([2804:7f4:c030:44a8:c4b9:45be:963d:f3a])\n by smtp.gmail.com with ESMTPSA id\n 5a478bee46e88-2ea8e4b373dsm12958055eec.6.2026.04.23.17.05.51\n (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);\n Thu, 23 Apr 2026 17:05:54 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776989154; x=1777593954; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=Okui3+LoiEw6Ead0/iU3+dwFPXpVpxuXn0Pb9e4RdJE=;\n b=J2Y4Oi3sVRMaT2q9TiQJHMk+PjqyMUozfm/XifvWHdu+iDnIYDE2MowwDq/Nyx341b\n Y7feFqXWeP7tXB4/7Q160fgsQjLW0GUv+PxqUrNR3m4+hB5IPpPSBi2PY64ODVVwsQCz\n 34Go+jHqQ5C3R9hamV0oHN6R7GyoSJ5EqqxyPv/HNrxLR3ShGseRvy0qsFgKx7Jpw8df\n nLHr921CTLtFwTmD3XtJch3eL4OZh2HLOVgwOVOiUynFMnc+cz6mIygJ9T6nG3ShbiBF\n BXWifCBngWdssWB7HmWPHXVVh/Bk3hKwVlGgJTimlsQQvQ5KDxwnhEL0V6KGoidc2uVu\n rb9g==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776989154; x=1777593954;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=Okui3+LoiEw6Ead0/iU3+dwFPXpVpxuXn0Pb9e4RdJE=;\n b=g6tnOGBlbVpmzLiHHnpDsy/fRPmQOVzIaLXNDGL87QEC7El+T/QLoX3waRVOUoUOWK\n 8aoTpTNhp4rbtpLvusJYneXqFd+Olb0g+QxCWtkmBWRwAVa3oUDb5PD54/h5ztPG121o\n 3NjGlxAzVblZHlJr1EQRxU9YEYZeUo0maLy+Q1B3COcGi8HStsJ7CCiGJngDBjN0x4b0\n ZcuPEKAFsC71nDQNImwgfr7PAagF17mGuVKi6KRj3A0YxB6UlZNDrJtDQhd+k9LyofMh\n 70k6zvq9egOSvC8in5XN1MM6S/cjswyBrCnMd1q2CS3iL5/L2il3I2xk/T+x+4jO79wt\n rMRg==", "X-Gm-Message-State": "AOJu0YxlpT29kbAVIY+B6SHORh1rWfXhnj1PxXYNjFMoB+wNcZOw5bL9\n 3pbmDGJrnU0F61F6XbIt5qxEJilgMDAtGvIbBNVFB5grGkyUfHKZD1u6sPu4SIILSXo=", "X-Gm-Gg": "AeBDieuBcYTUGr6NQUGzUWS0dNcqdtlf3DW18sunm/HuT5isxAkss/qPcx7JKHXhFlz\n nsz3KNm21dFUYb+oxHFSbhn09D0pSbP7cpLjQyLzyBTj7SX3m8OR/cZpzhAesGzpAyIlH6X+sgT\n vpoHm7z+c6BfYR5jLy+aoc1qLLBQHbz+Z+xO5UzVsYpI9Y2Z5oBTrsooWQBh8CG3RiMxQrrHgma\n fE7hDN0/vkFO4SL5g9Kw88Nr1RN6xCubHhQhV0Ijlld8Df9yoYcfFrTOXMGRN8QIvQ72IOxKrxv\n hlbaLWPNWJ1DxnAyvgaGVMfsTW9H3zOnNW3e7iyBe5bakTuQ6dK4Pn7+2y+IqyF15wloSa67QRK\n sjRUQN4QBlZxw0PGUFZn8fPjdYL83gqXPpBGeduBjzgqdb4ljxcOO8nw3/ZnVPpdcBGrM9OfQTk\n 08NTgV+DVewy2R9Q9WDzHDbJ7hWSSIRLeImmHX7RrAGZuGari8/grMqMv/YZfU7t3IH4RbpsJu", "X-Received": "by 2002:a05:693c:2b04:b0:2d1:a3ea:d8d4 with SMTP id\n 5a478bee46e88-2e4647d03a2mr16651570eec.6.1776989154285;\n Thu, 23 Apr 2026 17:05:54 -0700 (PDT)", "From": "Lucas Amaral <lucaaamaral@gmail.com>", "To": "qemu-devel@nongnu.org", "Cc": "qemu-arm@nongnu.org, agraf@csgraf.de, peter.maydell@linaro.org,\n mohamed@unpredictable.fr, alex.bennee@linaro.org,\n Lucas Amaral <lucaaamaral@gmail.com>", "Subject": "[PATCH v5 1/3] virtio-gpu: validate host page alignment for MAP_FIXED\n blobs", "Date": "Thu, 23 Apr 2026 21:05:42 -0300", "Message-ID": "<20260424000544.9617-2-lucaaamaral@gmail.com>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20260424000544.9617-1-lucaaamaral@gmail.com>", "References": "<20260424000544.9617-1-lucaaamaral@gmail.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=2607:f8b0:4864:20::132f;\n envelope-from=lucaaamaral@gmail.com; helo=mail-dy1-x132f.google.com", "X-Spam_score_int": "-20", "X-Spam_score": "-2.1", "X-Spam_bar": "--", "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=unavailable 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": "Commit 4eb0aace (\"virtio-gpu: Support mapping hostmem blobs with\nmap_fixed\") uses mmap(MAP_FIXED) to map blob resources into a\npre-allocated hostmem region. Both the offset and size passed to\nmmap must be aligned to the host page size, but the code does not\nvalidate this.\n\nOn hosts where qemu_real_host_page_size() exceeds the guest's page\nsize (e.g. ARM64 with 16KB or 64KB pages, macOS ARM64), the guest\nmay provide blob offsets aligned to its own page size (4KB) but not\nto the host's. This causes mmap(MAP_FIXED) to fail with EINVAL,\nand the subsequent unmap (which also uses mmap MAP_FIXED) fails the\nsame way, producing:\n\n virtio_gpu_virgl_unmap_resource_blob: failed to unmap(fixed)\n virgl resource: Invalid argument\n\nAdd an alignment check before attempting MAP_FIXED. When the offset\nor blob size is not host-page-aligned, skip the MAP_FIXED path and\nfall through to the existing subregion method, which handles any\nalignment.\n\nFixes: 4eb0aace (\"virtio-gpu: Support mapping hostmem blobs with map_fixed\")\nSigned-off-by: Lucas Amaral <lucaaamaral@gmail.com>\n---\n hw/display/virtio-gpu-virgl.c | 45 +++++++++++++++++++++--------------\n 1 file changed, 27 insertions(+), 18 deletions(-)", "diff": "diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c\nindex b7a2d160..f6583b48 100644\n--- a/hw/display/virtio-gpu-virgl.c\n+++ b/hw/display/virtio-gpu-virgl.c\n@@ -185,25 +185,34 @@ virtio_gpu_virgl_map_resource_blob(VirtIOGPU *g,\n return -EBUSY;\n }\n \n- ret = virgl_renderer_resource_map_fixed(res->base.resource_id,\n- gl->hostmem_mmap + offset);\n- switch (ret) {\n- case 0:\n- res->map_fixed = gl->hostmem_mmap + offset;\n- return 0;\n-\n- case -EOPNOTSUPP:\n- /*\n- * MAP_FIXED is unsupported by this resource.\n- * Mapping falls back to a blob subregion method in that case.\n- */\n- break;\n+ /*\n+ * MAP_FIXED requires host-page-aligned offset and size. Hosts with\n+ * page sizes larger than the guest's (e.g. 16KB on ARM64) may receive\n+ * non-aligned blob offsets. Fall through to the subregion method when\n+ * alignment requirements are not met.\n+ */\n+ if (QEMU_IS_ALIGNED(offset, qemu_real_host_page_size()) &&\n+ QEMU_IS_ALIGNED(res->base.blob_size, qemu_real_host_page_size())) {\n+ ret = virgl_renderer_resource_map_fixed(res->base.resource_id,\n+ gl->hostmem_mmap + offset);\n+ switch (ret) {\n+ case 0:\n+ res->map_fixed = gl->hostmem_mmap + offset;\n+ return 0;\n+\n+ case -EOPNOTSUPP:\n+ /*\n+ * MAP_FIXED is unsupported by this resource.\n+ * Mapping falls back to a blob subregion method in that case.\n+ */\n+ break;\n \n- default:\n- qemu_log_mask(LOG_GUEST_ERROR,\n- \"%s: failed to map(fixed) virgl resource: %s\\n\",\n- __func__, strerror(-ret));\n- return ret;\n+ default:\n+ qemu_log_mask(LOG_GUEST_ERROR,\n+ \"%s: failed to map(fixed) virgl resource: %s\\n\",\n+ __func__, strerror(-ret));\n+ return ret;\n+ }\n }\n #endif\n \n", "prefixes": [ "v5", "1/3" ] }