]> git.ipfire.org Git - thirdparty/qemu.git/log
thirdparty/qemu.git
7 weeks agoexec/cpu-all: remove this header
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:00 +0000 (21:59 -0700)] 
exec/cpu-all: remove this header

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-16-pierrick.bouvier@linaro.org>

7 weeks agoexec/cpu-all: transfer exec/cpu-common include to cpu.h headers
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:59 +0000 (21:58 -0700)] 
exec/cpu-all: transfer exec/cpu-common include to cpu.h headers

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-15-pierrick.bouvier@linaro.org>

7 weeks agoexec/cpu-all: remove exec/target_page include
Pierrick Bouvier [Mon, 31 Mar 2025 21:40:55 +0000 (16:40 -0500)] 
exec/cpu-all: remove exec/target_page include

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoexec/cpu-all: remove cpu include
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:58 +0000 (21:58 -0700)] 
exec/cpu-all: remove cpu include

Now we made sure important defines are included using their direct
path, we can remove cpu.h from cpu-all.h.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-14-pierrick.bouvier@linaro.org>

7 weeks agoaccel/tcg: fix missing includes for TARGET_HAS_PRECISE_SMC
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:57 +0000 (21:58 -0700)] 
accel/tcg: fix missing includes for TARGET_HAS_PRECISE_SMC

We prepare to remove cpu.h from cpu-all.h, which will transitively
remove it from accel/tcg/tb-internal.h, and thus from most of tcg
compilation units.

Note: this was caught by a test regression for s390x-softmmu.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-13-pierrick.bouvier@linaro.org>

7 weeks agoaccel/tcg: fix missing includes for TCG_GUEST_DEFAULT_MO
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:56 +0000 (21:58 -0700)] 
accel/tcg: fix missing includes for TCG_GUEST_DEFAULT_MO

We prepare to remove cpu.h from cpu-all.h, which will transitively
remove it from accel/tcg/tb-internal.h, and thus from most of tcg
compilation units.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-12-pierrick.bouvier@linaro.org>

7 weeks agoexec/cpu-all: remove exec/cpu-interrupt include
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:52 +0000 (21:58 -0700)] 
exec/cpu-all: remove exec/cpu-interrupt include

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-8-pierrick.bouvier@linaro.org>

7 weeks agoexec/cpu-all: remove tswap include
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:51 +0000 (21:58 -0700)] 
exec/cpu-all: remove tswap include

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-7-pierrick.bouvier@linaro.org>

7 weeks agoexec/cpu-all: remove exec/page-protection include
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:50 +0000 (21:58 -0700)] 
exec/cpu-all: remove exec/page-protection include

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-6-pierrick.bouvier@linaro.org>

7 weeks agoexec/cpu-all: remove system/memory include
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:49 +0000 (21:58 -0700)] 
exec/cpu-all: remove system/memory include

We include this header where needed. When includes set already have
ifdef CONFIG_USER_ONLY, we add it here, else, we don't condition the
include.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-5-pierrick.bouvier@linaro.org>

7 weeks agoinclude/exec/cpu-all: move compile time check for CPUArchState to cpu-target.c
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:48 +0000 (21:58 -0700)] 
include/exec/cpu-all: move compile time check for CPUArchState to cpu-target.c

Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-4-pierrick.bouvier@linaro.org>

7 weeks agoexec/cpu-all: move cpu_copy to linux-user/qemu.h
Pierrick Bouvier [Tue, 25 Mar 2025 04:58:47 +0000 (21:58 -0700)] 
exec/cpu-all: move cpu_copy to linux-user/qemu.h

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250325045915.994760-3-pierrick.bouvier@linaro.org>

7 weeks agopage-vary: Restrict scope of TARGET_PAGE_BITS_MIN
Richard Henderson [Fri, 28 Mar 2025 19:28:06 +0000 (14:28 -0500)] 
page-vary: Restrict scope of TARGET_PAGE_BITS_MIN

