diff options
| author | Cen Zhang <zzzccc427@gmail.com> | 2026-10-25 00:49:49 +0800 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2026-10-26 09:00:55 +0100 |
| commit | a71cef6f641152c7c7bbc17d86f33a3b45cd10a9 (patch) | |
| tree | 58326018b3b379ef34a6831d0a8f14c077ae21e8 /scripts/Makefile.thinlto | |
| parent | 9b30046de03acb3b3f2135d45af6be7ee0b565b6 (diff) | |
| download | linux-a71cef6f641152c7c7bbc17d86f33a3b45cd10a9.tar.gz linux-a71cef6f641152c7c7bbc17d86f33a3b45cd10a9.zip | |
ALSA: opl3: Initialize the timer before publishing a sequencer port
snd_opl3_seq_probe() initializes the delayed-note timer and its lock
after snd_opl3_synth_create_port() has made the native port reachable.
A direct NOTEON does not require a subscription, and a fixed-duration
instrument makes it enter snd_opl3_start_timer().
On sequencer-driver rebind, the card-owned instrument bank remains
available. An event delivered as soon as the port appears can race the
late initialization:
Sequencer driver probe Direct NOTEON
---------------------- -------------
snd_opl3_synth_create_port()
snd_seq_event_port_attach()
publish port
snd_opl3_synth_event_input()
snd_opl3_note_on()
snd_opl3_start_timer()
use tlist and sys_timer_lock
timer_setup(tlist)
spin_lock_init(sys_timer_lock)
sys_timer_status = 0
Initialize the timer, its lock and its status before creating the client
and attaching either port. No event can then reach partially initialized
timer state or have its newly armed timer reinitialized by the probe.
Assisted-by: LLM
Signed-off-by: Cen Zhang <zzzccc427@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/pm-pmb-4552c4e605507d8d9b16-v9-70247b8436e10e26d324-1@gmail.com
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
