Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2224638/?format=api
{ "id": 2224638, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2224638/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260417173105.1648172-18-peter.maydell@linaro.org/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/1.2/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": "<20260417173105.1648172-18-peter.maydell@linaro.org>", "list_archive_url": null, "date": "2026-04-17T17:31:05", "name": "[17/17] system/physmem: Use translate_for_debug() in cpu_memory_rw_debug()", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "3c6bf65137873667c3334dab31f94aa10cc82dd0", "submitter": { "id": 5111, "url": "http://patchwork.ozlabs.org/api/1.2/people/5111/?format=api", "name": "Peter Maydell", "email": "peter.maydell@linaro.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260417173105.1648172-18-peter.maydell@linaro.org/mbox/", "series": [ { "id": 500380, "url": "http://patchwork.ozlabs.org/api/1.2/series/500380/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=500380", "date": "2026-04-17T17:30:51", "name": "Handle sub-page granularity in cpu_memory_rw_debug()", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/500380/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2224638/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2224638/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=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=X8/EfE1t;\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 4fy27p5zgpz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 03:34:46 +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 1wDn3E-0007bL-AU; Fri, 17 Apr 2026 13:32:20 -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 <peter.maydell@linaro.org>)\n id 1wDn2p-0006wZ-8F\n for qemu-devel@nongnu.org; Fri, 17 Apr 2026 13:31:57 -0400", "from mail-wm1-x333.google.com ([2a00:1450:4864:20::333])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)\n id 1wDn2k-0002PP-FK\n for qemu-devel@nongnu.org; Fri, 17 Apr 2026 13:31:53 -0400", "by mail-wm1-x333.google.com with SMTP id\n 5b1f17b1804b1-488ba6366a7so12499885e9.0\n for <qemu-devel@nongnu.org>; Fri, 17 Apr 2026 10:31:47 -0700 (PDT)", "from lanath.. (wildly.archaic.org.uk. [81.2.115.145])\n by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43fe4e4ffa8sm5819650f8f.35.2026.04.17.10.31.45\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 17 Apr 2026 10:31:45 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1776447107; x=1777051907; 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=Ke72IjMhlpeM5Zph56TJ0UtJ9eIRtrZU4oDNR1sGd5A=;\n b=X8/EfE1tcMCNoNoLdfVhmwa7QL6z5dUIkuyhfAc/DGNdG+cMh9sxgUDFwF0py0amfX\n sQ6pV2cBh6zz/ImbudwBblPGZZ+ed52t3vn/ecmiQY52UkrAqpe9JrpzVTEhWDE7HgJR\n XGXVQCyZxruOA//M1DFYnADluPnBDcRJo4eu0y0RI2oRClEB6af0xbQz3EOR2EivDsWv\n dxaSHa0ZzvfOqQaqRXyKMjQF97bvkiQRE/eDhZtk4176p+iPnrxt0kh580j/OLxErQD0\n SpWeYObNEWmc0XWtnc7pWAH2+JY5/kucTwqRNqVDQV9lrWj+VQtNNhDX5jBIcVkWIQXL\n 3o3Q==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776447107; x=1777051907;\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=Ke72IjMhlpeM5Zph56TJ0UtJ9eIRtrZU4oDNR1sGd5A=;\n b=ZRZGgTl/lx8Lk1CK0gU2wzH8DodtcftuT67GZthLT003AXtRWon8DgmS7xxsLQM+HC\n Z2iBsHQIU8K9UPUOjsdWYQbnuO9dl0zivy3mtsV0t9BeuNUCDXeaCMzsKQ6G4caMq7sq\n pbaNvrTaqr+f0cZdBxrtm578S9jc6GZsyftvxpWjrB47PneLJwtvSFwtA4pHP3q2VwB8\n wJimh9iqwdAhpUkLV3cP5ZdW73Hpnj1+o5Tsi5eHNbmAJ7C1il+5NTBGpAy0eH1agfV9\n 3eGnH4rdSojZ2GCr/AjC5zyPyIOWE1M8cSLTlwQm53kWrOQWq4abdEMJ5EpmOEQdpZ18\n nOfA==", "X-Forwarded-Encrypted": "i=1;\n AFNElJ8kh9eRAqnJieHWEHuUv8eTpI/EMveakHUOLJ3uqCdSpmQFzs9Mkvz+30zEOWXKlP5tdzf8B5pXuHea@nongnu.org", "X-Gm-Message-State": "AOJu0YyyPtfdA+4P6ppp42Q7mOyEwtCGgqnUM5m6DBpU2yMPhhNuPVd9\n 9yzRrdL9pwqFLdHDRvHxoUTgcNHAxk8hUjZ83oeM2etNaqck03CKE1XI4c3Z0Mytkro=", "X-Gm-Gg": "AeBDievcriOtxvYl1wCEpl8qLfKEZwX/BzatjtubcX+d69A/p2nLKyq0AEvEgdNKd5t\n 55uFufYiu6hNyjbvltO1HjRxO/eB5tdhCh7YjHnTja0cJbPLZzVMS5gc33Cj0NsP1Vi/4M4sMss\n 8e6TBMh3TqRcYGliH1622+rSuDZwvJvVNzp9lucori6LF21uqgChtxN8B7dZNtixHWtUe5piA6I\n v2kEGOjQzj9IS+nael4oSMgmKQvf4xL9W2E7ujvzVEvkaFIdXis7DbiXqw498BpZ7hm8u5KWRWk\n b4j67c4QTWoLpy51FJvDOR1tpWGCgt+o3PEBsxIv7AqMNDtCQfOACogctAI/yfflQQqu06f+ETS\n t73uTSlMehnhJxU6jF4coP8/Dt4slSkIuHEoAeNdAPeR/Ipq9JWOiqxcOX6lH8/cb0OOTSLPOxA\n c6zQvkdkrBJdUMGBStdylK467ZT8KH/JlBVBGZSEm884cWwmFDiSV47L+r9QzbnIAtzf08fky3D\n YtglA8yb+BEnMYu999HCLdG0vUPGk4Jj2K9T8PSsg==", "X-Received": "by 2002:a05:600c:31a9:b0:489:95:3dd2 with SMTP id\n 5b1f17b1804b1-48900953e9bmr1952275e9.8.1776447106681;\n Fri, 17 Apr 2026 10:31:46 -0700 (PDT)", "From": "Peter Maydell <peter.maydell@linaro.org>", "To": "qemu-arm@nongnu.org,\n\tqemu-devel@nongnu.org", "Cc": "qemu-ppc@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,\n\t=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,\n Yanan Wang <wangyanan55@huawei.com>, Zhao Liu <zhao1.liu@intel.com>,\n Paolo Bonzini <pbonzini@redhat.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n \"Dr. David Alan Gilbert\" <dave@treblig.org>,\n =?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n Alexandre Iooss <erdnaxe@crans.org>, Mahmoud Mandour <ma.mandourr@gmail.com>,\n Peter Xu <peterx@redhat.com>, \"Edgar E. Iglesias\" <edgar.iglesias@gmail.com>,\n Jiaxun Yang <jiaxun.yang@flygoat.com>, Nicholas Piggin <npiggin@gmail.com>,\n Chinmay Rath <rathc@linux.ibm.com>, Glenn Miles <milesg@linux.ibm.com>,\n Palmer Dabbelt <palmer@dabbelt.com>,\n Alistair Francis <alistair.francis@wdc.com>, Weiwei Li <liwei1518@gmail.com>,\n Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,\n Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,\n Chao Liu <chao.liu.zevorn@gmail.com>, Ilya Leoshkevich <iii@linux.ibm.com>,\n David Hildenbrand <david@kernel.org>,\n Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,\n Artyom Tarasenko <atar4qemu@gmail.com>", "Subject": "[PATCH 17/17] system/physmem: Use translate_for_debug() in\n cpu_memory_rw_debug()", "Date": "Fri, 17 Apr 2026 18:31:05 +0100", "Message-ID": "<20260417173105.1648172-18-peter.maydell@linaro.org>", "X-Mailer": "git-send-email 2.43.0", "In-Reply-To": "<20260417173105.1648172-1-peter.maydell@linaro.org>", "References": "<20260417173105.1648172-1-peter.maydell@linaro.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=2a00:1450:4864:20::333;\n envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.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,\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": "Currently cpu_memory_rw_debug() assumes page-granularity for translations,\nand it works in a loop where each iteration translates for the vaddr\nrounded down to a page boundary and then copies up to the end of the\npage boundary.\n\nRewrite it to use the new cpu_translate_for_debug(): we no longer want\nto round down the input address, and the boundary we copy up to is now\ndetermined by the lg_page_size it returns rather than being assumed\nto be page-sized.\n\nThis, together with the implementation of translate_for_debug for\nArm targets, fixes the bug where semihosting would incorrectly\nfail to access parameter blocks that were in memory where the\nstart of the 4K region they were in was inaccessible due to MPU\nregion settings, even if the parameter block itself was readable.\n\nResolves: https://gitlab.com/qemu-project/qemu/-/work_items/3292\nSigned-off-by: Peter Maydell <peter.maydell@linaro.org>\n---\n system/physmem.c | 38 ++++++++++++++++++++++++--------------\n 1 file changed, 24 insertions(+), 14 deletions(-)", "diff": "diff --git a/system/physmem.c b/system/physmem.c\nindex f2d9a4ff8f..45c3a926cf 100644\n--- a/system/physmem.c\n+++ b/system/physmem.c\n@@ -4036,28 +4036,38 @@ address_space_write_cached_slow(MemoryRegionCache *cache, hwaddr addr,\n int cpu_memory_rw_debug(CPUState *cpu, vaddr addr,\n void *ptr, size_t len, bool is_write)\n {\n- hwaddr phys_addr;\n- vaddr l, page;\n uint8_t *buf = ptr;\n \n cpu_synchronize_state(cpu);\n while (len > 0) {\n int asidx;\n- MemTxAttrs attrs;\n+ TranslateForDebugResult tres;\n MemTxResult res;\n+ hwaddr blk_base, blk_size, l;\n \n- page = addr & TARGET_PAGE_MASK;\n- phys_addr = cpu_get_phys_addr_attrs_debug(cpu, page, &attrs);\n- asidx = cpu_asidx_from_attrs(cpu, attrs);\n- /* if no physical page mapped, return an error */\n- if (phys_addr == -1)\n+ if (!cpu_translate_for_debug(cpu, addr, &tres)) {\n+ /* Return error if no physical page mapped */\n return -1;\n- l = (page + TARGET_PAGE_SIZE) - addr;\n- if (l > len)\n- l = len;\n- phys_addr += (addr & ~TARGET_PAGE_MASK);\n- res = address_space_rw(cpu->cpu_ases[asidx].as, phys_addr, attrs, buf,\n- l, is_write);\n+ }\n+ asidx = cpu_asidx_from_attrs(cpu, tres.attrs);\n+ /*\n+ * Clamp the amount we read to not go beyond a page even if\n+ * the CPU returned a larger lg_page_size, in case this access\n+ * is to a memory-mapped IO region.\n+ */\n+ tres.lg_page_size = MIN(tres.lg_page_size, TARGET_PAGE_BITS);\n+ /*\n+ * Find the length in bytes from tres.physaddr to the end of the\n+ * block whose size is 1 << tres.lg_page_size; we will access\n+ * that much in one go.\n+ */\n+ blk_size = 1ULL << tres.lg_page_size;\n+ blk_base = ROUND_DOWN(tres.physaddr, blk_size);\n+ l = blk_base + blk_size - tres.physaddr;\n+ l = MIN(l, len);\n+\n+ res = address_space_rw(cpu->cpu_ases[asidx].as, tres.physaddr,\n+ tres.attrs, buf, l, is_write);\n if (res != MEMTX_OK) {\n return -1;\n }\n", "prefixes": [ "17/17" ] }