Messages in this thread | | | From | Alex Elder <> | Subject | [PATCH net-next 00/13] net: ipa: constrain GSI interrupts | Date | Thu, 5 Nov 2020 12:13:54 -0600 |
| |
The goal of this series is to more tightly control when GSI interrupts are enabled. This is a long-ish series, so I'll describe it in parts.
The first patch is actually unrelated... I forgot to include it in my previous series (which exposed the GSI layer to the IPA version). It is a trivial comments-only update patch.
The second patch defers registering the GSI interrupt handler until *after* all of the resources that handler touches have been initialized. In practice, we don't see this interrupt that early, but this precludes an obvious problem.
The next two patches are simple changes. The first just trivially renames a field. The second switches from using constant mask values to using an enumerated type of bit positions to represent each GSI interrupt type.
The rest implement the "real work." First, all interrupts are disabled at initialization time. Next, we keep track of a bitmask of enabled GSI interrupt types, updating it each time we enable or disable one of them. From there we have a set of patches that one-by-one enable each interrupt type only during the period it is required. This includes allowing a channel to generate IEOB interrupts only when it has been enabled. And finally, the last patch simplifies some code now that all GSI interrupt types are handled uniformly.
-Alex
Alex Elder (13): net: ipa: refer to IPA versions, not GSI
net: ipa: request GSI IRQ later
net: ipa: rename gsi->event_enable_bitmap net: ipa: define GSI interrupt types with an enum
net: ipa: disable all GSI interrupt types initially net: ipa: cache last-saved GSI IRQ enabled type net: ipa: only enable GSI channel control IRQs when needed net: ipa: only enable GSI event control IRQs when needed net: ipa: only enable generic command completion IRQ when needed net: ipa: only enable GSI IEOB IRQs when needed net: ipa: explicitly disallow inter-EE interrupts net: ipa: only enable GSI general IRQs when needed net: ipa: pass a value to gsi_irq_type_update()
drivers/net/ipa/gsi.c | 257 +++++++++++++++++++++++++++----------- drivers/net/ipa/gsi.h | 7 +- drivers/net/ipa/gsi_reg.h | 31 +++-- 3 files changed, 205 insertions(+), 90 deletions(-)
-- 2.20.1
| |