summary refs log tree commit diff stats
path: root/include/hw/arm/boot.h
diff options
context:
space:
mode:
authorClément Chigot <chigot@adacore.com>2025-05-26 10:55:20 +0200
committerPeter Maydell <peter.maydell@linaro.org>2025-06-13 11:31:28 +0100
commit5dc8e4e892ba10e040d12afece0d36b8b6a269d6 (patch)
tree378b6004ecfc46a3b8c81a37e58357349582c7a0 /include/hw/arm/boot.h
parent73cdd846adb80060fbdb2f2557aeafb41cb39064 (diff)
downloadfocaccia-qemu-5dc8e4e892ba10e040d12afece0d36b8b6a269d6.tar.gz
focaccia-qemu-5dc8e4e892ba10e040d12afece0d36b8b6a269d6.zip
hw/arm: make cpu targeted by arm_load_kernel the primary CPU.
Currently, arm booting processus assumes that the first_cpu is the CPU
that will boot: `arm_load_kernel` is powering off all but the `first_cpu`;
`do_cpu_reset` is setting the loader address only for this `first_cpu`.

For most of the boards, this isn't an issue as the kernel is loaded and
booted on the first CPU anyway. However, for zynqmp, the option
"boot-cpu" allows to choose any CPUs.

Create a new arm_boot_info entry `primary_cpu` recording which CPU will
be boot first. This one is set when `arm_boot_kernel` is called.

Signed-off-by: Clément Chigot <chigot@adacore.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20250526085523.809003-2-chigot@adacore.com
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/hw/arm/boot.h')
-rw-r--r--include/hw/arm/boot.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/hw/arm/boot.h b/include/hw/arm/boot.h
index b12bf61ca8..a2e22bda8a 100644
--- a/include/hw/arm/boot.h
+++ b/include/hw/arm/boot.h
@@ -132,6 +132,9 @@ struct arm_boot_info {
     bool secure_board_setup;
 
     arm_endianness endianness;
+
+    /* CPU having load the kernel and that should be the first to boot.  */
+    ARMCPU *primary_cpu;
 };
 
 /**