qemu/target/arm
Gustavo Romero 374cdc8efe target/arm: Enable FEAT_CMOW for -cpu max
FEAT_CMOW introduces support for controlling cache maintenance
instructions executed in EL0/1 and is mandatory from Armv8.8.

On real hardware, the main use for this feature is to prevent processes
from invalidating or flushing cache lines for addresses they only have
read permission, which can impact the performance of other processes.

QEMU implements all cache instructions as NOPs, and, according to rule
[1], which states that generating any Permission fault when a cache
instruction is implemented as a NOP is implementation-defined, no
Permission fault is generated for any cache instruction when it lacks
read and write permissions.

QEMU does not model any cache topology, so the PoU and PoC are before
any cache, and rules [2] apply. These rules state that generating any
MMU fault for cache instructions in this topology is also
implementation-defined. Therefore, for FEAT_CMOW, we do not generate any
MMU faults either, instead, we only advertise it in the feature
register.

[1] Rule R_HGLYG of section D8.14.3, Arm ARM K.a.
[2] Rules R_MZTNR and R_DNZYL of section D8.14.3, Arm ARM K.a.

Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20241104142606.941638-1-gustavo.romero@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2024-11-05 10:10:00 +00:00
..
hvf hvf: arm: Implement and use hvf_get_physical_address_range 2024-09-13 15:31:47 +01:00
tcg target/arm: Enable FEAT_CMOW for -cpu max 2024-11-05 10:10:00 +00:00
arch_dump.c
arm-powerctl.c
arm-powerctl.h
arm-qmp-cmds.c
common-semi-target.h
cortex-regs.c
cpregs.h
cpu64.c target/arm/tcg: refine cache descriptions with a wrapper 2024-09-13 15:31:47 +01:00
cpu-features.h target/arm: Enable FEAT_CMOW for -cpu max 2024-11-05 10:10:00 +00:00
cpu-param.h license: Update deprecated SPDX tag LGPL-2.0+ to LGPL-2.0-or-later 2024-09-20 10:11:59 +03:00
cpu-qom.h target/arm: Add support for Non-maskable Interrupt 2024-04-25 10:21:04 +01:00
cpu.c target/arm: Explicitly set 2-NaN propagation rule 2024-11-05 10:09:53 +00:00
cpu.h target/arm: Enable FEAT_CMOW for -cpu max 2024-11-05 10:10:00 +00:00
debug_helper.c
gdbstub64.c gdbstub: Add support for MTE in system mode 2024-09-10 23:33:51 +01:00
gdbstub.c gdbstub: Re-factor gdb command extensions 2024-07-22 09:37:44 +01:00
gtimer.h
helper.c target/arm: Enable FEAT_CMOW for -cpu max 2024-11-05 10:10:00 +00:00
helper.h target/arm: Widen NeonGenNarrowEnvFn return to 64 bits 2024-09-19 12:58:58 +01:00
hvf_arm.h hvf: arm: Implement and use hvf_get_physical_address_range 2024-09-13 15:31:47 +01:00
hyp_gdbstub.c target/arm: remove break after g_assert_not_reached() 2024-09-24 13:53:35 +02:00
idau.h
internals.h target/arm: Add new MMU indexes for AArch32 Secure PL1&0 2024-11-05 10:09:58 +00:00
Kconfig kconfig: express dependency of individual boards on libfdt 2024-05-10 15:45:15 +02:00
kvm_arm.h target/arm: kvm: require KVM_CAP_DEVICE_CTRL 2024-10-29 15:04:47 +00:00
kvm-consts.h exec: Rename NEED_CPU_H -> COMPILING_PER_TARGET 2024-04-26 09:49:51 +02:00
kvm-stub.c
kvm.c target/arm: kvm: require KVM_CAP_DEVICE_CTRL 2024-10-29 15:04:47 +00:00
machine.c target/arm: Rename FPSR_MASK and FPCR_MASK and define them symbolically 2024-07-11 11:41:33 +01:00
meson.build
multiprocessing.h
op_addsub.h
ptw.c target/arm: Add new MMU indexes for AArch32 Secure PL1&0 2024-11-05 10:09:58 +00:00
syndrome.h
tcg-stubs.c
trace-events
trace.h
vfp_helper.c target/arm: Store FPSR cumulative exception bits in env->vfp.fpsr 2024-10-29 15:04:46 +00:00