net: ipa: only enable GSI event control IRQs when needed
authorAlex Elder <elder@linaro.org>
Thu, 5 Nov 2020 18:14:02 +0000 (12:14 -0600)
committerJakub Kicinski <kuba@kernel.org>
Sat, 7 Nov 2020 23:39:17 +0000 (15:39 -0800)
commitb4175f8731f783c67b042492c9000f5fb7ecee4b
tree27e53a50c9e6e0204b5f5a784f0fb45414941ad5
parentb054d4f9eb4b34c2187b89afb56e25b588618a9c
net: ipa: only enable GSI event control IRQs when needed

A GSI event ring causes an event control interrupt to fire whenever
its state changes (between NOT_ALLOCATED and ALLOCATED).  No event
ring should ever change state except when we request it to.

Currently, we permit *all* events rings to generate event control
interrupts--even those that are never used.  And we enable event
control interrupts essentially at all times, from setup to teardown.

Instead, only enable the event control interrupt type for the
duration of an event ring command, and when doing so, only allow
the event ring being operated upon to cause the interrupt to fire.
Disallow all event rings from issuing the event control interrupt
in gsi_irq_setup().

Because an event ring's interrupt is only enabled when needed,
there is no longer any need to zero the event channel mask in
gsi_irq_disable().

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ipa/gsi.c