Firmware after May 8, 2017 places APs in WFE state at boot. Add a "sev"

after writing the start vector, otherwise secondary CPUs will not boot.
This commit is contained in:
jmcneill 2017-11-04 14:47:06 +00:00
parent 4eb0a742c5
commit e538d5098a
1 changed files with 5 additions and 2 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: rpi_machdep.c,v 1.80 2017/08/16 20:54:19 jmcneill Exp $ */
/* $NetBSD: rpi_machdep.c,v 1.81 2017/11/04 14:47:06 jmcneill Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: rpi_machdep.c,v 1.80 2017/08/16 20:54:19 jmcneill Exp $");
__KERNEL_RCSID(0, "$NetBSD: rpi_machdep.c,v 1.81 2017/11/04 14:47:06 jmcneill Exp $");
#include "opt_arm_debug.h"
#include "opt_bcm283x.h"
@ -660,6 +660,9 @@ rpi_bootstrap(void)
}
}
/* Wake up APs in case firmware has placed them in WFE state */
__asm __volatile("sev");
for (int loop = 0; loop < 16; loop++) {
if (arm_cpu_hatched == __BITS(arm_cpu_max - 1, 1))
break;