On Tue 06 Aug 2024 at 08:50, Sebastian Andrzej Siewior bigeasy@linutronix.de wrote:
On 2024-08-05 18:07:28 [+0200], Jerome Brunet wrote:
Hi Sebastian,
Hi Jerome,
Thanks a lot for taking the time to dig into the driver specifics. The IRQ handler is actually not awfully critical in this case. The HW will continue to run regardless of the IRQ being acked or not
The purpose of the handler is mainly to let Alsa know that 1 (or more) period is ready. If alsa is too slow to react, and the buffer allows just a few periods, the HW may under/overflow the buffer.
IRQF_ONESHOT is fine because snd_pcm_period_elapsed() 'notifies' all past periods, not just one. The irq handler does not need to run again until this function has been called. It also helps if the period is ridiculously small, to try to reduce the number of IRQs.
IRQF_ONESHOT is used to disable to keep the IRQ line disabled (after the primary handler) while the threaded handler is running. This implies that the primary handler must not be threaded under PREEMPT_RT. …
This is the point I was missing. It is clear now. Thanks a lot.
I have tweaked #1 and added a few tags but the gist remains the same. I was going to add you under 'Suggested-by' but maybe putting you as the actual Author would be more appropriate.
What do you prefer ?