aboutsummaryrefslogtreecommitdiff
path: root/include/exec/cpu-common.h
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2024-01-22 16:34:09 +0100
committerRichard Henderson <richard.henderson@linaro.org>2024-01-29 07:06:03 +1000
commitd157e540edc2dbc30b66c26d8378c724ffcac8d0 (patch)
tree2566d2fd0d3a028e8192abfcec0c8faf432bfde3 /include/exec/cpu-common.h
parent7a1dc45af581d2b643cdbf33c01fd96271616fbd (diff)
downloadqemu-d157e540edc2dbc30b66c26d8378c724ffcac8d0.zip
qemu-d157e540edc2dbc30b66c26d8378c724ffcac8d0.tar.gz
qemu-d157e540edc2dbc30b66c26d8378c724ffcac8d0.tar.bz2
cpu-exec: simplify jump cache management
Unless I'm missing something egregious, the jmp cache is only every populated with a valid entry by the same thread that reads the cache. Therefore, the contents of any valid entry are always consistent and there is no need for any acquire/release magic. Indeed ->tb has to be accessed with atomics, because concurrent invalidations would otherwise cause data races. But ->pc is only ever accessed by one thread, and accesses to ->tb and ->pc within tb_lookup can never race with another tb_lookup. While the TranslationBlock (especially the flags) could be modified by a concurrent invalidation, store-release and load-acquire operations on the cache entry would not add any additional ordering beyond what you get from performing the accesses within a single thread. Because of this, there is really nothing to win in splitting the CF_PCREL and !CF_PCREL paths. It is easier to just always use the ->pc field in the jump cache. I noticed this while working on splitting commit 8ed558ec0cb ("accel/tcg: Introduce TARGET_TB_PCREL", 2022-10-04) into multiple pieces, for the sake of finding a more fine-grained bisection result for https://gitlab.com/qemu-project/qemu/-/issues/2092. It does not (and does not intend to) fix that issue; therefore it may make sense to not commit it until the root cause of issue #2092 is found. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Tested-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20240122153409.351959-1-pbonzini@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/exec/cpu-common.h')
0 files changed, 0 insertions, 0 deletions