From patchwork Mon Mar 17 18:33:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierrick Bouvier X-Patchwork-Id: 874175 Delivered-To: patch@linaro.org Received: by 2002:a5d:4308:0:b0:38f:210b:807b with SMTP id h8csp2146674wrq; Mon, 17 Mar 2025 11:36:12 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWKPvJcwL1I2dhvyRMV/A7pTBqXAcMxEYXfhoCg7zlzmg4w6lw4jlw1f/ZxlHmnMmITxX1Z6Q==@linaro.org X-Google-Smtp-Source: AGHT+IGskbYw9Ou7mjmDm5hARYBECRnmF0X3Io5Esh8PwVa2PGa6GoobY/2AFFmW+CMWjzC5cvSv X-Received: by 2002:a05:620a:4555:b0:7c5:562d:cd01 with SMTP id af79cd13be357-7c59b1b4e50mr77715685a.16.1742236572743; Mon, 17 Mar 2025 11:36:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1742236572; cv=none; d=google.com; s=arc-20240605; b=TNw2C3oKrKZtIy5q7ZNMTsgV8YY8ygGK4Zw1o8x+vuOj1oydSd7K8tXQkYbv1ov53/ qrQHtHDE9psP7g34NHx0NdzJ9SLl+XtuYEF3x7pkcytq1fDwR6k0khBx3HkvixZMS7Wx nmmKOVldDpQqZTcGSo9ApIlBv7Lk/vWfRQ8cd5ED0++nEiP11yVbKQOAYYqwBbllOuXA MWY2I58NUtG9k0A6A06kwVXS7Tqv97Q6Myx7n10tsk9lA0MGdUO/buWPwn5XTjcNRocx DKu5AKbifzj9jKCv6EbeV72JcdZv+90H7vtBWNmxI42q96l/tTG/OhqZA2YaDtycGgDR Edow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:dkim-signature; bh=RPbHwvloYIySCZWmnoL8Q2AUPe8llNmEPWBrsL/waLI=; fh=VA667rDBaVWM8Te9IvKB7F5X0gZcxYsweQ/ZVp5kO3s=; b=C0uHANUzlepgMVECkByerkOIBZjOizdf32FGYq91WW5uDQsQVRs3fwSRh55yIVNgvK F99loj9nMFOxRhRFRlSjIJsXke4r5JLQNbobu3+Ilm7ylpnUQorZpTR9E9i1ix2Is8Ol 4tDXe7FJ0IC8GeRPYvj+/SDrgr7JJjL7t4cN3PeqkEr7wLxfnr9jQUFZkZljBf6oHS13 0M4WCtkcwC+mWeYsQVIwoFW2PxiW9+cqHcDEzcxQ5mPXqJ32GRBVzcQwkYcN9u3FYycB S77dSeRJzc1O3RI8vPRU72ZJuMNW3xeANLLL3a9YSXw+ab6iCuMF2rkBN9tH/3YrnHOr v8Nw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vGYbSPI7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7c573d1998asi1002510085a.536.2025.03.17.11.36.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 Mar 2025 11:36:12 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=vGYbSPI7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tuFIb-0004Qw-Kv; Mon, 17 Mar 2025 14:34:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tuFIU-0004PD-1H for qemu-devel@nongnu.org; Mon, 17 Mar 2025 14:34:46 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tuFIG-00068q-MO for qemu-devel@nongnu.org; Mon, 17 Mar 2025 14:34:44 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-22622ddcc35so20268075ad.2 for ; Mon, 17 Mar 2025 11:34:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742236465; x=1742841265; darn=nongnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=RPbHwvloYIySCZWmnoL8Q2AUPe8llNmEPWBrsL/waLI=; b=vGYbSPI7QPk4hOer0pr3bcrcT7Bb/B/quFzVvsiyEBmHE/Pf2sk/dvbeG+dAYtrGFZ TPWwCGOHRbm3TmFab94y1Qz/59HHqI6Hny6dkXugHo8pnCujcYcwUGPLqVBD/Q+U7wRA lQ0sdodHSQ/ZtR/Ki6R24S98txQG8rgTcXPrKFNirTqRG0SFbUjNPQFHqqODjDojPTae mkydrDbe45/kwOsbWY9ADtlpFitk5DsXFgCHsaKim7OWwIbGfU2DBbJr1/SWoHt7l56E 07N+fnuSf6KYeaSEzr0PwFkgnuHUX0e0ahisUdcMezzwLvAxCNOyfX07Qrx4lvgrk8hD Swlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742236465; x=1742841265; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=RPbHwvloYIySCZWmnoL8Q2AUPe8llNmEPWBrsL/waLI=; b=FzBHM0o3qeuxFZvFsfj16Z7/9105eDmLf7E8+vsN4K0/MOBjWXyVFc5/tW+vBmDdt6 K135cucYWxZaSmmBH+olB99Q6w9wEU1yFAENEjDo9fX66STwOUFhgggFSo4PfT7jyTyB wCxmPkOvb0JVbmlY1AM1TifQBgkkrBGUMzYMQNK4kAiDy/BSGJsAc62HvjPal7cp8BzQ iqK99LHg1GhBmgL1opVPyZbjXXKzGNC1bCv0cq1MP2yqN/MAXR0cLLBNjpg2bPRX2nO7 VFrkLCODCkoZHF+AQz5abh5JBUnlvfeZH6Eyr3CcTxgqNkN9mauKO++AXMFRBD4mHr0b aoWQ== X-Gm-Message-State: AOJu0YyXYOpCH2FnZQLNECl8+rvXkHuyn3t80NU1+M4AtNgcmsLGxFV+ JzRwXnNXdEiInbUP6gDx3LdEw2Ym0oBtMc8YFCx/Fh0pzuXPvPN7qzhNHh8+yCmu0mRHdL100J9 K X-Gm-Gg: ASbGnct9p3/rQRtbs73e48hjcbHYGcR9QPwnXtLWy0aPvD0nQV10q+z60Upry1mdPna wVluuMuATt0so7gXqufNek0ejlepaFOlRH8iDG4y3M6TxTJu/VbGS8E1bzrsQorywtCOo8jn64W 6JenKR/S4LaSGKu+VtwrBK/ulmbnnL8G1UdLNfFPvdjTiIrCb2aObH8nf7AZz8a3Sw00C2mZPHs /4yTBUpI3ETOcQqtfv3D/fc+QQl4wH8f5vZ7buPOc7JS/zUVwKN2lUfSYaxT3UclGIpnWVEzQC0 zID73+zcYG/0vz8/QAuw8jqYXPmwpqiO115YFRJaSxzK X-Received: by 2002:a05:6a20:6a0c:b0:1f5:8903:860f with SMTP id adf61e73a8af0-1fa4428f303mr888720637.14.1742236464910; Mon, 17 Mar 2025 11:34:24 -0700 (PDT) Received: from pc.. ([38.39.164.180]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73711695a2esm8188770b3a.144.2025.03.17.11.34.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Mar 2025 11:34:24 -0700 (PDT) From: Pierrick Bouvier To: qemu-devel@nongnu.org Cc: Paul Durrant , xen-devel@lists.xenproject.org, David Hildenbrand , "Edgar E. Iglesias" , qemu-riscv@nongnu.org, Liu Zhiwei , Paolo Bonzini , Harsh Prateek Bora , alex.bennee@linaro.org, manos.pitsidianakis@linaro.org, Daniel Henrique Barboza , Richard Henderson , Alistair Francis , qemu-ppc@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Weiwei Li , kvm@vger.kernel.org, Palmer Dabbelt , Peter Xu , Yoshinori Sato , Anthony PERARD , Stefano Stabellini , Nicholas Piggin , Pierrick Bouvier Subject: [PATCH v6 00/18] make system memory API available for common code Date: Mon, 17 Mar 2025 11:33:59 -0700 Message-Id: <20250317183417.285700-1-pierrick.bouvier@linaro.org> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=pierrick.bouvier@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org The main goal of this series is to be able to call any memory ld/st function from code that is *not* target dependent. As a positive side effect, we can turn related system compilation units into common code. The first 5 patches remove dependency of memory API to cpu headers and remove dependency to target specific code. This could be a series on its own, but it's great to be able to turn system memory compilation units into common code to make sure it can't regress, and prove it achieves the desired result. The next patches remove more dependencies on cpu headers (exec-all, memory-internal, ram_addr). Then, we add access to a needed function from kvm, some xen stubs, and we finally can turn our compilation units into common code. Every commit was tested to build correctly for all targets (on windows, linux, macos), and the series was fully tested by running all tests we have (linux, x86_64 host). v2: - reorder first commits (tswap change first, so memory cached functions can use it) - move st/ld*_p functions to tswap instead of bswap - add define for target_words_bigendian when COMPILING_PER_TARGET, equals to TARGET_BIG_ENDIAN (avoid overhead in target code) - rewrite devend_memop - remove useless exec-all.h in concerned patch - extract devend_big_endian function to reuse in system/memory.c - rewrite changes to system/memory.c v3: - move devend functions to memory_internal.h - completed description for commits removing cpu.h dependency v4: - rebase on top of master * missing include in 'codebase: prepare to remove cpu.h from exec/exec-all.h' * meson build conflict v5: - remove extra xen stub xen_invalidate_map_cache() - edit xen stubs commit message v6: - remove xen inline stubs from headers Pierrick Bouvier (18): exec/tswap: target code can use TARGET_BIG_ENDIAN instead of target_words_bigendian() exec/tswap: implement {ld,st}.*_p as functions instead of macros exec/memory_ldst: extract memory_ldst declarations from cpu-all.h exec/memory_ldst_phys: extract memory_ldst_phys declarations from cpu-all.h exec/memory.h: make devend_memop "target defines" agnostic codebase: prepare to remove cpu.h from exec/exec-all.h exec/exec-all: remove dependency on cpu.h exec/memory-internal: remove dependency on cpu.h exec/ram_addr: remove dependency on cpu.h system/kvm: make kvm_flush_coalesced_mmio_buffer() accessible for common code exec/ram_addr: call xen_hvm_modified_memory only if xen is enabled hw/xen: add stubs for various functions system/xen: remove inline stubs system/physmem: compilation unit is now common to all targets include/exec/memory: extract devend_big_endian from devend_memop include/exec/memory: move devend functions to memory-internal.h system/memory: make compilation unit common system/ioport: make compilation unit common include/exec/cpu-all.h | 66 ----------------------- include/exec/exec-all.h | 1 - include/exec/memory-internal.h | 21 +++++++- include/exec/memory.h | 30 ++++------- include/exec/ram_addr.h | 11 ++-- include/exec/tswap.h | 81 +++++++++++++++++++++++++++-- include/system/kvm.h | 6 +-- include/system/xen-mapcache.h | 41 --------------- include/system/xen.h | 21 ++------ include/tcg/tcg-op.h | 1 + target/ppc/helper_regs.h | 2 + include/exec/memory_ldst.h.inc | 4 -- include/exec/memory_ldst_phys.h.inc | 5 +- cpu-target.c | 1 + hw/ppc/spapr_nested.c | 1 + hw/sh4/sh7750.c | 1 + hw/xen/xen_stubs.c | 51 ++++++++++++++++++ page-vary-target.c | 2 +- system/ioport.c | 1 - system/memory.c | 17 ++---- target/ppc/tcg-excp_helper.c | 1 + target/riscv/bitmanip_helper.c | 2 +- hw/xen/meson.build | 3 ++ system/meson.build | 6 +-- 24 files changed, 191 insertions(+), 185 deletions(-) create mode 100644 hw/xen/xen_stubs.c Reviewed-by: Richard Henderson Reviewed-by: Anthony PERARD