Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2175766/?format=api
{ "id": 2175766, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175766/?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": "<20251218212814.61445-3-philmd@linaro.org>", "date": "2025-12-18T21:28:12", "name": "[2/4] system/memory: Introduce LD/ST helpers with @m suffix (for MemOp)", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "ce780860b9b0694ba34e24dc87d478e739aa9a91", "submitter": { "id": 85046, "url": "http://patchwork.ozlabs.org/api/1.0/people/85046/?format=api", "name": "Philippe Mathieu-Daudé", "email": "philmd@linaro.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20251218212814.61445-3-philmd@linaro.org/mbox/", "series": [ { "id": 485917, "url": "http://patchwork.ozlabs.org/api/1.0/series/485917/?format=api", "date": "2025-12-18T21:28:11", "name": "system/memory: Allow restricting legacy 'native-endian' APIs", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/485917/mbox/" } ], "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2175766/checks/", "tags": {}, "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=BBj2nRGY;\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 4dXP2b2TDkz1y2r\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 19 Dec 2025 08:29:59 +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 1vWLYD-0001Gt-JE; Thu, 18 Dec 2025 16:28:45 -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 <philmd@linaro.org>) id 1vWLY7-0001Eo-DM\n for qemu-devel@nongnu.org; Thu, 18 Dec 2025 16:28:39 -0500", "from mail-wm1-x344.google.com ([2a00:1450:4864:20::344])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1vWLY5-0007G1-4X\n for qemu-devel@nongnu.org; Thu, 18 Dec 2025 16:28:38 -0500", "by mail-wm1-x344.google.com with SMTP id\n 5b1f17b1804b1-477770019e4so9220835e9.3\n for <qemu-devel@nongnu.org>; Thu, 18 Dec 2025 13:28:36 -0800 (PST)", "from localhost.localdomain (88-187-86-199.subs.proxad.net.\n [88.187.86.199]) by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-4324eaa0908sm1003301f8f.31.2025.12.18.13.28.32\n (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);\n Thu, 18 Dec 2025 13:28:33 -0800 (PST)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1766093315; x=1766698115; 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=+gtJF0mQnqytiehBxnmWHOQY5+iP99pLlE/lksFMG9Q=;\n b=BBj2nRGYR4NGl2jFnkzo4YvUCquAVO6SAtGJLNyKymuCHOZrNfsGRPuCRUyWKDVlCc\n zUQUijOnMSjKiM3I/SEcNYHMQf6j0lCEuDLn17euxOElPITypW1kkG7/rTPpdBAhhogv\n 0zvrg8l3LzI4Qfqnm1cgIf1KZiPIDPrKdzZwEfPLjchvx1mLgFb4ZMhfQs6aLFVb9HwJ\n +YfgbyDKwUyHY6Qm5DjPlOqXsbhennHDU3kUd5WSwpQOEVYlIwRVoOr0kiwIWVENrvo/\n 2RCHNGlrbyM1yGIoFWz7TAJ/vo6wKsm3yaeB4TK8+jYuHb1gnLRV8WooqGp6WSZEmWr8\n 545g==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1766093315; x=1766698115;\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=+gtJF0mQnqytiehBxnmWHOQY5+iP99pLlE/lksFMG9Q=;\n b=pTNGpnhNGCk4PLVawvL3fE4VF6EBJ9vyxtRkLaywAIocer6HVwau5u9hLA5+2Zcvwz\n NYrN/L/zgwNNFrPls+/S2qUZ560/srF5I1Y8p1dWKY7eFvHfHErGoRUD0fzXZ4gzm/2i\n 71VLulPOOMjZmTdMTJwmIgXRqb/SPEKpgl7hlxWR5ljWq7SFVh7nEvt4Ker7lnJuVn/m\n IUXK39bVBJ0J7y4gIZ4uR/q/K9EKPyWilWWanHkXENc1N1NL5mlZGbXHGdvS9/+8tgvR\n jDaRFT24poshvCU/x5g8VO+UhDQJQ/C7mK1XgQHxSI2xVlkzhbt+CAvKc3LWgX6Aka4z\n ZWZA==", "X-Gm-Message-State": "AOJu0YwkHSNtzIYUtIEIBzt7YAn2Vx67MpNT9YLzfnJ4qAlLPI17RF4f\n UjqDQF7RC4Rr5xXa7/vYk+WbwoMMMK2fL9fIVoBWeIc3RLVuba4jbVoLiEwliB2UWsntJSvtLYR\n nIe1PETk=", "X-Gm-Gg": "AY/fxX4qRwlqilBoUaN8AoLio3vdIgZ3Ow/VbF5xtdq8D6rvPV4bGLprjYZXnz+iHPl\n OHiOtLps8IDWikadreDi/Io2R4G1srsGrDZN6FeQRjORKBwMwaEY5Hp2InjQp+dJgVilxCKgI+v\n ZMy1e15bRj7ZvL4OtY3CgA7EiW3Y/WNAnOYa8ewrLlvqVi38j2OLEwevuFd8YXMu79Yhz2xfsFr\n mJZcw2PxqdY5j2zCKlEsW9UG0+sd806rIgAubwK0jJ+jxZKrm1U6Cyi1SdqVzsn4e0SJc7S5CS6\n Bn5myX25Jmeh1l0xMS8Ij/VdFndJOgNbl9+AedLgBk874pVmZJrDsVTWBtnzofGLHsmk+Cl3Yks\n xRv07EViGQcaeYzjdTi/l00CQgYw+oMb5iQKp7VatVVGEUhyOfsqRj+xX+98W3pmclAtniZPZVw\n vhfDqKJdSxWScCP/8q3QFemS0iXUpYNi0K2YHJIs0GMs4p9+zoTzmDPZtsgr+5khNqP6VnkCU=", "X-Google-Smtp-Source": "\n AGHT+IFtA4Hc0GbI11866J97XNlInb01Wxb2Ifj3fBHxMuibqLwqKv9yTVGzYWw8G1fi653OPTL7uQ==", "X-Received": "by 2002:a05:6000:420c:b0:430:f5ed:83f3 with SMTP id\n ffacd0b85a97d-4324e4c7284mr833896f8f.9.1766093314722;\n Thu, 18 Dec 2025 13:28:34 -0800 (PST)", "From": "=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>", "To": "qemu-devel@nongnu.org", "Cc": "Anton Johansson <anjo@rev.ng>,\n Richard Henderson <richard.henderson@linaro.org>,\n Daniel Henrique Barboza <dbarboza@ventanamicro.com>,\n Pierrick Bouvier <pierrick.bouvier@linaro.org>, =?utf-8?q?Philippe_Mathieu-?=\n\t=?utf-8?q?Daud=C3=A9?= <philmd@linaro.org>,\n Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>,\n David Hildenbrand <david@kernel.org>", "Subject": "[PATCH 2/4] system/memory: Introduce LD/ST helpers with @m suffix\n (for MemOp)", "Date": "Thu, 18 Dec 2025 22:28:12 +0100", "Message-ID": "<20251218212814.61445-3-philmd@linaro.org>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20251218212814.61445-1-philmd@linaro.org>", "References": "<20251218212814.61445-1-philmd@linaro.org>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=2a00:1450:4864:20::344;\n envelope-from=philmd@linaro.org; helo=mail-wm1-x344.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=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": "Introduce load/store helpers taking a MemOp argument (which can\ninclude size and endianness). Use the -m suffix to differentiate\nwith others.\n\nSigned-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>\n---\n docs/devel/loads-stores.rst | 10 ++++---\n include/exec/memory_ldst_cached.h.inc | 30 ++++++++++++++++++++\n include/system/memory_ldst_endian.h.inc | 4 +++\n include/system/memory_ldst_phys_endian.h.inc | 10 +++++++\n 4 files changed, 50 insertions(+), 4 deletions(-)", "diff": "diff --git a/docs/devel/loads-stores.rst b/docs/devel/loads-stores.rst\nindex c906c6509ee..9b8ee4a5d34 100644\n--- a/docs/devel/loads-stores.rst\n+++ b/docs/devel/loads-stores.rst\n@@ -375,6 +375,7 @@ succeeded using a MemTxResult return code.\n - ``w`` : 16 bits\n - ``l`` : 32 bits\n - ``q`` : 64 bits\n+ - ``m`` : MO_SIZE\n \n ``endian``\n - ``le`` : little endian\n@@ -384,8 +385,8 @@ The ``_{endian}`` suffix is omitted for byte accesses.\n \n Regexes for git grep:\n - ``\\<address_space_\\(read\\|write\\|rw\\)\\>``\n- - ``\\<address_space_ldu\\?[bwql]\\(_[lb]e\\)\\?\\>``\n- - ``\\<address_space_st[bwql]\\(_[lb]e\\)\\?\\>``\n+ - ``\\<address_space_ldu\\?[bwlqm]\\(_[lb]e\\)\\?\\>``\n+ - ``\\<address_space_st[bwlqm]\\(_[lb]e\\)\\?\\>``\n \n ``address_space_write_rom``\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~\n@@ -431,6 +432,7 @@ device doing the access has no way to report such an error.\n - ``w`` : 16 bits\n - ``l`` : 32 bits\n - ``q`` : 64 bits\n+ - ``m`` : MO_SIZE\n \n ``endian``\n - ``le`` : little endian\n@@ -439,8 +441,8 @@ device doing the access has no way to report such an error.\n The ``_{endian}_`` infix is omitted for byte accesses.\n \n Regexes for git grep:\n- - ``\\<ldu\\?[bwlq]\\(_[bl]e\\)\\?_phys\\>``\n- - ``\\<st[bwlq]\\(_[bl]e\\)\\?_phys\\>``\n+ - ``\\<ldu\\?[bwlqm]\\(_[bl]e\\)\\?_phys\\>``\n+ - ``\\<st[bwlqm]\\(_[bl]e\\)\\?_phys\\>``\n \n ``cpu_physical_memory_*``\n ~~~~~~~~~~~~~~~~~~~~~~~~~\ndiff --git a/include/exec/memory_ldst_cached.h.inc b/include/exec/memory_ldst_cached.h.inc\nindex d7834f852c4..21f89fe09fa 100644\n--- a/include/exec/memory_ldst_cached.h.inc\n+++ b/include/exec/memory_ldst_cached.h.inc\n@@ -24,6 +24,21 @@\n #define LD_P(size) \\\n glue(glue(ld, size), glue(ENDIANNESS, _p))\n \n+static inline uint64_t ADDRESS_SPACE_LD_CACHED(m)(MemoryRegionCache *cache,\n+ MemOp mop, hwaddr addr,\n+ MemTxAttrs attrs,\n+ MemTxResult *result)\n+{\n+ const unsigned size = memop_size(mop);\n+ assert(addr < cache->len && size <= cache->len - addr);\n+ fuzz_dma_read_cb(cache->xlat + addr, size, cache->mrs.mr);\n+ if (likely(cache->ptr)) {\n+ return LD_P(n)(cache->ptr + addr, size);\n+ } else {\n+ return ADDRESS_SPACE_LD_CACHED_SLOW(m)(cache, mop, addr, attrs, result);\n+ }\n+}\n+\n static inline uint16_t ADDRESS_SPACE_LD_CACHED(uw)(MemoryRegionCache *cache,\n hwaddr addr, MemTxAttrs attrs, MemTxResult *result)\n {\n@@ -71,6 +86,21 @@ static inline uint64_t ADDRESS_SPACE_LD_CACHED(q)(MemoryRegionCache *cache,\n #define ST_P(size) \\\n glue(glue(st, size), glue(ENDIANNESS, _p))\n \n+static inline void ADDRESS_SPACE_ST_CACHED(m)(MemoryRegionCache *cache,\n+ MemOp mop,\n+ hwaddr addr, uint64_t val,\n+ MemTxAttrs attrs,\n+ MemTxResult *result)\n+{\n+ const unsigned size = memop_size(mop);\n+ assert(addr < cache->len && size <= cache->len - addr);\n+ if (likely(cache->ptr)) {\n+ ST_P(n)(cache->ptr + addr, val, size);\n+ } else {\n+ ADDRESS_SPACE_ST_CACHED_SLOW(m)(cache, mop, addr, val, attrs, result);\n+ }\n+}\n+\n static inline void ADDRESS_SPACE_ST_CACHED(w)(MemoryRegionCache *cache,\n hwaddr addr, uint16_t val, MemTxAttrs attrs, MemTxResult *result)\n {\ndiff --git a/include/system/memory_ldst_endian.h.inc b/include/system/memory_ldst_endian.h.inc\nindex ec86e42afbc..9455b973663 100644\n--- a/include/system/memory_ldst_endian.h.inc\n+++ b/include/system/memory_ldst_endian.h.inc\n@@ -20,12 +20,16 @@ uint32_t ADDRESS_SPACE_LD(l)(ARG1_DECL, hwaddr addr,\n MemTxAttrs attrs, MemTxResult *result);\n uint64_t ADDRESS_SPACE_LD(q)(ARG1_DECL, hwaddr addr,\n MemTxAttrs attrs, MemTxResult *result);\n+uint64_t ADDRESS_SPACE_LD(m)(ARG1_DECL, MemOp mop, hwaddr addr,\n+ MemTxAttrs attrs, MemTxResult *result);\n void ADDRESS_SPACE_ST(w)(ARG1_DECL, hwaddr addr, uint16_t val,\n MemTxAttrs attrs, MemTxResult *result);\n void ADDRESS_SPACE_ST(l)(ARG1_DECL, hwaddr addr, uint32_t val,\n MemTxAttrs attrs, MemTxResult *result);\n void ADDRESS_SPACE_ST(q)(ARG1_DECL, hwaddr addr, uint64_t val,\n MemTxAttrs attrs, MemTxResult *result);\n+void ADDRESS_SPACE_ST(m)(ARG1_DECL, MemOp mop, hwaddr addr, uint64_t val,\n+ MemTxAttrs attrs, MemTxResult *result);\n \n #undef ADDRESS_SPACE_LD\n #undef ADDRESS_SPACE_ST\ndiff --git a/include/system/memory_ldst_phys_endian.h.inc b/include/system/memory_ldst_phys_endian.h.inc\nindex 9603d886867..659f38f7112 100644\n--- a/include/system/memory_ldst_phys_endian.h.inc\n+++ b/include/system/memory_ldst_phys_endian.h.inc\n@@ -34,6 +34,11 @@ static inline uint64_t LD_PHYS(q)(ARG1_DECL, hwaddr addr)\n return ADDRESS_SPACE_LD(q)(ARG1, addr, MEMTXATTRS_UNSPECIFIED, NULL);\n }\n \n+static inline uint32_t LD_PHYS(m)(ARG1_DECL, MemOp op, hwaddr addr)\n+{\n+ return ADDRESS_SPACE_LD(m)(ARG1, op, addr, MEMTXATTRS_UNSPECIFIED, NULL);\n+}\n+\n static inline void ST_PHYS(w)(ARG1_DECL, hwaddr addr, uint16_t val)\n {\n ADDRESS_SPACE_ST(w)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL);\n@@ -49,6 +54,11 @@ static inline void ST_PHYS(q)(ARG1_DECL, hwaddr addr, uint64_t val)\n ADDRESS_SPACE_ST(q)(ARG1, addr, val, MEMTXATTRS_UNSPECIFIED, NULL);\n }\n \n+static inline void ST_PHYS(m)(ARG1_DECL, MemOp op, hwaddr addr, uint64_t val)\n+{\n+ ADDRESS_SPACE_ST(m)(ARG1, op, addr, val, MEMTXATTRS_UNSPECIFIED, NULL);\n+}\n+\n #undef LD_PHYS\n #undef ST_PHYS\n #undef ADDRESS_SPACE_LD\n", "prefixes": [ "2/4" ] }