The only place we really need to know the minimum is within
page-vary-target.c.  Rename the target/arm TARGET_PAGE_BITS_MIN
to TARGET_PAGE_BITS_LEGACY to emphasize what it really means.
Move the assertions related to minimum page size as well.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agopage-vary: Move and rename qemu_target_page_bits_min
Richard Henderson [Thu, 27 Mar 2025 23:52:13 +0000 (18:52 -0500)] 
page-vary: Move and rename qemu_target_page_bits_min

Rename to migration_legacy_page_bits, to make it clear that
we cannot change the value without causing a migration break.
Move to page-vary.h and page-vary-target.c.
Define via TARGET_PAGE_BITS if not TARGET_PAGE_BITS_VARY.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Redefine tlb-flags with absolute values
Richard Henderson [Thu, 27 Mar 2025 20:05:12 +0000 (15:05 -0500)] 
include/exec: Redefine tlb-flags with absolute values

Don't base the values on TARGET_PAGE_BITS_MIN, but do verify
that TLB_FLAGS_MASK does not overlap minimum page size.
All targets now have the same placement for these flags,
simplifying mmu management when we enable heterogeneous systems.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Split out tlb-bounds.h
Richard Henderson [Thu, 27 Mar 2025 20:48:11 +0000 (15:48 -0500)] 
accel/tcg: Split out tlb-bounds.h

The CPU_TLB_DYN_{MIN,MAX}_BITS definitions are not required
outside of cputlb.c and translate-all.c.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Build translator.c twice
Richard Henderson [Thu, 27 Mar 2025 22:11:05 +0000 (17:11 -0500)] 
accel/tcg: Build translator.c twice

Drop some unnecessary includes.  Change the offsetof expressions
to be based on CPUState instead of ArchCPU.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agohw/core/cpu: Remove CPUClass::mmu_index()
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:36 +0000 (10:09 +0200)] 
hw/core/cpu: Remove CPUClass::mmu_index()

All targets have been converted to TCGCPUOps::mmu_index(),
remove the now unused CPUClass::mmu_index().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-24-philmd@linaro.org>

7 weeks agotarget/hexagon: Implement TCGCPUOps.mmu_index
Richard Henderson [Thu, 3 Apr 2025 15:44:13 +0000 (08:44 -0700)] 
target/hexagon: Implement TCGCPUOps.mmu_index

This hook is about to become mandatory.  Since hexagon
is still user-only, the implementation is trivial.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Brian Cain <brian.cain@oss.qualcomm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotarget/xtensa: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:35 +0000 (10:09 +0200)] 
target/xtensa: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-23-philmd@linaro.org>

7 weeks agotarget/tricore: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:34 +0000 (10:09 +0200)] 
target/tricore: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-22-philmd@linaro.org>

7 weeks agotarget/sparc: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:33 +0000 (10:09 +0200)] 
target/sparc: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-21-philmd@linaro.org>

7 weeks agotarget/sh4: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:32 +0000 (10:09 +0200)] 
target/sh4: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-20-philmd@linaro.org>

7 weeks agotarget/s390x: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:31 +0000 (10:09 +0200)] 
target/s390x: Restrict SoftMMU mmu_index() to TCG

Convert CPUClass::mmu_index() to TCGCPUOps::mmu_index(),
restricting s390x_cpu_mmu_index() to TCG #ifdef.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-19-philmd@linaro.org>

7 weeks agotarget/rx: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:30 +0000 (10:09 +0200)] 
target/rx: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-18-philmd@linaro.org>

7 weeks agotarget/riscv: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:29 +0000 (10:09 +0200)] 
target/riscv: Restrict SoftMMU mmu_index() to TCG

Move riscv_cpu_mmu_index() to the TCG-specific file,
convert CPUClass::mmu_index() to TCGCPUOps::mmu_index().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-17-philmd@linaro.org>

7 weeks agotarget/ppc: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:28 +0000 (10:09 +0200)] 
target/ppc: Restrict SoftMMU mmu_index() to TCG

Convert CPUClass::mmu_index() to TCGCPUOps::mmu_index(),
restricting ppc_cpu_mmu_index() to TCG #ifdef.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-16-philmd@linaro.org>

