]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: Don't BUG_ON when no IPI domain is found
authorPaul Burton <paul.burton@imgtec.com>
Mon, 4 Apr 2016 09:04:52 +0000 (10:04 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 9 May 2016 10:00:00 +0000 (12:00 +0200)
commit4703e77d8cfd5380b38de182a0d0977a9da8d77b
tree3102e1e293ddf5461aa62a9be6254166cedd3ecf
parentbae7db8e33453ef1dd478c49631be227ee118b92
MIPS: Don't BUG_ON when no IPI domain is found

Commit 8485e681a59f ("MIPS: Add generic SMP IPI support") introduced
code that BUG_ON's in the case of a kernel that supports IPI domains but
does not have one at runtime. This case is possible on Malta where for
IPIs we may use either the GIC (which has an IPI IRQ domain
implementation) or core-local software interrupts between VPEs (which do
not currently have an IPI IRQ domain implementation). We can not know
which will be used until runtime when we know whether a GIC is actually
present, and if we run on a system with multiple VPEs and no GIC then
the BUG_ON is hit.

Commit 19f08c55d0df ("IPS: Fix broken malta qemu") worked around this
for the single-core single-VPE case typically seen using QEMU, but does
not catch the multi-VPE case. This patch removes the insufficient CPU
presence check that was added and works around the bug differently,
effectively reverting that commit.

A simple way to reproduce this bug is by using QEMU, which partially
implements the MT ASE but does not implement the GIC as of version 2.5.
Using "-cpu 34Kf -smp 2" will present a system with 2 VPEs in one core &
no GIC, hitting the BUG_ON.

Given that we're post-merge-window on the way to v4.6, avoid this by
just returning from mips_smp_ipi_init when no IPI IRQ domain is found.
Ideally at some point all IPI implementations would be converted to the
same IPI IRQ domain interface & we'd be able to restore the check.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: Qais Yousef <qsyousef@gmail.com>
Fixes: 8485e681a59f ("MIPS: Add generic SMP IPI support")
Fixes: 19f08c55d0df ("IPS: Fix broken malta qemu")
Reverts: 19f08c55d0df ("IPS: Fix broken malta qemu")
Cc: Qais Yousef <qsyousef@gmail.com>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: Alex Smith <alex.smith@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/13007/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/smp.c