[alsa-devel] ESI Juli@ crash with external clock switch - patch

Takashi Iwai tiwai at suse.de
Mon Jan 12 09:21:33 CET 2015


At Sun, 11 Jan 2015 22:00:59 +0100,
Pavel Hofman wrote:
> 
> Dne 11.1.2015 v 21:36 Takashi Iwai napsal(a):
> >
> > OK, then this should be cancel_delayed_work_sync() instead, I suppose.
> > The revised patch (also for ak4113.c) below.
> 
> I am afraid it is getting stuck in the same way - see the thread stack 
> below.
> 
> >
> >>
> >> I see, snd_ak4113_reinit of ak4113.c is never called, only
> >> ak4113_init_regs. Perhaps Juli should not touch the workqueue in
> >> ak4114_reinit and only initialize the regs in similar manner to ak4113?
> >
> > No, it's just quartet driver doesn't handle it properly :)
> 
> Why is actually the restart of the workqueue needed at reinit? The work 
> (snd_ak4114_check_rate_and_errors) only reads ak4114 regs to controls 
> (using i2c routine synchronized with mutexes) and handles the stream stop.

Yeah, restart is necessary only in a certain situation, and is a bug
that is done through work itself.  This was the cause.  I'll prepare
fix patches later.

> > It doesn't matter much because PM doesn't work with Quartet.
> > But the juli.c also should be improved regarding PM.  It should stop
> > the workq at suspend.  Also, it'd be preferable to have some control
> > start/stop this background work, e.g. via a control element.
> > Otherwise your machine will be constantly loaded unnecessarily.
> 
> I think we can extend the timer, perhaps to HZ/2 - the thread is just a 
> security measure anyway.

The HZ/10 isn't that bad, but the problem is that it's unconditionally
running even if user doesn't need/want.


Takashi


More information about the Alsa-devel mailing list