Linux Sound subsystem development
 help / color / mirror / Atom feed
From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
Cc: broonie@kernel.org, rafael@kernel.org,
	yung-chuan.liao@linux.intel.com, peter.ujfalusi@linux.intel.com,
	shumingf@realtek.com, lgirdwood@gmail.com,
	linux-sound@vger.kernel.org, patches@opensource.cirrus.com
Subject: Re: [PATCH 09/15] ASoC: SDCA: Add UMP buffer helper functions
Date: Wed, 10 Sep 2025 16:39:59 +0100	[thread overview]
Message-ID: <aMGbz3l2n0q9Fhkh@opensource.cirrus.com> (raw)
In-Reply-To: <0c440de8-764a-40a4-b040-a343ac3687f2@linux.dev>

On Wed, Sep 10, 2025 at 04:29:40PM +0200, Pierre-Louis Bossart wrote:
> On 9/10/25 15:37, Charles Keepax wrote:
> > On Wed, Sep 10, 2025 at 02:09:14PM +0200, Pierre-Louis Bossart wrote:
> >> On 9/9/25 18:52, Charles Keepax wrote:
> >>> On Tue, Sep 09, 2025 at 03:14:00PM +0200, Pierre-Louis Bossart wrote:
> >>>> On 9/8/25 15:15, Charles Keepax wrote:
> >>>>> On Mon, Sep 08, 2025 at 02:02:09PM +0200, Pierre-Louis Bossart wrote:
> >>>>>> On 9/5/25 16:31, Charles Keepax wrote:
> > Second question would probably be could we get a little more of a
> > concrete example of what you are looking for. Options I can see
> > would be to add the options of using a blocking type API, maybe
> > something like:
> > 
> > sdca_ump_notify_owner() - this could probably be part of
> >                           sdca_ump_get_owner_host()
> > sdca_ump_wait_for_owner()
> > sdca_ump_send_message_and_wait() - this would like be a wrapper
> >                                    for a write and the first two.
> > 
> > But I am a little hesitant to switch the FDL process over this,
> > has to start firing off work queues etc. and everything gets a
> > little more complex.
> > 
> > Or one could add something like:
> > 
> > sdca_ump_cancel_timeout()
> > sdca_ump_schedule_timeout(callback, timeout)
> > 
> > This probably integrates nicer with the IRQ driven way the FDL
> > is implemented at the moment.
> > 
> > Would something like one of those be what you are looking for? Or
> > are you really looking for a much higher level API with some sort
> > of message queue? Although if going in that way I get very very
> > nervous about all the SDCA weirdness.
> 
> Oh I wasn't thinking at all of a message queue with a
> higher-level API, more something along the lines of the SOF/cAVS
> IPC based on doorbells.

I am not super familiar with the inner workings of SOF but at
first glance it does look like exactly the thing I was hoping to
avoid :-)

> You probably want an async mechanism where the set_owner()
> returns immediately and is followed by a wait with a configurable
> timeout. I don't really get the nuance between your two proposals
> but they go in the direction I had in mind.

The difference was intended to be the first is a blocking API
(ie. function returns on either owner being transferred back to
you or the timeout expires). The second was intended to be async
and based on a callback ie. returns immediately and the callback
is called when the timeout expires so you can run whatever error
handling you want.

> That said, I do think you'll have to deal with workqueues,
> not sure how else to deal with the protocol. If you have an
> interrupt that requires a follow-up UMP-based check, things
> could get messy with an interrupt blocking another one. We had
> similar problems with the SOF IPC and for the standard SoundWire
> interrupts. Best to keep interrupt handlers simple and signal
> stuff to do for workqueues.

Definitely agree that blocking in the IRQs is not what we want,
hence my previous comments about preferring the callback based
option.

For the most part HID and FDL are extremely device led
processes. We don't really need to keep super complex state on the
host side as we don't initiate anything, we are just responding
to what the device wants to do. To my mind keeping complex state
on the host side likely increases the chance something goes wrong.

I will have a think see if I can come up with a nice way to
integrate a timeout to individual UMP owner transfers, but I am
not exactly sure how much value this adds for the currently
implemented features. HID won't use this, and FDL already has a
timeout for the FDL process, so one still sees if it failed and
as you can see the status and response pairs debugging should be
fairly easy.

Once these timeouts exist we have to pick values for them,
because SDCA is a huge huge fan of asking you to wait for
something but not saying for how long. If you have any thoughts
on this that would be appreciated too, but mostly I will just
pluck some vaguely reasonable sounding values as I did for the
existing FDL timeouts.

