soc/tegra: pmc: Don't create fake interrupt hierarchy levels
authorMarc Zyngier <maz@kernel.org>
Sun, 4 Oct 2020 17:27:04 +0000 (18:27 +0100)
committerMarc Zyngier <maz@kernel.org>
Sat, 10 Oct 2020 11:12:11 +0000 (12:12 +0100)
commitc351ab7bf2a565951172cadbdebe686137c3fd43
treec02868a7c15c6559b2b42d3e0457c9a627c3eb9e
parent8681cc33f817842df7ebe3c36558d97f5497a177
soc/tegra: pmc: Don't create fake interrupt hierarchy levels

The Tegra PMC driver does ungodly things with the interrupt hierarchy,
repeatedly corrupting it by pulling hwirq numbers out of thin air,
overriding existing IRQ mappings and changing the handling flow
of unsuspecting users.

All of this is done in the name of preserving the interrupt hierarchy
even when these levels do not exist in the HW. Together with the use
of proper IRQs for IPIs, this leads to an unbootable system as the
rescheduling IPI gets repeatedly repurposed for random drivers...

Instead, let's simply mark the level from which the hierarchy does
not make sense for the HW, and let the core code trim the usused
levels from the hierarchy.

Signed-off-by: Marc Zyngier <maz@kernel.org>
drivers/soc/tegra/pmc.c