git: 428517a7712e - main - sound: Notify devd when no devices are connected

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Tue, 03 Mar 2026 11:32:59 UTC
The branch main has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=428517a7712e44b58e0687fbee4037a8ebe5bf5a

commit 428517a7712e44b58e0687fbee4037a8ebe5bf5a
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-03-03 11:32:38 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-03-03 11:32:38 +0000

    sound: Notify devd when no devices are connected
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Reviewed by:    imp
    Differential Revision:  https://reviews.freebsd.org/D55531
---
 sbin/devd/devd.conf.5     |  4 +++-
 sbin/devd/snd.conf        | 10 ++++++++++
 sys/dev/sound/pcm/sound.c |  2 ++
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/sbin/devd/devd.conf.5 b/sbin/devd/devd.conf.5
index b1fca89991ed..a1d6a9051389 100644
--- a/sbin/devd/devd.conf.5
+++ b/sbin/devd/devd.conf.5
@@ -38,7 +38,7 @@
 .\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 .\" SOFTWARE.
 .\"
-.Dd July 9, 2025
+.Dd February 26, 2026
 .Dt DEVD.CONF 5
 .Os
 .Sh NAME
@@ -666,6 +666,8 @@ variable.
 Connected output device specified in
 .Pa cdev
 variable.
+.It Li SND Ta Li CONN Ta Li NODEV Ta
+No connected devices.
 .El
 .Pp
 .\"
diff --git a/sbin/devd/snd.conf b/sbin/devd/snd.conf
index a45f427f6c79..5ca0be86e246 100644
--- a/sbin/devd/snd.conf
+++ b/sbin/devd/snd.conf
@@ -24,3 +24,13 @@ notify 0 {
 	# See comment above.
 	action			"/usr/sbin/virtual_oss_cmd /dev/vdsp.ctl -P /dev/$cdev";
 };
+
+notify 0 {
+	match "system"		"SND";
+	match "subsystem"	"CONN";
+	match "type"		"NODEV";
+
+	# No connected devices. Disable both recording and playback to avoid
+	# repeated virtual_oss error messages.
+	action			"/usr/sbin/virtual_oss_cmd /dev/vdsp.ctl -f /dev/null";
+};
diff --git a/sys/dev/sound/pcm/sound.c b/sys/dev/sound/pcm/sound.c
index abd92d93e02d..305d663cd6ad 100644
--- a/sys/dev/sound/pcm/sound.c
+++ b/sys/dev/sound/pcm/sound.c
@@ -483,6 +483,8 @@ pcm_unregister(device_t dev)
 		snd_unit = pcm_best_unit(-1);
 		if (snd_unit_auto == 0)
 			snd_unit_auto = 1;
+		if (snd_unit < 0)
+			devctl_notify("SND", "CONN", "NODEV", NULL);
 	}
 
 	return (0);