aboutsummaryrefslogtreecommitdiff
path: root/softmmu
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2023-05-12 18:02:22 +0100
committerPeter Maydell <peter.maydell@linaro.org>2023-05-18 11:39:33 +0100
commit1aa4512ecde12372e51d2e94149854f952bd4211 (patch)
tree0690a63f5fb0bd2e29af26d68e35db7aef7fa9f6 /softmmu
parent442c9d682c94fc2e18014e6037735dcef7419a43 (diff)
downloadqemu-1aa4512ecde12372e51d2e94149854f952bd4211.zip
qemu-1aa4512ecde12372e51d2e94149854f952bd4211.tar.gz
qemu-1aa4512ecde12372e51d2e94149854f952bd4211.tar.bz2
target/arm: Saturate L2CTLR_EL1 core count field rather than overflowing
The IMPDEF sysreg L2CTLR_EL1 found on the Cortex-A35, A53, A57, A72 and which we (arguably dubiously) also provide in '-cpu max' has a 2 bit field for the number of processors in the cluster. On real hardware this must be sufficient because it can only be configured with up to 4 CPUs in the cluster. However on QEMU if the board code does not explicitly configure the code into clusters with the right CPU count we default to "give the value assuming that all CPUs in the system are in a single cluster", which might be too big to fit in the field. Instead of just overflowing this 2-bit field, saturate to 3 (meaning "4 CPUs", so at least we don't overwrite other fields in the register. It's unlikely that any guest code really cares about the value in this field; at least, if it does it probably also wants the system to be more closely matching real hardware, i.e. not to have more than 4 CPUs. This issue has been present since the L2CTLR was first added in commit 377a44ec8f2fac5b back in 2014. It was only noticed because Coverity complains (CID 1509227) that the shift might overflow 32 bits and inadvertently sign extend into the top half of the 64 bit value. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20230512170223.3801643-2-peter.maydell@linaro.org
Diffstat (limited to 'softmmu')
0 files changed, 0 insertions, 0 deletions