MIPS: smp-cps: Ensure our VP ident calculation is correct
When bringing up a CPU, ensure that its local ID as provided by the GIC matches up with our calculation of it. This is vital, since if the condition doesn't hold then we won't have configured interrupts correctly for the VP. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Matt Redfearn <matt.redfearn@imgtec.com> Cc: Niklas Cassel <niklas.cassel@axis.com> Cc: Ezequiel Garcia <ezequiel.garcia@imgtec.com> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/12335/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Родитель
835d2b4529
Коммит
ba1c0a490a
|
@ -307,6 +307,17 @@ static void cps_init_secondary(void)
|
|||
if (cpu_has_mipsmt)
|
||||
dmt();
|
||||
|
||||
if (mips_cm_revision() >= CM_REV_CM3) {
|
||||
unsigned ident = gic_read_local_vp_id();
|
||||
|
||||
/*
|
||||
* Ensure that our calculation of the VP ID matches up with
|
||||
* what the GIC reports, otherwise we'll have configured
|
||||
* interrupts incorrectly.
|
||||
*/
|
||||
BUG_ON(ident != mips_cm_vp_id(smp_processor_id()));
|
||||
}
|
||||
|
||||
change_c0_status(ST0_IM, STATUSF_IP2 | STATUSF_IP3 | STATUSF_IP4 |
|
||||
STATUSF_IP5 | STATUSF_IP6 | STATUSF_IP7);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче