]> git.ipfire.org Git - thirdparty/qemu.git/log
thirdparty/qemu.git
7 weeks agotcg: Define guest_default_memory_order in TCGCPUOps
Philippe Mathieu-Daudé [Fri, 21 Mar 2025 18:01:52 +0000 (19:01 +0100)] 
tcg: Define guest_default_memory_order in TCGCPUOps

Add the TCGCPUOps::guest_default_memory_order field and have
each target initialize it.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotcg: Simplify tcg_req_mo() macro
Philippe Mathieu-Daudé [Fri, 21 Mar 2025 11:16:28 +0000 (12:16 +0100)] 
tcg: Simplify tcg_req_mo() macro

Now that TCG_GUEST_DEFAULT_MO is always defined,
simplify the tcg_req_mo() macro.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotcg: Always define TCG_GUEST_DEFAULT_MO
Philippe Mathieu-Daudé [Fri, 21 Mar 2025 11:10:45 +0000 (12:10 +0100)] 
tcg: Always define TCG_GUEST_DEFAULT_MO

We only require the TCG_GUEST_DEFAULT_MO for MTTCG-enabled
frontends, otherwise we use a default value of TCG_MO_ALL.

In order to simplify, require the definition for all targets,
defining it for hexagon, m68k, rx, sh4 and tricore.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoexec: Do not include 'accel/tcg/cpu-ldst.h' in 'exec-all.h'
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:27:42 +0000 (10:27 +0200)] 
exec: Do not include 'accel/tcg/cpu-ldst.h' in 'exec-all.h'

Only 2 files requiring "accel/tcg/cpu-ldst.h" API do not
include it:
- accel/tcg/cpu-exec.c
- target/arm/tcg/sve_helper.c
Include it there and remove it from "exec/exec-all.h".

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoexec: Restrict 'cpu_ldst.h' to accel/tcg/
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:14:36 +0000 (10:14 +0200)] 
exec: Restrict 'cpu_ldst.h' to accel/tcg/

Mechanical change using:

  $ sed -i -e 's,exec/cpu_ldst,accel/tcg/cpu-ldst,' \
        $(git grep -l exec/cpu_ldst.h)

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agoexec: Restrict 'cpu-ldst-common.h' to accel/tcg/
Philippe Mathieu-Daudé [Tue, 1 Apr 2025 08:13:20 +0000 (10:13 +0200)] 
exec: Restrict 'cpu-ldst-common.h' to accel/tcg/

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotcg: Always define TARGET_INSN_START_EXTRA_WORDS
Philippe Mathieu-Daudé [Wed, 19 Mar 2025 11:46:55 +0000 (12:46 +0100)] 
tcg: Always define TARGET_INSN_START_EXTRA_WORDS

Do not define TARGET_INSN_START_EXTRA_WORDS under the
hood, have each target explicitly define it.

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>
7 weeks agotcg: Declare TARGET_INSN_START_EXTRA_WORDS in 'cpu-param.h'
Philippe Mathieu-Daudé [Wed, 19 Mar 2025 11:46:47 +0000 (12:46 +0100)] 
tcg: Declare TARGET_INSN_START_EXTRA_WORDS in 'cpu-param.h'

To avoid including the huge "cpu.h" for a simple definition,
move TARGET_INSN_START_EXTRA_WORDS to "cpu-param.h".

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotcg: Include missing 'cpu.h' in translate-all.c
Philippe Mathieu-Daudé [Thu, 3 Apr 2025 21:37:54 +0000 (23:37 +0200)] 
tcg: Include missing 'cpu.h' in translate-all.c

tb_check_watchpoint() calls cpu_get_tb_cpu_state(),
which is declared in each "cpu.h" header. It is indirectly
included via "tcg/insn-start-words.h". Since we want to
rework "tcg/insn-start-words.h", removing "cpu.h" in the
next commit, add the missing header now, otherwise we'd
get:

  accel/tcg/translate-all.c:598:9: error: call to undeclared function 'cpu_get_tb_cpu_state' [-Wimplicit-function-declaration]
  598 |         cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags);
      |         ^

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>
7 weeks agotarget/riscv: Do not expose rv128 CPU on user mode emulation
Philippe Mathieu-Daudé [Wed, 2 Apr 2025 14:37:26 +0000 (15:37 +0100)] 
target/riscv: Do not expose rv128 CPU on user mode emulation

As Richard mentioned:

  We should allow RV128 in user-mode at all until there's a
  kernel abi for it.

Remove the experimental 'x-rv128' CPU on user emulation
(since it is experimental, no deprecation period is required).

Reported-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agohw/arm: make most of the compilation units common
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:14 +0000 (21:59 -0700)] 
hw/arm: make most of the compilation units common

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-30-pierrick.bouvier@linaro.org>

7 weeks agohw/arm/xlnx-versal: prepare compilation unit to be common
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:13 +0000 (21:59 -0700)] 
hw/arm/xlnx-versal: prepare compilation unit to be common

Remove kvm unused 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-29-pierrick.bouvier@linaro.org>