7 weeks agotarget/openrisc: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:27 +0000 (10:09 +0200)] 
target/openrisc: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-15-philmd@linaro.org>

7 weeks agotarget/mips: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:26 +0000 (10:09 +0200)] 
target/mips: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-14-philmd@linaro.org>

7 weeks agotarget/microblaze: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:25 +0000 (10:09 +0200)] 
target/microblaze: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-13-philmd@linaro.org>

7 weeks agotarget/m68k: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:24 +0000 (10:09 +0200)] 
target/m68k: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-12-philmd@linaro.org>

7 weeks agotarget/loongarch: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:23 +0000 (10:09 +0200)] 
target/loongarch: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-11-philmd@linaro.org>

7 weeks agotarget/i386: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:22 +0000 (10:09 +0200)] 
target/i386: Restrict SoftMMU mmu_index() to TCG

Move x86_cpu_mmu_index() to tcg-cpu.c, convert
CPUClass::mmu_index() to TCGCPUOps::mmu_index().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-10-philmd@linaro.org>

7 weeks agotarget/i386: Restrict cpu_mmu_index_kernel() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:21 +0000 (10:09 +0200)] 
target/i386: Restrict cpu_mmu_index_kernel() to TCG

Move cpu_mmu_index_kernel() to seg_helper.c.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-9-philmd@linaro.org>

7 weeks agotarget/i386: Remove unused cpu_(ldub, stb)_kernel macros
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:20 +0000 (10:09 +0200)] 
target/i386: Remove unused cpu_(ldub, stb)_kernel macros

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-8-philmd@linaro.org>

7 weeks agotarget/hppa: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:19 +0000 (10:09 +0200)] 
target/hppa: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-7-philmd@linaro.org>

7 weeks agotarget/avr: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:18 +0000 (10:09 +0200)] 
target/avr: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-6-philmd@linaro.org>

7 weeks agotarget/arm: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:17 +0000 (10:09 +0200)] 
target/arm: Restrict SoftMMU mmu_index() to TCG

Move arm_cpu_mmu_index() within CONFIG_TCG #ifdef'ry,
convert CPUClass::mmu_index() to TCGCPUOps::mmu_index().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-5-philmd@linaro.org>

7 weeks agotarget/alpha: Restrict SoftMMU mmu_index() to TCG
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:16 +0000 (10:09 +0200)] 
target/alpha: Restrict SoftMMU mmu_index() to TCG

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-4-philmd@linaro.org>

7 weeks agoaccel/tcg: Introduce TCGCPUOps::mmu_index() callback
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:15 +0000 (10:09 +0200)] 
accel/tcg: Introduce TCGCPUOps::mmu_index() callback

We'll move CPUClass::mmu_index() to TCGCPUOps::mmu_index().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-3-philmd@linaro.org>

7 weeks agohw/core/cpu: Update CPUClass::mmu_index docstring
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:09:14 +0000 (10:09 +0200)] 
hw/core/cpu: Update CPUClass::mmu_index docstring

Since commits 32a8ea12fab..90b7022e698 (target: "Split out
TARGET_env_mmu_index"), target's memory_rw_debug() callbacks
use the target's TARGET_env_mmu_index(), not the generic
CPUClass::mmu_index() callback. Update the documentation.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401080938.32278-2-philmd@linaro.org>

7 weeks agotarget/rx: Fix copy/paste typo (riscv -> rx)
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 07:20:52 +0000 (09:20 +0200)] 
target/rx: Fix copy/paste typo (riscv -> rx)

Rename riscv_cpu_mmu_index() -> rx_cpu_mmu_index().

Fixes: ef5cc166da1 ("target/rx: Populate CPUClass.mmu_index")
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250401072052.25892-1-philmd@linaro.org>

7 weeks agoaccel/tcg: Remove cpu-all.h, exec-all.h from tb-internal.h
Richard Henderson [Thu, 27 Mar 2025 22:07:09 +0000 (17:07 -0500)] 
accel/tcg: Remove cpu-all.h, exec-all.h from tb-internal.h

