From: James Calligeros <jcalligeros99@gmail.com>
To: Mark Brown <broonie@kernel.org>
Cc: "Martin Povišer" <povik+lin@cutebit.org>,
"Liam Girdwood" <lgirdwood@gmail.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Sven Peter" <sven@kernel.org>, "Janne Grunau" <j@jannau.net>,
"Neal Gompa" <neal@gompa.dev>,
"David Rhodes" <david.rhodes@cirrus.com>,
"Richard Fitzgerald" <rf@opensource.cirrus.com>,
"Jaroslav Kysela" <perex@perex.cz>,
"Takashi Iwai" <tiwai@suse.com>, "Ulf Hansson" <ulfh@kernel.org>,
"Amit Kucheria" <amit.kucheria@linaro.org>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
"Lars-Peter Clausen" <lars@metafoo.de>,
"Vinod Koul" <vkoul@kernel.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Shenghao Ding" <shenghao-ding@ti.com>,
"Kevin Lu" <kevin-lu@ti.com>, "Baojun Xu" <baojun.xu@ti.com>,
"Sen Wang" <sen@ti.com>,
"James Schulman" <james.schulman@cirrus.com>,
asahi@lists.linux.dev, linux-sound@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
patches@opensource.cirrus.com, "Takashi Iwai" <tiwai@suse.de>,
linux-mediatek@lists.infradead.org,
"Hector Martin" <marcan@marcan.st>,
"Sasha Finkelstein" <k@chaosmail.tech>
Subject: Re: [PATCH 16/28] ASoC: apple: Add macaudio machine driver
Date: Wed, 30 Sep 2026 17:36:21 +1000 [thread overview]
Message-ID: <ItQHm5ZKQ4Wltp6qbCRkSA@gmail.com> (raw)
In-Reply-To: <0ae94fbe-cd41-4d49-b073-e65ab8eff724@sirena.org.uk>
On Monday, 28 September 2026 9:03:13 pm Australian Eastern Standard Time Mark
Brown wrote:
> On Sat, Sep 26, 2026 at 11:06:02AM +1000, James Calligeros wrote:
> > On Tuesday, 22 September 2026 7:38:54 pm Australian Eastern Standard Time
Mark Brown wrote:
> > > > + list_for_each_entry(kctl, &ma->card.snd_card->controls, list) {
> > > > + if (!snd_soc_control_matches(kctl,
> > > > volume_control_names[ma->cfg->amp]))
> > > > + continue;
> > >
> > > This is used from the volume limit timeout work which doesn't hold the
> > > controls_rwsem, userspace can add or remove user controls which would
> > > change the list so the work needs to lock the controls list.
> >
> > Would it be sufficient to scoped_guard the controls_rwsem wherever we
> > use this pattern?
>
> I think so, but I didn't properly check.
>
I did some testing of this and it causes deadlocks if we try to take the
semaphore from inside the workqueue. I believe it is related to the fact
that speakersafetyd has a blocking handle to the controls open at all times.
This may be fixable by simply having speakersafetyd take a nonblocking
handle instead. I will do some more testing before submitting v2.
> > > > +static int macaudio_dpcm_hw_params(struct snd_pcm_substream
> > > > *substream,
> > > > + struct snd_pcm_hw_params *params)
> > > > +{
> > > > + struct snd_soc_pcm_runtime *rtd =
> > > > snd_soc_substream_to_rtd(substream);
> > > > + struct macaudio_snd_data *ma = snd_soc_card_get_drvdata(rtd->card);
> > > > + struct macaudio_link_props *props =
> > > > &ma->link_props[rtd->dai_link->id];
> > > > + struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
> > > > + struct snd_interval *rate = hw_param_interval(params,
> > > > +
SNDRV_PCM_HW_PARAM_RATE);
> > > > + int bclk_ratio = macaudio_get_runtime_bclk_ratio(substream);
> > > > + int i;
> > > > +
> > > > + if (props->is_sense) {
> > > > + rate->min = rate->max = cpu_dai->symmetric_rate;
> > > > + return 0;
> > > > + }
> > >
> > > It feels like this DAI ought to have separate ops... Also, for the
> > > sense link will we definitely already have a rate set up?
> >
> > AIUI, the cpu rate should always be set up by the time we hit
> > this path as it is only taken when setting up the VISENSE FE (after the
> > playback stuff is already set up).
>
> Is that something we actually enforce or is that just a thing a sensible
> userspace should do? I can see something racing.
We don't really enforce it. speakersafetyd is the only thing that opens the
VISENSE PCM and does a blocking read of samples
which only starts and subsequently completes after the "real" PCM
is configured and playback begins. The sample rate is reliably
reflected to speakersafetyd via the kcontrol on the VISENSE PCM. We
have not experienced any race issues with this arrangement in ~5 years
nor has anyone reported any to us. I'm happy to take pointers on
how we should be doing this if the current approach won't fly.
next prev parent reply other threads:[~2026-09-30 7:36 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-20 4:53 [PATCH 00/28] Add speaker and headset jack support for Apple Silicon Macs James Calligeros
2026-09-20 4:53 ` [PATCH 01/28] dt-bindings: sound: Add Apple Macs sound peripherals James Calligeros
2026-09-20 18:45 ` Sven Peter
2026-09-21 15:02 ` Mark Brown
2026-09-21 15:22 ` Mark Brown
2026-09-23 11:35 ` Krzysztof Kozlowski
2026-09-20 4:53 ` [PATCH 02/28] ASoC: cs42l42: Fix typo James Calligeros
2026-09-21 15:25 ` Mark Brown
2026-09-20 4:53 ` [PATCH 03/28] ASoC: cs42l42: Set a faster digital ramp-up rate James Calligeros
2026-09-20 4:53 ` [PATCH 04/28] ASoC: apple: mca: Fix PD link double-frees James Calligeros
2026-09-20 4:53 ` [PATCH 05/28] alsa: pcm: Remove the qos request only if active James Calligeros
2026-09-21 15:03 ` Mark Brown
2026-09-22 8:09 ` Mark Brown
2026-09-20 4:53 ` [PATCH 06/28] ALSA: dmaengine: Always terminate DMA when a PCM is closed James Calligeros
2026-09-22 10:12 ` Mark Brown
2026-09-20 4:53 ` [PATCH 07/28] ALSA: Support nonatomic dmaengine PCMs James Calligeros
2026-09-21 15:32 ` Mark Brown
2026-09-20 4:53 ` [PATCH 08/28] ALSA: control: Add kcontrol callbacks for lock/unlock James Calligeros
2026-09-29 9:52 ` Takashi Iwai
2026-09-20 4:53 ` [PATCH 09/28] ASoC: ops: Move guts out of snd_soc_limit_volume James Calligeros
2026-09-20 4:53 ` [PATCH 10/28] ASoC: ops: Accept patterns in snd_soc_limit_volume James Calligeros
2026-09-21 15:27 ` Mark Brown
2026-09-21 16:27 ` Charles Keepax
2026-09-23 11:12 ` James Calligeros
2026-09-20 4:53 ` [PATCH 11/28] ASoC: ops: Introduce 'snd_soc_deactivate_kctl' James Calligeros
2026-09-22 9:53 ` Mark Brown
2026-09-20 4:53 ` [PATCH 12/28] ASoC: ops: Introduce 'soc_set_enum_kctl' James Calligeros
2026-09-22 9:50 ` Mark Brown
2026-09-20 4:53 ` [PATCH 13/28] ASoC: card: Let 'fixup_controls' return errors James Calligeros
2026-09-20 4:53 ` [PATCH 14/28] ASoC: ops: Export snd_soc_control_matches() James Calligeros
2026-09-22 9:43 ` Mark Brown
2026-09-20 4:53 ` [PATCH 15/28] ASoC: tas2764: Set up V/ISENSE on codec probe James Calligeros
2026-09-22 9:40 ` Mark Brown
2026-09-20 4:53 ` [PATCH 16/28] ASoC: apple: Add macaudio machine driver James Calligeros
2026-09-22 9:38 ` Mark Brown
2026-09-26 1:06 ` James Calligeros
2026-09-28 11:03 ` Mark Brown
2026-09-30 7:36 ` James Calligeros [this message]
2026-09-30 11:17 ` Mark Brown
2026-09-20 4:53 ` [PATCH 17/28] arm64: dts: apple: t8103-j274: Add speaker/headset jack nodes James Calligeros
2026-09-20 4:53 ` [PATCH 18/28] arm64: dts: apple: t8103-j313: " James Calligeros
2026-09-20 4:53 ` [PATCH 19/28] arm64: dts: apple: t8103-j293: " James Calligeros
2026-09-20 4:53 ` [PATCH 20/28] arm64: dts: apple: t8103-j45x: Add headset " James Calligeros
2026-09-20 4:54 ` [PATCH 21/28] arm64: dts: apple: t8112-j413: Add speaker/headset " James Calligeros
2026-09-20 4:54 ` [PATCH 22/28] arm64: dts: apple: t8112-j415: " James Calligeros
2026-09-20 4:54 ` [PATCH 23/28] arm64: dts: apple: t8112-j473: " James Calligeros
2026-09-20 4:54 ` [PATCH 24/28] arm64: dts: apple: t8112-j493: " James Calligeros
2026-09-20 4:54 ` [PATCH 25/28] arm64: dts: apple: t600x-j31x: " James Calligeros
2026-09-20 4:54 ` [PATCH 26/28] arm64: dts: apple: t600x-j375: " James Calligeros
2026-09-20 4:54 ` [PATCH 27/28] arm64: dts: apple: t602x-j41x: " James Calligeros
2026-09-20 4:54 ` [PATCH 28/28] arm64: dts: apple: t602x-j47x: " James Calligeros
2026-09-21 15:14 ` [PATCH 00/28] Add speaker and headset jack support for Apple Silicon Macs Mark Brown
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=ItQHm5ZKQ4Wltp6qbCRkSA@gmail.com \
--to=jcalligeros99@gmail.com \
--cc=amit.kucheria@linaro.org \
--cc=angelogioacchino.delregno@collabora.com \
--cc=asahi@lists.linux.dev \
--cc=baojun.xu@ti.com \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=david.rhodes@cirrus.com \
--cc=devicetree@vger.kernel.org \
--cc=j@jannau.net \
--cc=james.schulman@cirrus.com \
--cc=k@chaosmail.tech \
--cc=kevin-lu@ti.com \
--cc=krzk+dt@kernel.org \
--cc=lars@metafoo.de \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-sound@vger.kernel.org \
--cc=marcan@marcan.st \
--cc=matthias.bgg@gmail.com \
--cc=neal@gompa.dev \
--cc=patches@opensource.cirrus.com \
--cc=perex@perex.cz \
--cc=povik+lin@cutebit.org \
--cc=rafael.j.wysocki@intel.com \
--cc=rf@opensource.cirrus.com \
--cc=robh@kernel.org \
--cc=sen@ti.com \
--cc=shenghao-ding@ti.com \
--cc=sven@kernel.org \
--cc=tiwai@suse.com \
--cc=tiwai@suse.de \
--cc=ulfh@kernel.org \
--cc=vkoul@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®