diff --git a/services/boot/hss_boot_service.c b/services/boot/hss_boot_service.c index 558e5c5f..d99ffc31 100644 --- a/services/boot/hss_boot_service.c +++ b/services/boot/hss_boot_service.c @@ -877,9 +877,11 @@ enum IPIStatusCode HSS_Boot_RestartCores_Using_Bitmask(union HSSHartBitmask rest mHSS_DEBUG_PRINTF(LOG_ERROR, "validation failed for Hart bitmask %x\n", restartHartBitmask.uint); } else { for (unsigned int source = HSS_HART_U54_1; - (source < HSS_HART_NUM_PEERS) && (restartHartBitmask.uint & (unsigned int)BIT(source)); source++) { + (source < HSS_HART_NUM_PEERS); source++) { union HSSHartBitmask localRestartHartBitmask = { .uint = 0u }; + if (!(restartHartBitmask.uint & (unsigned int)BIT(source))) { continue; } + // in interrupts-always-enabled world of the HSS, it would appear less // racey to boot secondary cores first and have them all wait... for (unsigned int i = 0u; i < ARRAY_SIZE(bootMachine); i++) {