Not used by tb-internal.h, but add an include for
target_page.h in tb-maint.c.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Remove page_protect
Richard Henderson [Thu, 27 Mar 2025 21:48:09 +0000 (16:48 -0500)] 
accel/tcg: Remove page_protect

Merge the user-only page_protect function with the user-only
implementation of tb_lock_page0.  This avoids pulling
page-protection.h into tb-internal.h.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Move get_page_addr_code* declarations
Richard Henderson [Thu, 27 Mar 2025 21:28:08 +0000 (16:28 -0500)] 
accel/tcg: Move get_page_addr_code* declarations

Move the declarations from exec/exec-all.h to the
private accel/tcg/internal-common.h.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Move tb_{,set_}page_addr[01] to translation-block.h
Richard Henderson [Thu, 27 Mar 2025 21:11:09 +0000 (16:11 -0500)] 
include/exec: Move tb_{,set_}page_addr[01] to translation-block.h

Move the accessor functions for TranslationBlock
into the header related to the structure.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Move TLB_MMIO, TLB_DISCARD_WRITE to slow flags
Richard Henderson [Wed, 26 Mar 2025 03:22:14 +0000 (20:22 -0700)] 
include/exec: Move TLB_MMIO, TLB_DISCARD_WRITE to slow flags

Recover two bits from the inline flags.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Rebuild full flags in tlb_reset_dirty_range_locked
Richard Henderson [Wed, 26 Mar 2025 03:21:23 +0000 (20:21 -0700)] 
accel/tcg: Rebuild full flags in tlb_reset_dirty_range_locked

Undo the split between inline and slow flags before masking.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Pass CPUTLBEntryFull to tlb_reset_dirty_range_locked
Richard Henderson [Wed, 26 Mar 2025 03:10:42 +0000 (20:10 -0700)] 
accel/tcg: Pass CPUTLBEntryFull to tlb_reset_dirty_range_locked

While we're renaming things, don't modify addr; save it for
reuse in the qatomic_set.  Compute the host address into a
new local variable.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Fix argument types of tlb_reset_dirty
Richard Henderson [Wed, 26 Mar 2025 02:47:32 +0000 (19:47 -0700)] 
accel/tcg: Fix argument types of tlb_reset_dirty

The arguments to tlb_reset_dirty are host pointers.
The conversion from ram_addr_t was done in the sole
caller, tlb_reset_dirty_range_all.

Fixes: e554861766d ("exec: prepare for splitting")
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoexec/cpu-all: extract tlb flags defines to exec/tlb-flags.h
Pierrick Bouvier [Thu, 20 Mar 2025 22:29:34 +0000 (15:29 -0700)] 
exec/cpu-all: extract tlb flags defines to exec/tlb-flags.h

Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250320223002.2915728-3-pierrick.bouvier@linaro.org>

7 weeks agomeson: Only allow CONFIG_USER_ONLY from certain source sets
Richard Henderson [Thu, 13 Mar 2025 03:24:44 +0000 (20:24 -0700)] 
meson: Only allow CONFIG_USER_ONLY from certain source sets

Poison CONFIG_USER_ONLY and CONFIG_SOFTMMU unless
the compilation unit is in specific_ss, libuser_ss,
or libsystem_ss.  This is intended to prevent files
being incorrectly added to common_ss.

Remove #ifndef CONFIG_USER_ONLY / #error / #endif blocks.
All they do is trigger the poison error.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotarget/riscv: Remove ifndef CONFIG_USER_ONLY from cpu_cfg.h
Richard Henderson [Thu, 13 Mar 2025 03:23:18 +0000 (20:23 -0700)] 
target/riscv: Remove ifndef CONFIG_USER_ONLY from cpu_cfg.h

While RISCVCPUConfig.satp_mode is unused for user-only,
this header is used from disas/riscv.h, whose users are
only built once.  The savings of 4 bytes isn't worth it.

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/qemu: Remove ifndef CONFIG_USER_ONLY from accel.h
Richard Henderson [Thu, 13 Mar 2025 03:18:08 +0000 (20:18 -0700)] 
include/qemu: Remove ifndef CONFIG_USER_ONLY from accel.h

