Commit ecafe3e9 authored by Paul Burton's avatar Paul Burton Committed by Ralf Baechle

MIPS: Malta: Register UP SMP ops if all else fails

If we fail to register any real SMP implementations, fall back to
registering the dummy UP implementation. Otherwise when we build an SMP
kernel & run it on a system where the SMP implementations fail to probe
(eg. QEMU) the kernel will perform a NULL dereference attempting to call
mp_ops->smp_setup() from plat_smp_setup().

Notably this fixes booting kernels with CPS SMP enabled on QEMU, which
doesn't currently implement the CM, CPC or GIC.
Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Peter Hurley <peter@hurleysoftware.com>
Cc: Rob Herring <robh@kernel.org>
Cc: linux-kernel@vger.kernel.org
Cc: Markos Chandras <markos.chandras@imgtec.com>
Patchwork: https://patchwork.linux-mips.org/patch/11223/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent e81a8c7d
...@@ -425,6 +425,7 @@ config MIPS_MALTA ...@@ -425,6 +425,7 @@ config MIPS_MALTA
select MIPS_L1_CACHE_SHIFT_6 select MIPS_L1_CACHE_SHIFT_6
select PCI_GT64XXX_PCI0 select PCI_GT64XXX_PCI0
select MIPS_MSC select MIPS_MSC
select SMP_UP if SMP
select SWAP_IO_SPACE select SWAP_IO_SPACE
select SYS_HAS_CPU_MIPS32_R1 select SYS_HAS_CPU_MIPS32_R1
select SYS_HAS_CPU_MIPS32_R2 select SYS_HAS_CPU_MIPS32_R2
......
...@@ -302,6 +302,7 @@ void __init prom_init(void) ...@@ -302,6 +302,7 @@ void __init prom_init(void)
return; return;
if (!register_vsmp_smp_ops()) if (!register_vsmp_smp_ops())
return; return;
register_up_smp_ops();
} }
void platform_early_l2_init(void) void platform_early_l2_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment