* Grygorii Strashko <[email protected]> [170113 09:37]:
> On 01/13/2017 10:17 AM, Tony Lindgren wrote:
> > But anyways here's your basic idea plugged into my recent patch and
> > it seems to work. I maybe have missed something though while reading
> > so please check.
> >
> > The pm_runtime_get/mark_last_busy/put_autosuspend and WARN_ON() we
> > want to keep in cppi41_irq() at least for now :)
>
> As per my understanding and testing it looks like might be enough to
> have just pm_runtime_mark_last_busy(cdd->ddev.dev); in cppi41_irq().
> But it can be left as is and yes - over all idea is that irq should
> not be triggered if device is Idle.
OK yeah kicking the autoidle timeout is needed here.
> > And I'm thinking we must also callcppi41_run_queue() with spinlock
> > held to prevent out of order triggering of the DMA transfers.
> >
> > Does this look OK to you?
>
> I think yes. My current version is mostly similar to yours.
OK will update description and repost shortly.
> > @@ -1150,6 +1165,11 @@ static int __maybe_unused cppi41_resume(struct
> > device *dev)
> > static int __maybe_unused cppi41_runtime_suspend(struct device *dev)
> > {
> > struct cppi41_dd *cdd = dev_get_drvdata(dev);
> > + unsigned long flags;
> > +
> > + spin_lock_irqsave(&cdd->lock, flags);
> > + cdd->is_suspended = true;
> > + spin_unlock_irqrestore(&cdd->lock, flags);
> >
> > WARN_ON(!list_empty(&cdd->pending));
>
> Shouldn't we check list_empty() under spin lock?
Yeah let's do that.
Regards,
Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html