On Thu, 7 Jan 2021 15:43:25 -0600 Alex Elder wrote:
@@ -743,21 +743,21 @@ static void gsi_channel_freeze(struct gsi_channel *channel)
set_bit(GSI_CHANNEL_FLAG_STOPPING, channel->flags);
smp_mb__after_atomic(); /* Ensure gsi_channel_poll() sees new value */
- napi_disable(&channel->napi);
-
gsi_irq_ieob_disable(channel->gsi, channel->evt_ring_id);
+
+ napi_disable(&channel->napi);
}
So patch 1 is entirely for the purpose of keeping the code symmetric
here? I can't think of other reason why masking this IRQ couldn't be
left after NAPI is disabled, and that should work as you expect.
/* Allow transactions to be used on the channel again. */
static void gsi_channel_thaw(struct gsi_channel *channel)
{
- gsi_irq_ieob_enable(channel->gsi, channel->evt_ring_id);
-
/* Allow the NAPI poll loop to re-enable interrupts again */
clear_bit(GSI_CHANNEL_FLAG_STOPPING, channel->flags);
smp_mb__after_atomic(); /* Ensure gsi_channel_poll() sees new value */
napi_enable(&channel->napi);
+
+ gsi_irq_ieob_enable(channel->gsi, channel->evt_ring_id);
}