From nobody Tue Apr 7 15:44:52 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fqr9d3YRdz6YSqB for ; Tue, 07 Apr 2026 15:44:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fqr9c6sdCz3qNh for ; Tue, 07 Apr 2026 15:44:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775576693; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dlo7hJaKyzcGAl/DnZhh8M5iTkrbdvatKsNO1Uv+Fg4=; b=kSnBnhGuP8Y4z7Pfh6K3UvhXGrzgpqHJeXHMkLRm+GkLHu7XoQl/OFkZAgEJdBcpEV8H2P 1VG9lNtvE+gy9nBUIxRvlro0XNnZkZhxNYQd98pQVeQpJMbM3PYm4H6dSieK84j5giXF/J j6owh0/938LmenqdbAGIC+6WLPPgTNTVAgIQLl7jbWWA9OZ7LMmn/SeFEOgY82zkYl2lxt 1J+BS9S0GuTeLq7o1lyPmMflmowG3weCMnfnWbNMNVl6ZWCZD0V7Qnzc13Nef3lzDMWGbD G9/mMdYKyzDTm5WkpRzNLBW1aEuLf9s1cH1zLMu4rqP44+sr2KLRJZC2YKOs9w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775576693; a=rsa-sha256; cv=none; b=evFOwd3DAFihgzLPNfDkg46qu5FNDpKwcQTGyHRQ88nd7gkG9CghIqYuVqaSIrkcDte3x6 YKxYVT+GKOtfSHsUrJwgH8tVltVF5KLUb9OPwlCxTPHtDccvP3Z2L1kJMSA0eTHogjDoIh hUaJkJ65JJ26ZOD+2fdFWuFLWjM2tANDmfHSk1/C79PH2yC7yAKw0g1wrWIOW5x8+Kheol s9bB5IkqV67yltQxN9GPeVSe9kH75uPJ6k5ghy69iowSJ92RmoASJNVhibB/P824iM8ftC vzjUJJOCcWLkJwPft9sMQT5RLRCfNt3+O1tISOW+OEWSNSS4igntkXim9Nqe+g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775576693; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dlo7hJaKyzcGAl/DnZhh8M5iTkrbdvatKsNO1Uv+Fg4=; b=OOHCa5lHXGZAihiU5FRhVEamJo6S27ZLjHZuzypN/GWR3WCm3xvC71yhzhzqFqh54Cj9yq bcsrLhFp13l5Seth+ry9m0UT3KBRR3Ur4GGS7Knf1zDVOSMWAlrH4lTgYO9pIkZ4PUg2lq Pm+y0q4+rVo3hxm7MVYw0Gz5UUvc39MsyWqkqGfNjHxinp9qQucHYgCy2Mfgpyz8AvG/+w sqJkX27j3cVMPPlcURyxRFYczsuNcEnUMmymCxDSo38aNzPUpq8BO3hWj5Xj38S+h3jMFF G4vNHAeDn80CIRdKjkbOIMPJGseODfudQ2K47s/mJJkFw2LbbQdAzjNu6UShNw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fqr9c6K1xzmRx for ; Tue, 07 Apr 2026 15:44:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42a6e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 07 Apr 2026 15:44:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Christos Margiolis Subject: git: 8b18fc456bb1 - main - sound: Simplify parts of chn_notify() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8b18fc456bb136112e166508a9182718cdd44be2 Auto-Submitted: auto-generated Date: Tue, 07 Apr 2026 15:44:52 +0000 Message-Id: <69d52674.42a6e.137ef8b7@gitrepo.freebsd.org> The branch main has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=8b18fc456bb136112e166508a9182718cdd44be2 commit 8b18fc456bb136112e166508a9182718cdd44be2 Author: Christos Margiolis AuthorDate: 2026-04-07 15:44:29 +0000 Commit: Christos Margiolis CommitDate: 2026-04-07 15:44:29 +0000 sound: Simplify parts of chn_notify() Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D56240 --- sys/dev/sound/pcm/channel.c | 47 +++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index c9edce27c8cd..9b71d93ac7f9 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -2349,7 +2349,7 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) * If the hwchan is running, we can't change its rate, format or * blocksize */ - run = (CHN_STARTED(c)) ? 1 : 0; + run = CHN_STARTED(c); if (run) flags &= CHN_N_TRIGGER; @@ -2360,16 +2360,17 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) chn_setlatency(c, chn_latency); } - if ((flags & CHN_N_TRIGGER) && !(c->flags & CHN_F_VCHAN_DYNAMIC)) { - nrun = CHN_EMPTY(c, children.busy) ? 0 : 1; - if (nrun && !run) - err = chn_start(c, 1); - if (!nrun && run) - chn_abort(c); - flags &= ~CHN_N_TRIGGER; - } - if (flags & CHN_N_TRIGGER) { + if (!(c->flags & CHN_F_VCHAN_DYNAMIC)) { + nrun = !CHN_EMPTY(c, children.busy); + if (nrun && !run) + err = chn_start(c, 1); + if (!nrun && run) + chn_abort(c); + + return (err); + } + if (c->direction == PCMDIR_PLAY) { vchanformat = &c->parentsnddev->pvchanformat; vchanrate = &c->parentsnddev->pvchanrate; @@ -2378,7 +2379,6 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) vchanrate = &c->parentsnddev->rvchanrate; } - /* Dynamic Virtual Channel */ if (!(c->flags & CHN_F_VCHAN_ADAPTIVE)) { bestformat = *vchanformat; bestspeed = *vchanrate; @@ -2394,6 +2394,7 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) vpflags = 0; CHN_FOREACH(ch, c, children.busy) { + nrun++; CHN_LOCK(ch); if ((ch->format & AFMT_PASSTHROUGH) && snd_fmtvalid(ch->format, caps->fmtlist)) { @@ -2401,7 +2402,6 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) bestspeed = ch->speed; CHN_UNLOCK(ch); vpflags = CHN_F_PASSTHROUGH; - nrun++; break; } if ((ch->flags & CHN_F_EXCLUSIVE) && vpflags == 0) { @@ -2416,13 +2416,11 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) } CHN_UNLOCK(ch); vpflags = CHN_F_EXCLUSIVE; - nrun++; continue; } if (!(c->flags & CHN_F_VCHAN_ADAPTIVE) || vpflags != 0) { CHN_UNLOCK(ch); - nrun++; continue; } if (ch->speed > bestspeed) { @@ -2433,7 +2431,6 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) besthwformat = snd_fmtbest(ch->format, caps->fmtlist); if (!(besthwformat & AFMT_VCHAN)) { CHN_UNLOCK(ch); - nrun++; continue; } if (AFMT_CHANNEL(besthwformat) > @@ -2444,7 +2441,6 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) AFMT_BIT(besthwformat) > AFMT_BIT(bestformat)) bestformat = besthwformat; CHN_UNLOCK(ch); - nrun++; } if (bestformat == 0) @@ -2464,17 +2460,16 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) c->devinfo, bestspeed); err = chn_reset(c, bestformat, bestspeed); } - if (err == 0 && dirty) { - CHN_FOREACH(ch, c, children.busy) { - CHN_LOCK(ch); - if (VCHAN_SYNC_REQUIRED(ch)) - vchan_sync(ch); - CHN_UNLOCK(ch); - } - } if (err == 0) { - if (dirty) + if (dirty) { + CHN_FOREACH(ch, c, children.busy) { + CHN_LOCK(ch); + if (VCHAN_SYNC_REQUIRED(ch)) + vchan_sync(ch); + CHN_UNLOCK(ch); + } c->flags |= CHN_F_DIRTY; + } err = chn_start(c, 1); } } @@ -2491,8 +2486,6 @@ chn_notify(struct pcm_channel *c, u_int32_t flags) vchan_sync(ch); CHN_UNLOCK(ch); } - } - if (err == 0) { c->flags |= CHN_F_DIRTY; err = chn_start(c, 1); }