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 14:37:35 +0100	[thread overview]
Message-ID: <aMF/H8yejQ51B65X@opensource.cirrus.com> (raw)
In-Reply-To: <6ee44392-afef-4c63-a8af-f50931b15551@linux.dev>

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:
> > The only notification that comes from the device is the the
> > UMP buffer is being returned to the host, which indicates a HID
> > event has happened. But there is no time out on HID events, it
> > could be months between HID events. Like one could set a timeout
> > and at each timeout just verify the buffer is still set to the
> > device but that seems very cautious. Or one could check the buffer
> > is set as expected on boot, but I would really expect the SDCA
> > reset/boot logic to ensure that is good.
> > 
> > If it is a UMP transfer where the host expects the device to do
> > something and return that may need a timeout but as that is a
> > subset of UMP transfers it feels like it makes more sense to
> > implement the timeouts in the places that need them.
> 
> You have a point that in the case where the host waits for an
> event, then the notion of timeout is irrelevant.
>
> What I was referring to was the case where the host writes
> a message and waits for a notification that the message has
> been handled.
> This could be a write to a buffer or a read from a buffer.
> That's standard IPC stuff, and all existing cases of such
> message-passing IPC do have a timeout built-in. The communication
> is serial by nature since there is a single signaling mechanism,
> so the host has to wait before sending another message.
>
> I am not sure it's a great idea to leave the timeout handling
> at a higher level, because you will have to deal with other
> sources of information. Once a message has been sent with UMP,
> there will be additional signaling that the action requested by
> the host was completed on the peripheral side. In the case of
> FDL, once the firmware buffers have been transferred, possibly
> in different chunks, then the peripheral might have to perform
> an internal reboot/reset. That takes time and it's a different
> level of timeout.
>
> My take is that the UMP should implement basic timeout
> capabilities for just 'buffer passed/ownership changed'
> transition. Things will go wrong and you want information on
> where they went wrong. Implementing timeouts at a higher level
> makes it harder to debug/root cause.

I guess my slight concern here is that SDCA is a huge fan
of corner cases and everything being slightly inconsistent
with itself. So for example we add two things in this patch
chain HID and FDL. HID very clearly wants no timeouts, there
is no waiting for responses, its just get event, do stuff.
And for FDL the vast majority of the signalling is outside of
the actual UMP buffer through the FDL state control. I am sure
once we get around to Algorithm Extension, History Buffers and
Device-to-Device messaging they will have their own set of odd
requirements. So I liked the APIs being fairly low level and
implementing the basic operations, as it leaves space for
implementing the weirdness.

I guess perhaps the first question here, is this something we can
add incrementally or are you seeing this as a bit more fundamental
and needs done before we progress this chain?  (we are getting
a little nervous that devices are going to be shipping in the
not too distant future that are going to require this stuff).

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.

Thanks,
Charles

  reply	other threads:[~2025-09-10 13:37 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 [this message]
2025-09-10 14:29               ` Pierre-Louis Bossart
2025-09-10 15:39                 ` Charles Keepax
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=aMF/H8yejQ51B65X@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