7 weeks agohw/arm/xlnx-zynqmp: prepare compilation unit to be common
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:12 +0000 (21:59 -0700)] 
hw/arm/xlnx-zynqmp: prepare compilation unit to be common

Remove kvm unused 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-28-pierrick.bouvier@linaro.org>

7 weeks agohw/arm/digic_boards: prepare compilation unit to be common
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:11 +0000 (21:59 -0700)] 
hw/arm/digic_boards: prepare compilation unit to be common

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-27-pierrick.bouvier@linaro.org>

7 weeks agohw/arm/boot: make compilation unit hw common
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:09 +0000 (21:59 -0700)] 
hw/arm/boot: make compilation unit hw common

Now we eliminated poisoned identifiers from headers, this file can now
be compiled once for all arm 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: <20250325045915.994760-25-pierrick.bouvier@linaro.org>

7 weeks agomeson: add common hw files
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:08 +0000 (21:59 -0700)] 
meson: add common hw files

Those files will be compiled once per base architecture ("arm" in this
case), instead of being compiled for every variant/bitness of
architecture.

We make sure to not include target cpu definitions (exec/cpu-defs.h) by
defining header guard directly. This way, a given compilation unit can
access a specific cpu definition, but not access to compile time defines
associated.

Previous commits took care to clean up some headers to not rely on
cpu-defs.h content.

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-24-pierrick.bouvier@linaro.org>

7 weeks agotarget/arm: Expose Aarch64 helpers unconditionally
Philippe Mathieu-Daudé [Thu, 3 Apr 2025 23:58:18 +0000 (01:58 +0200)] 
target/arm: Expose Aarch64 helpers unconditionally

At worst, for 32-bit arm binary, using these methods will
now produce a link time error, instead of a compile time one.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20250403235821.9909-37-philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7 weeks agotarget/arm/cpu: remove inline stubs for aarch32 emulation
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:07 +0000 (21:59 -0700)] 
target/arm/cpu: remove inline stubs for aarch32 emulation

Directly condition associated calls in target/arm/helper.c for now.

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-23-pierrick.bouvier@linaro.org>

7 weeks agotarget/arm/cpu: define same set of registers for aarch32 and aarch64
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:06 +0000 (21:59 -0700)] 
target/arm/cpu: define same set of registers for aarch32 and aarch64

To eliminate TARGET_AARCH64, we need to make various definitions common
between 32 and 64 bit Arm targets.
Added registers are used only by aarch64 code, and the only impact is on
the size of CPUARMState, and added zarray
(ARMVectorReg zarray[ARM_MAX_VQ * 16]) member (+64KB)

It could be eventually possible to allocate this array only for aarch64
emulation, but I'm not sure it's worth the hassle to save a few KB per
vcpu. Running qemu-system takes already several hundreds of MB of
(resident) memory, and qemu-user takes dozens of MB of (resident) memory
anyway.

As part of this, we define ARM_MAX_VQ once for aarch32 and aarch64,
which will affect zregs field for aarch32.
This field is used for MVE and SVE implementations. MVE implementation
is clipping index value to 0 or 1 for zregs[*].d[],
so we should not touch the rest of data in this case anyway.

This change is safe regarding migration, because aarch64 registers still
have the same size, and for aarch32, only zregs is modified.
Migration code explicitly specify a size of 2 for env.vfp.zregs[0].d,
VMSTATE_UINT64_SUB_ARRAY(env.vfp.zregs[0].d, ARMCPU, 0, 2). So extending
the storage size has no impact.

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-22-pierrick.bouvier@linaro.org>

7 weeks agotarget/arm/cpu: flags2 is always uint64_t
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:05 +0000 (21:59 -0700)] 
target/arm/cpu: flags2 is always uint64_t

Do not rely on target dependent type, but use a fixed type instead.
Since the original type is unsigned, it is safe to extend its size
without any side effect.

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-21-pierrick.bouvier@linaro.org>

7 weeks agotarget/arm/cpu: always define kvm related registers
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:04 +0000 (21:59 -0700)] 
target/arm/cpu: always define kvm related registers

This does not hurt, even if they are not used.

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-20-pierrick.bouvier@linaro.org>

7 weeks agoexec/poison: KVM_HAVE_MCE_INJECTION can now be poisoned
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:03 +0000 (21:59 -0700)] 
exec/poison: KVM_HAVE_MCE_INJECTION can now be poisoned

We prevent common code to use this define by mistake.

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-19-pierrick.bouvier@linaro.org>

7 weeks agoaccel/kvm: move KVM_HAVE_MCE_INJECTION define to kvm-all.c
Pierrick Bouvier [Tue, 25 Mar 2025 04:59:02 +0000 (21:59 -0700)] 
accel/kvm: move KVM_HAVE_MCE_INJECTION define to kvm-all.c

This define is used only in accel/kvm/kvm-all.c, so we push directly the
definition there. Add more visibility to kvm_arch_on_sigbus_vcpu() to
allow removing this define from any header.

The architectures defining KVM_HAVE_MCE_INJECTION are i386, x86_64 and
aarch64.

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-18-pierrick.bouvier@linaro.org>

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>