[Development report #25] Audio Stack Improvements

From: Christos Margiolis <christos_at_freebsd.org>
Date: Tue, 10 Dec 2024 15:12:37 UTC
snd_dummy: Fix callout(9) races:
https://cgit.freebsd.org/src/commit/?id=5bd08172b4150503c9cf60ffe3c97716c5bf6fa1

sound: Fix chn_trigger() and vchan_trigger() races:
https://cgit.freebsd.org/src/commit/?id=5ac39263d825d7b2f8a89614a63fee90ffc77c07

sound: Fix hot-unload panics:
https://cgit.freebsd.org/src/commit/?id=2839ad58dd8a4cf5294180fc599800c437a8d4d8

sound: Remove PCM_DETACHING(), SD_F_DETACHING and SD_F_DYING:
https://cgit.freebsd.org/src/commit/?id=6d4c59e26189a8c19fd0832e89f9b089330cbfcb

sound: Remove CHN_F_SLEEPING:
https://cgit.freebsd.org/src/commit/?id=5317480967bfc8bf678e4da3fce81bcb3f5b7836

sound: Remove unused CHN_F_SILENCE:
https://cgit.freebsd.org/src/commit/?id=6d77827b963ec1a72de3f46d51fe14ed30ef437e

sound: Merge ac97 and ac97_patch:
https://cgit.freebsd.org/src/commit/?id=0b4e32912566d802c7a6501d9ce8119f04dbc2fb

sound: Remove dead code from pcm/:
https://cgit.freebsd.org/src/commit/?id=00731aaaed76785af8befe13e9a4e85b3554b3f5

sound: Remove unused code from pcm/g711.h:
https://cgit.freebsd.org/src/commit/?id=b882251204128388eb2f8e4f74e83ff1ca7863c4

sound: Dissolve pcm/intpcm.h:
https://cgit.freebsd.org/src/commit/?id=88eaa1504d12c82a36d83c16e9fd6c41175d2e0a

sound: Merge pcm/matrix_map.h with pcm/matrix.h:
https://cgit.freebsd.org/src/commit/?id=5a217a8d7d2a0dc19eb5d7bb1bd0f21116fbcf69

sound: Fix mis-sorted CHN_F_BITS line:
https://cgit.freebsd.org/src/commit/?id=29ba0cc4d919243436f1bf73a22a554fa5073a44

sound: Do not access cv_waiters:
https://cgit.freebsd.org/src/commit/?id=46a97b9cd6fd4415270afe4070082ae69ee21035

sound: Implement AFMT_FLOAT support:
https://reviews.freebsd.org/D47638

	- Depend on D47932.
	- Make `AFMT_FLOAT` usable from `dev.pcm.X.play|rec.vchanformat`.
	- Implement both little and big endian support.
	- Added a test example.
	- Also received an email from Ariff Abdullah (one of the old
	  authors of sound(4)) proposing the idea of using de/encoding
	  IEEE754s instead of using fpu_kern(9), so I am experimenting
	  with various different approaches at the moment.

sound: Clean up pcm/ includes:
https://reviews.freebsd.org/D47868

sound: Allocate vchans on-demand:
https://reviews.freebsd.org/D47917

sound: Simplify vchan_getparentchannel():
https://reviews.freebsd.org/D47918

sound: Refactor the format conversion framework:
https://reviews.freebsd.org/D47932

sound: Remove SNDBUF_LOCKASSERT():
https://reviews.freebsd.org/D48008

sound: Improve afmt_tab:
https://reviews.freebsd.org/D48009

sound: Get rid of redundant variables in chn_setspeed() and chn_setformat():
https://reviews.freebsd.org/D48011

sound: Return if the new speed/format is the same as the current one:
https://reviews.freebsd.org/D48012

Series of feeder_* refactor patches, which I will put up for review once
I have more feedback on D47932, as they largely depend on it.

MFC'd panic/race fixes and recent patches to stable/14.

Sent call-for-testing regarding recent panic/race fixes:
https://lists.freebsd.org/archives/freebsd-current/2024-November/006727.html

Submitted 2024Q4 status report.

Enrolled in the Foundation's laptop project.

Some bug triaging.

This work is sponsored by the FreeBSD Foundation.

Christos