While setup_post and has_memory will not be used for
CONFIG_USER_ONLY, let the struct have constant layout.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/system: Remove ifndef CONFIG_USER_ONLY in qtest.h
Richard Henderson [Thu, 13 Mar 2025 03:15:41 +0000 (20:15 -0700)] 
include/system: Remove ifndef CONFIG_USER_ONLY in qtest.h

This is include/system, so CONFIG_USER_ONLY will never be true.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Protect icount_enabled from poisoned symbols
Richard Henderson [Fri, 14 Mar 2025 20:15:07 +0000 (13:15 -0700)] 
include/exec: Protect icount_enabled from poisoned symbols

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Split out icount.h
Richard Henderson [Fri, 14 Mar 2025 19:57:31 +0000 (12:57 -0700)] 
include/exec: Split out icount.h

Split icount stuff from system/cpu-timers.h.
There are 17 files which only require icount.h, 7 that only
require cpu-timers.h, and 7 that require both.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/hw/s390x: Remove ifndef CONFIG_USER_ONLY in css.h
Richard Henderson [Thu, 13 Mar 2025 03:12:17 +0000 (20:12 -0700)] 
include/hw/s390x: Remove ifndef CONFIG_USER_ONLY in css.h

We were hiding a number of declarations from user-only,
although it hurts nothing to allow them.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/hw/intc: Remove ifndef CONFIG_USER_ONLY from armv7m_nvic.h
Richard Henderson [Thu, 13 Mar 2025 03:11:41 +0000 (20:11 -0700)] 
include/hw/intc: Remove ifndef CONFIG_USER_ONLY from armv7m_nvic.h

We were hiding a number of declarations from user-only,
although it hurts nothing to allow them.  The inlines
for user-only are unused.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/hw/core: Drop ifndef CONFIG_USER_ONLY from cpu.h
Richard Henderson [Thu, 13 Mar 2025 03:10:02 +0000 (20:10 -0700)] 
include/hw/core: Drop ifndef CONFIG_USER_ONLY from cpu.h

We were hiding a number of declarations from user-only,
although it hurts nothing to allow them.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Drop ifndef CONFIG_USER_ONLY from cpu-common.h
Richard Henderson [Thu, 13 Mar 2025 03:08:44 +0000 (20:08 -0700)] 
include/exec: Drop ifndef CONFIG_USER_ONLY from cpu-common.h

We were hiding a number of declarations from user-only,
although it hurts nothing to allow them.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoplugins: Move api.c, core.c to libuser_ss, libsystem_ss
Richard Henderson [Thu, 13 Mar 2025 02:46:44 +0000 (19:46 -0700)] 
plugins: Move api.c, core.c to libuser_ss, libsystem_ss

Headers used by these files require CONFIG_USER_ONLY.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agosystem: Move most files to libsystem_ss
Richard Henderson [Thu, 13 Mar 2025 02:45:50 +0000 (19:45 -0700)] 
system: Move most files to libsystem_ss

Some of the headers used require CONFIG_USER_ONLY.
Do not move vl.c, because it has other include dependencies
that are present in system_ss.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agohw/core: Move unconditional files to libsystem_ss, libuser_ss
Richard Henderson [Thu, 13 Mar 2025 02:45:02 +0000 (19:45 -0700)] 
hw/core: Move unconditional files to libsystem_ss, libuser_ss

Many of the headers used by these require CONFIG_USER_ONLY.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Split out watchpoint.h
Richard Henderson [Fri, 14 Mar 2025 17:39:19 +0000 (10:39 -0700)] 
include/exec: Split out watchpoint.h

Relatively few objects in qemu care about watchpoints, so split
out to a new header.  Removes an instance of CONFIG_USER_ONLY
from hw/core/cpu.h.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agosemihosting: Assert is_user in user-only semihosting_enabled
Richard Henderson [Thu, 20 Mar 2025 23:09:51 +0000 (16:09 -0700)] 
semihosting: Assert is_user in user-only semihosting_enabled

Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agosemihosting: Move user-only implementation out-of-line
Richard Henderson [Thu, 13 Mar 2025 00:16:05 +0000 (17:16 -0700)] 
semihosting: Move user-only implementation out-of-line