Thanks,
Charles

  reply	other threads:[~2025-09-10 15:40 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-05 14:31 [PATCH 00/15] Add SDCA UMP/FDL support Charles Keepax
2025-09-05 14:31 ` [PATCH 01/15] regmap: sdw-mbq: Don't assume the regmap device is the SoundWire slave Charles Keepax
2025-09-08 11:35   ` Pierre-Louis Bossart
2025-09-08 12:38     ` Charles Keepax
2025-09-05 14:31 ` [PATCH 02/15] ASoC: SDCA: Add manual PM runtime gets to IRQ handlers Charles Keepax
2025-09-08 11:42   ` Pierre-Louis Bossart
2025-09-08 13:31     ` Charles Keepax
2025-09-08 14:15       ` Charles Keepax
2025-09-09 12:56       ` Pierre-Louis Bossart
2025-09-05 14:31 ` [PATCH 03/15] ASoC: SDCA: Pass SoundWire slave to HID Charles Keepax
2025-09-05 14:31 ` [PATCH 04/15] ASoC: SDCA: Pass device register map from IRQ alloc to handlers Charles Keepax
2025-09-08 11:49   ` Pierre-Louis Bossart
2025-09-08 12:56     ` Charles Keepax
2025-09-09 13:05       ` Pierre-Louis Bossart
2025-09-09 16:43         ` Charles Keepax
2025-09-05 14:31 ` [PATCH 05/15] ASoC: SDCA: Update externally_requested flag to cover all requests Charles Keepax
2025-09-05 14:31 ` [PATCH 06/15] ASoC: SDCA: Factor out a helper to find SDCA IRQ data Charles Keepax
2025-09-05 14:31 ` [PATCH 07/15] ASoC: SDCA: Rely less on the ASoC component in IRQ handling Charles Keepax
2025-09-08 10:27   ` Liao, Bard
2025-09-08 12:56     ` Charles Keepax
2025-09-08 14:43       ` Charles Keepax
2025-09-09  1:42         ` Liao, Bard
2025-09-09  8:56           ` Charles Keepax
2025-09-10  1:33             ` Liao, Bard
2025-09-08 11:55   ` Pierre-Louis Bossart
2025-09-08 12:58     ` Charles Keepax
2025-09-05 14:31 ` [PATCH 08/15] ASoC: SDCA: Force some SDCA Controls to be volatile Charles Keepax
2025-09-05 14:31 ` [PATCH 09/15] ASoC: SDCA: Add UMP buffer helper functions Charles Keepax
2025-09-08 12:02   ` Pierre-Louis Bossart
2025-09-08 13:15     ` Charles Keepax
2025-09-09 13:14       ` Pierre-Louis Bossart
2025-09-09 16:52         ` Charles Keepax
2025-09-10 12:09           ` Pierre-Louis Bossart
2025-09-10 13:37             ` Charles Keepax
2025-09-10 14:29               ` Pierre-Louis Bossart
2025-09-10 15:39                 ` Charles Keepax [this message]
2025-09-11 12:33                   ` Pierre-Louis Bossart
2025-09-11 13:07                     ` Charles Keepax
2025-09-12 10:15                       ` Pierre-Louis Bossart
2025-09-12 10:33                         ` Charles Keepax
2025-09-12 11:30                           ` Pierre-Louis Bossart
2025-09-05 14:31 ` [PATCH 10/15] ASoC: SDCA: Add SDCA FDL data parsing Charles Keepax
2025-09-05 14:31 ` [PATCH 11/15] ASoC: SDCA: Add FDL library for XU entities Charles Keepax
2025-09-08 12:14   ` Pierre-Louis Bossart
2025-09-08 13:16     ` Charles Keepax
2025-09-09 13:14       ` Pierre-Louis Bossart
2025-09-05 14:31 ` [PATCH 12/15] ASoC: SDCA: Add XU-specific IRQ processing Charles Keepax
2025-09-05 14:31 ` [PATCH 13/15] ASoC: SDCA: Add completion for FDL start and stop Charles Keepax
2025-09-05 14:31 ` [PATCH 14/15] ASoC: SDCA: Add early IRQ handling Charles Keepax
2025-09-05 14:31 ` [PATCH 15/15] ASoC: SDCA: Add HID button IRQ 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=aMGbz3l2n0q9Fhkh@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=peter.ujfalusi@linux.intel.com \
    --cc=pierre-louis.bossart@linux.dev \
    --cc=rafael@kernel.org \
    --cc=shumingf@realtek.com \
    --cc=yung-chuan.liao@linux.intel.com \
    /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