]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: lantiq: enable all hardware interrupts on second VPE
authorAleksander Jan Bajkowski <olek2@wp.pl>
Wed, 21 Sep 2022 20:59:44 +0000 (22:59 +0200)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Sat, 24 Sep 2022 09:39:31 +0000 (11:39 +0200)
commit0f13acf4277f2483b6fb1204d6a8be8b17352d76
treedaa691132f142f5223920fcd9d0016e41f1c6ceb
parent2272e452c6e81fcc03daf88fe7d130ab802bae21
MIPS: lantiq: enable all hardware interrupts on second VPE

This patch is needed to handle interrupts by the second VPE on the Lantiq
ARX100, xRX200, xRX300 and xRX330 SoCs. Switching some ICU interrupts to
the second VPE results in a hang. Currently, the vsmp_init_secondary()
function is responsible for enabling these interrupts. It only enables
Malta-specific interrupts (SW0, SW1, HW4 and HW5).

The MIPS core has 8 interrupts defined. On Lantiq SoCs, hardware
interrupts are wired to an ICU instance. Each VPE has an independent
instance of the ICU. The mapping of the ICU interrupts is shown below:
SW0(IP0) - IPI call,
SW1(IP1) - IPI resched,
HW0(IP2) - ICU 0-31,
HW1(IP3) - ICU 32-63,
HW2(IP4) - ICU 64-95,
HW3(IP5) - ICU 96-127,
HW4(IP6) - ICU 128-159,
HW5(IP7) - timer.

This patch enables all interrupt lines on the second VPE.

This problem affects multithreaded SoCs with a custom interrupt controller.
SOCs with 1004Kc core and newer use the MIPS GIC. At this point, I am aware
that the Realtek RTL839x and RTL930x SoCs may need a similar fix. In the
future, this may be replaced with some generic solution.

Tested on Lantiq xRX200.

Suggested-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/lantiq/prom.c