Avoid testing CONFIG_USER_ONLY in semihost.h.
The only function that's required is semihosting_enabled.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotarget/xtensa: Restrict semihosting tests to system mode
Richard Henderson [Mon, 17 Mar 2025 16:36:32 +0000 (09:36 -0700)] 
target/xtensa: Restrict semihosting tests to system mode

We do not set CONFIG_SEMIHOSTING in
configs/targets/xtensa*-linux-user.mak.

Do not raise SIGILL for user-only unconditionally.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotarget/mips: Restrict semihosting tests to system mode
Richard Henderson [Sun, 16 Mar 2025 22:48:07 +0000 (15:48 -0700)] 
target/mips: Restrict semihosting tests to system mode

We do not set CONFIG_SEMIHOSTING in
configs/targets/mips*-linux-user.mak.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Use libuser_ss and libsystem_ss
Richard Henderson [Wed, 12 Mar 2025 21:55:21 +0000 (14:55 -0700)] 
accel/tcg: Use libuser_ss and libsystem_ss

While some of these files are built exactly once, due
to being in only libuser_ss or libsystem_ss, some of
the includes that they depend on require CONFIG_USER_ONLY.
So make use of the common infrastructure to allow that.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agogdbstub: Move syscalls.c out of common_ss
Richard Henderson [Wed, 12 Mar 2025 21:37:07 +0000 (14:37 -0700)] 
gdbstub: Move syscalls.c out of common_ss

Copy to libuser_ss and libsystem_ss.
This file uses semihosting/semihost.h, which has separate
implementations with and without CONFIG_USER_ONLY.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agomeson: Introduce top-level libuser_ss and libsystem_ss
Richard Henderson [Wed, 12 Mar 2025 21:33:07 +0000 (14:33 -0700)] 
meson: Introduce top-level libuser_ss and libsystem_ss

We already have two subdirectories for which we need
to build files twice, for user vs system modes.
Move this handling to the top level.

This cannot be combined with user_ss or system_ss,
because the formulation has not been extended to support
configuration symbols.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoexec: Restrict memory-internal.h to system/
Philippe Mathieu-Daudé [Mon, 17 Mar 2025 16:13:29 +0000 (17:13 +0100)] 
exec: Restrict memory-internal.h to system/

Only file units within the system/ directory need access to
"memory-internal.h". Restrict its scope by moving it there.

