Skip to content

Commit c3f134f

Browse files
James Hoganralfbaechle
authored andcommitted
MIPS: smp-mt,smp-cmp: Enable all HW IRQs on secondary CPUs
Commit 18743d2 ("irqchip: mips-gic: Stop using per-platform mapping tables") in v3.19-rc1 changed the routing of IPIs through the GIC to go to the HW0 IRQ pin along with the rest of the GIC interrupts, rather than to HW1 and HW2 pins. This breaks SMP boot using the CMP or MT SMP implementations because HW0 doesn't get unmasked when secondary CPUs are initialised so the IPIs will never interrupt secondary CPUs (nor any other interrupts routed through the GIC). Commit ff1e29a ("MIPS: smp-cps: Enable all hardware interrupts on secondary CPUs") fixed this in advance for the CPS SMP implementation by unmasking all hardware interrupt lines for secondary CPUs, so lets do the same for the CMP and MT implementations. Fixes: 18743d2 ("irqchip: mips-gic: Stop using per-platform mapping tables") Signed-off-by: James Hogan <james.hogan@imgtec.com> Cc: Andrew Bresticker <abrestic@chromium.org> Cc: Qais Yousef <qais.yousef@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/9025/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
1 parent e967ef0 commit c3f134f

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

arch/mips/kernel/smp-cmp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ static void cmp_init_secondary(void)
4444
struct cpuinfo_mips *c __maybe_unused = &current_cpu_data;
4545

4646
/* Assume GIC is present */
47-
change_c0_status(ST0_IM, STATUSF_IP3 | STATUSF_IP4 | STATUSF_IP6 |
48-
STATUSF_IP7);
47+
change_c0_status(ST0_IM, STATUSF_IP2 | STATUSF_IP3 | STATUSF_IP4 |
48+
STATUSF_IP5 | STATUSF_IP6 | STATUSF_IP7);
4949

5050
/* Enable per-cpu interrupts: platform specific */
5151

arch/mips/kernel/smp-mt.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ static void vsmp_init_secondary(void)
161161
#ifdef CONFIG_MIPS_GIC
162162
/* This is Malta specific: IPI,performance and timer interrupts */
163163
if (gic_present)
164-
change_c0_status(ST0_IM, STATUSF_IP3 | STATUSF_IP4 |
164+
change_c0_status(ST0_IM, STATUSF_IP2 | STATUSF_IP3 |
165+
STATUSF_IP4 | STATUSF_IP5 |
165166
STATUSF_IP6 | STATUSF_IP7);
166167
else
167168
#endif

0 commit comments

Comments
 (0)