From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: <broonie@kernel.org>, <lgirdwood@gmail.com>,
<linux-sound@vger.kernel.org>, <patches@opensource.cirrus.com>
Subject: Re: [PATCH] ASoC: cs42l43: Move shutter IRQ handling into a worker thread
Date: Tue, 30 Jul 2024 09:43:01 +0100 [thread overview]
Message-ID: <ZqinleaAqikxdQGr@opensource.cirrus.com> (raw)
In-Reply-To: <87ikwo9etj.wl-tiwai@suse.de>
On Mon, Jul 29, 2024 at 09:30:00PM +0200, Takashi Iwai wrote:
> On Mon, 29 Jul 2024 18:44:59 +0200,
> Charles Keepax wrote:
> >
> > On Mon, Jul 29, 2024 at 06:18:50PM +0200, Takashi Iwai wrote:
> > > On Mon, 29 Jul 2024 17:59:32 +0200,
> > > Charles Keepax wrote:
> > > >
> > > > The microphone/speaker privacy shutter ALSA control handlers need to
> > > > call pm_runtime_resume, since the hardware needs to be powered up to
> > > > check the hardware state of the shutter. The IRQ handler for the
> > > > shutters also needs to notify the ALSA control to inform user-space
> > > > the shutters updated. However this leads to a mutex inversion, between
> > > > the sdw_dev_lock and the controls_rwsem.
> > >
> > > That's bad, how does the mutex inversion look like? Generally
> > > speaking, a call of snd_ctl_notify() from an irq handler is a very
> > > standard procedure, and it should work without too much workaround.
> > >
> >
> > SoundWire IRQs are called under the sdw_dev_lock, and then in the
> > IRQ handler we call snd_ctl_notify which takes controls_rwsem.
>
> snd_ctl_notify() doesn't take rwsem but ctl_files_rwlock.
> And rwlock isn't taken except for two cases, at a list traverse at
> enumerating from user-space and at the device disconnection, so it
> shouldn't race. Anything missing there...?
>
The trouble here isn't the snd_ctl_notify, the handler uses
snd_soc_component_notify_control which also does a
snd_soc_card_get_kcontrol, which eventually calls snd_ctl_find_id
which does take the controls_rwsem.
Thanks,
Charles
next prev parent reply other threads:[~2024-07-30 8:43 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-29 15:59 [PATCH] ASoC: cs42l43: Move shutter IRQ handling into a worker thread Charles Keepax
2024-07-29 16:18 ` Takashi Iwai
2024-07-29 16:44 ` Charles Keepax
2024-07-29 19:30 ` Takashi Iwai
2024-07-30 8:43 ` Charles Keepax [this message]
2024-07-30 12:33 ` Takashi Iwai
2024-07-30 14:13 ` Jaroslav Kysela
2024-07-30 14:27 ` Takashi Iwai
2024-07-30 14:44 ` Mark Brown
2024-07-30 21:47 ` Jaroslav Kysela
2024-07-30 23:20 ` Mark Brown
2024-07-31 6:30 ` Takashi Iwai
2024-07-31 8:49 ` Charles Keepax
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZqinleaAqikxdQGr@opensource.cirrus.com \
--to=ckeepax@opensource.cirrus.com \
--cc=broonie@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-sound@vger.kernel.org \
--cc=patches@opensource.cirrus.com \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.