The comment from commit 9d70618c684 ("memory-internal.h:
Remove obsolete claim that header is obsolete") is now obsolete,
remove it.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250317161329.40300-3-philmd@linaro.org>

7 weeks agoaccel/tcg: Remove unnecesary inclusion of memory-internal.h in cputlb.c
Philippe Mathieu-Daudé [Mon, 17 Mar 2025 16:13:28 +0000 (17:13 +0100)] 
accel/tcg: Remove unnecesary inclusion of memory-internal.h in cputlb.c

At some point cputlb.c stopped depending on the
"exec/memory-internal.h" header. Clean that now.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250317161329.40300-2-philmd@linaro.org>

7 weeks agoinclude/system: Move exec/ramblock.h to system/ramblock.h
Richard Henderson [Thu, 13 Mar 2025 02:03:02 +0000 (19:03 -0700)] 
include/system: Move exec/ramblock.h to system/ramblock.h

Convert the existing includes with sed.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/system: Move exec/ram_addr.h to system/ram_addr.h
Richard Henderson [Thu, 13 Mar 2025 00:42:03 +0000 (17:42 -0700)] 
include/system: Move exec/ram_addr.h to system/ram_addr.h

Convert the existing includes with sed.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/system: Move exec/ioport.h to system/ioport.h
Richard Henderson [Wed, 12 Mar 2025 19:49:38 +0000 (12:49 -0700)] 
include/system: Move exec/ioport.h to system/ioport.h

Convert the existing includes with sed.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/system: Move exec/address-spaces.h to system/address-spaces.h
Richard Henderson [Wed, 12 Mar 2025 19:31:54 +0000 (12:31 -0700)] 
include/system: Move exec/address-spaces.h to system/address-spaces.h

Convert the existing includes with sed.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/system: Move exec/memory.h to system/memory.h
Richard Henderson [Wed, 12 Mar 2025 19:11:21 +0000 (12:11 -0700)] 
include/system: Move exec/memory.h to system/memory.h

Convert the existing includes with

  sed -i ,exec/memory.h,system/memory.h,g

Move the include within cpu-all.h into a !CONFIG_USER_ONLY block.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Split out mmap-lock.h
Richard Henderson [Wed, 12 Mar 2025 17:36:39 +0000 (10:36 -0700)] 
include/exec: Split out mmap-lock.h

Split out mmap_lock, et al from page-protection.h
to a new header.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Remove mmap_lock/unlock from watchpoint.c
Richard Henderson [Wed, 12 Mar 2025 17:37:23 +0000 (10:37 -0700)] 
accel/tcg: Remove mmap_lock/unlock from watchpoint.c

The mmap_lock is user-only, whereas watchpoint.c
is only compiled for system mode.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Implement translator_ld*_end
Richard Henderson [Wed, 12 Mar 2025 13:04:13 +0000 (06:04 -0700)] 
accel/tcg: Implement translator_ld*_end

Add a new family of translator load functions which take
an absolute endianness value in the form of MO_BE/MO_LE.
Expand the other translator_ld* functions on top of this.
Remove exec/tswap.h from translator.c.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Use cpu_ld*_code_mmu in translator.c
Richard Henderson [Wed, 12 Mar 2025 03:21:26 +0000 (20:21 -0700)] 
accel/tcg: Use cpu_ld*_code_mmu in translator.c

Cache the mmu index in DisasContextBase.
Perform the read on host endianness, which lets us
share code with the translator_ld fast path.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Perform aligned atomic reads in translator_ld
Richard Henderson [Wed, 12 Mar 2025 01:34:58 +0000 (18:34 -0700)] 
accel/tcg: Perform aligned atomic reads in translator_ld

Perform aligned atomic reads in translator_ld, if possible.
According to

https://lore.kernel.org/qemu-devel/20240607101403.1109-1-jim.shu@sifive.com/

this is required for RISC-V Ziccif.

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Inline *_code memory operations
Richard Henderson [Tue, 11 Mar 2025 21:34:28 +0000 (14:34 -0700)] 
include/exec: Inline *_code memory operations

These need to be per-target for 'abi_ptr' and endianness.
These expand inline to the *_mmu api with a lookup of the
target's cpu_mmu_index() and ra == 0.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Inline *_data memory operations
Richard Henderson [Tue, 11 Mar 2025 21:08:55 +0000 (14:08 -0700)] 
include/exec: Inline *_data memory operations

These need to be per-target for 'abi_ptr'.  Expand inline to
the *_data_ra api with ra == 0.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Inline *_data_ra memory operations
Richard Henderson [Tue, 11 Mar 2025 20:56:02 +0000 (13:56 -0700)] 
include/exec: Inline *_data_ra memory operations

These need to be per-target for 'abi_ptr'.  Expand inline to
the *_mmuidx_ra api with a lookup of the target's cpu_mmu_index().

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Inline *_mmuidx_ra memory operations
Richard Henderson [Tue, 11 Mar 2025 20:45:24 +0000 (13:45 -0700)] 
include/exec: Inline *_mmuidx_ra memory operations

These need to be per-target for 'abi_ptr'.  Expand inline to
the *_mmu api with trivial massaging of the arguments.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Split out accel/tcg/cpu-mmu-index.h
Richard Henderson [Thu, 13 Mar 2025 03:04:59 +0000 (20:04 -0700)] 
include/exec: Split out accel/tcg/cpu-mmu-index.h

The implementation of cpu_mmu_index was split between cpu-common.h
and cpu-all.h, depending on CONFIG_USER_ONLY.  We already have the
plumbing common to user and system mode.  Using MMU_USER_IDX
requires the cpu.h for a specific target, and so is restricted to
when we're compiling per-target.

Include the new header only where needed.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Split out cpu-ldst-common.h
Richard Henderson [Tue, 11 Mar 2025 20:03:37 +0000 (13:03 -0700)] 
include/exec: Split out cpu-ldst-common.h

Split out the *_mmu api, which no longer uses
target specific argument types.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoinclude/exec: Use vaddr for *_mmu guest memory access routines
Richard Henderson [Tue, 11 Mar 2025 19:52:36 +0000 (12:52 -0700)] 
include/exec: Use vaddr for *_mmu guest memory access routines

Use vaddr only for the newest api, because it has the least
number of uses and therefore is the easiest to audit.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Fix cpu_ld*_code_mmu for user mode
Richard Henderson [Sat, 15 Mar 2025 01:20:00 +0000 (18:20 -0700)] 
accel/tcg: Fix cpu_ld*_code_mmu for user mode

These routines are buggy in multiple ways:
  - Use of target-endian loads, then a bswap that
    depends on the host endiannness.
  - A non-unwinding code load must set_helper_retaddr 1,
    which is magic within adjust_signal_pc.
  - cpu_ldq_code_mmu used MMU_DATA_LOAD

The bugs are hidden because all current uses of cpu_ld*_code_mmu
are from system mode.

Fixes: 2899062614a ("accel/tcg: Add cpu_ld*_code_mmu")
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Build plugin-gen.c once
Richard Henderson [Mon, 10 Mar 2025 20:15:22 +0000 (13:15 -0700)] 
accel/tcg: Build plugin-gen.c once

We assert that env immediately follows CPUState in cpu-all.h.
Change the offsetof expressions to be based on CPUState instead
of ArchCPU.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoaccel/tcg: Build user-exec-stub.c once
Richard Henderson [Mon, 10 Mar 2025 19:57:24 +0000 (12:57 -0700)] 
accel/tcg: Build user-exec-stub.c once

CONFIG_USER_ONLY == !CONFIG_SYSTEM_ONLY.
Therefore it's cleaner to just add to user_ss.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agosystem/ioport: make compilation unit common
Pierrick Bouvier [Mon, 17 Mar 2025 18:34:17 +0000 (11:34 -0700)] 
system/ioport: make compilation unit common

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250317183417.285700-19-pierrick.bouvier@linaro.org>

7 weeks agosystem/memory: make compilation unit common
Pierrick Bouvier [Mon, 17 Mar 2025 18:34:16 +0000 (11:34 -0700)] 
system/memory: make compilation unit common

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250317183417.285700-18-pierrick.bouvier@linaro.org>

7 weeks agoinclude/exec/memory: move devend functions to memory-internal.h
Pierrick Bouvier [Mon, 17 Mar 2025 18:34:15 +0000 (11:34 -0700)] 
include/exec/memory: move devend functions to memory-internal.h

Only system/physmem.c and system/memory.c use those functions, so we can
move then to internal header.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250317183417.285700-17-pierrick.bouvier@linaro.org>

7 weeks agoinclude/exec/memory: extract devend_big_endian from devend_memop
Pierrick Bouvier [Mon, 17 Mar 2025 18:34:14 +0000 (11:34 -0700)] 
include/exec/memory: extract devend_big_endian from devend_memop

we'll use it in system/memory.c.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250317183417.285700-16-pierrick.bouvier@linaro.org>

7 weeks agosystem/physmem: compilation unit is now common to all targets
Pierrick Bouvier [Mon, 17 Mar 2025 18:34:13 +0000 (11:34 -0700)] 
system/physmem: compilation unit is now common to all targets

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250317183417.285700-15-pierrick.bouvier@linaro.org>

7 weeks agosystem/xen: remove inline stubs
Pierrick Bouvier [Mon, 17 Mar 2025 18:34:12 +0000 (11:34 -0700)] 
system/xen: remove inline stubs

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250317183417.285700-14-pierrick.bouvier@linaro.org>