@@ -51,6 +51,7 @@ static void __init
acpi_map_gic_cpu_interface(struct acpi_madt_generic_interrupt *processor)
{
int i;
+ int rc;
u64 mpidr = processor->arm_mpidr & MPIDR_HWID_MASK;
bool_t enabled = !!(processor->flags & ACPI_MADT_ENABLED);
@@ -102,16 +103,16 @@ acpi_map_gic_cpu_interface(struct acpi_madt_generic_interrupt *processor)
if ( !acpi_psci_present() )
return;
- /* CPU 0 was already initialized */
- if ( enabled_cpus )
+ if ( (rc = arch_cpu_init(enabled_cpus, NULL)) < 0 )
{
- if ( arch_cpu_init(enabled_cpus, NULL) < 0 )
- return;
-
- /* map the logical cpu id to cpu MPIDR */
- cpu_logical_map(enabled_cpus) = mpidr;
+ printk("cpu%d: init failed (0x%"PRIx64" MPIDR): %d\n",
+ enabled_cpus, mpidr, rc);
+ return;
}
+ /* map the logical cpu id to cpu MPIDR */
+ cpu_logical_map(enabled_cpus) = mpidr;
+
enabled_cpus++;
}
This part of the code will never be executed when the entry corresponds to the boot CPU. Also print an error message rather when arch_cpu_init has failed. Signed-off-by: Julien Grall <julien.grall@arm.com> --- xen/arch/arm/acpi/boot.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)