On Tue, 12 Jan 2021 16:40:49 -0800 Sukadev Bhattiprolu wrote:
> Saeed Mahameed [sa...@kernel.org] wrote:
> > On Tue, 2021-01-12 at 10:14 -0800, Sukadev Bhattiprolu wrote:  
> 
> <snip>
> > > @@ -5467,7 +5472,15 @@ static int ibmvnic_remove(struct vio_dev *dev)
> > >           return -EBUSY;
> > >   }
> > >  
> > > + /* If ibmvnic_reset() is scheduling a reset, wait for it to
> > > +  * finish. Then prevent it from scheduling any more resets
> > > +  * and have the reset functions ignore any resets that have
> > > +  * already been scheduled.
> > > +  */
> > > + spin_lock_irqsave(&adapter->remove_lock, flags);
> > >   adapter->state = VNIC_REMOVING;
> > > + spin_unlock_irqrestore(&adapter->remove_lock, flags);
> > > +  
> > 
> > Why irqsave/restore variants ? are you expecting this spinlock to be
> > held in interruptcontext ?
> >   
> > >   spin_unlock_irqrestore(&adapter->state_lock, flags);  
> 
> Good question.
> 
> One of the callers of ibmvnic_reset() is the ->ndo_tx_timeout()
> method which gets called from the watchdog timer.

watchdog is a normal timer, so it's gonna run in softirq, you don't
need to mask irqs.

Reply via email to