psci: set psci_present as early as possible
psci_attach is way too late to provide the intended semantics for
psci_present. psci calls can be made immediately after psci_init(),
called way earlier at SI_SUB_CPU + SI_ORDER_FIRST, and we need it to
be valid as early as we can possibly call a psci function.
This fixes booting RPi3+4 with the in-review spintable patch;
rpi3-psci-monitor patches the FDT to add a PSCI node, but it doesn't
patch each cpus' enable-method. Because of this, we would stall the
boot while enabling CPU 1 as we saw a valid looking enable-method and
"no" functional PSCI and attempted to use the spintable rather than
simply not starting secondary APs.
Fixes: 2218070b2c
("psci: finish psci_present implementation")
Reported by: karels
This commit is contained in:
parent
017367c114
commit
866beaa0aa
@ -146,6 +146,7 @@ psci_init(void *dummy)
|
||||
}
|
||||
|
||||
psci_callfn = new_callfn;
|
||||
psci_present = true;
|
||||
}
|
||||
/* This needs to be before cpu_mp at SI_SUB_CPU, SI_ORDER_THIRD */
|
||||
SYSINIT(psci_start, SI_SUB_CPU, SI_ORDER_FIRST, psci_init, NULL);
|
||||
@ -344,7 +345,6 @@ psci_attach(device_t dev, psci_initfn_t psci_init, int default_version)
|
||||
return (ENXIO);
|
||||
|
||||
psci_softc = sc;
|
||||
psci_present = true;
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user