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);
>  }

Reply via email to