From nobody Mon May 25 05:12:27 2026 Received: from mail-dy1-f173.google.com (mail-dy1-f173.google.com [74.125.82.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D35A40C5B6 for ; Mon, 18 May 2026 14:32:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779114742; cv=none; b=iwChPAxKNmtixmSObAd+eId4a3S++sCKiPkLkBbEplKap0wm1PeYtz6+54jxK87KLo5aZSYmGeux0k8surcnYObWyKOO7aL+oA2oxEoo3mg9scPfbfYxUeHjL+FSqgjuni6hfZaEw3fd3j9HKAfl6K5m8ovRqOvMrvF9Hxw/QAw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779114742; c=relaxed/simple; bh=WU/ixeeXgWodEpKM2ABkeTnuybuFAzfoH2evxyYyYHI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=GUAKfhnDzkEApnroLH1WEcIm11gzuooJSQIw1Z+WdrOo176ADGtEaKQNZUWA8ZS2/yKpDsxM8HjJpyPsrYwIqOswRvOr8PIdsCDvivNNAzmbjLpJq+fYSTs3vA7RDD14xO2VJxqjL1fFr8tnNGhTkExNZjQg/RUqxE3uzqR6Uyo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OoE5t2wW; arc=none smtp.client-ip=74.125.82.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OoE5t2wW" Received: by mail-dy1-f173.google.com with SMTP id 5a478bee46e88-2ef2a1cc06dso8442249eec.0 for ; Mon, 18 May 2026 07:32:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779114735; x=1779719535; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=a7v5fmjNDe5pdh+mZp306lvLb186vTmBdoWrk3fqYYs=; b=OoE5t2wWU51JKeUCgKY8ycvwtnOukHUHhZw+2KPrRf51jbJg6gn+v1dBAPpMSVWCTN XbpNPv4b7Ha2bhyoUAIKapEaPq5k60ekXENCmlvfh2m4GbJ0uF2jYN42sd4sSi4BEasR pxDgggCSupX1jCJ/cGBONG34woW0RUdpf/E5h38f43VXFFuVxIu7CBMsTBU47Qz/YF1k E0j4Ei6vqf3P5KXzWbFB10oR6vp8Am955kSDgqf8Uj+kppr4X8hL3eTcKvSzjd1wpnhw vA2hBCbLmtD10SE/7E5h7s3uQrY1p+PPO5Dz6LiHdOGcvbeu6ClO95m/Jpn/tFnLgAzl lJKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779114735; x=1779719535; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=a7v5fmjNDe5pdh+mZp306lvLb186vTmBdoWrk3fqYYs=; b=EOAGYoFblsV+PUPkS5QUgSrv6Hw8ldgcUltWPg1b5/w1rR+QWJKYoShMidwd2OhlQi Qayr/cNJSnS0CndmiJr3EWyMmi4CV0xS7sk3olqIVJUDTmrcbttM6Bgrt0VxZ66pyX/I pV52EMBio1ra3vu6uPXDGofOn0JNhwInKuhpiVrdQzXCGUB8z+tSrSnbglB54cDT6lA5 5BnNwY8GjgYHEH4sEl3AT8RcyrjbLWz6rfp+lttBZ6pjXugESWwrn9CP1RJkt15V6RqT g7PHi2aqFKk+xEdyLHQP8NWaQVsiOVD3T6pm7xqQuuSnmfFlmWTYSwK4RIDd0A0rMhhu SYCw== X-Forwarded-Encrypted: i=1; AFNElJ8b66JyZWv/leac3Y1xKj4X0amC+/V86ve/OdZ3Is3pj5vdqpjL8XSHiydd7ZojEw/OszQ8AfdH1uESaKc=@vger.kernel.org X-Gm-Message-State: AOJu0YyZwcYPFp3Naoy3Kg7B8agmmC5DEvlZZpqXQA4KZMWGvoVJWnGU AhsWbWfBUXfYIfjzHvhSu+1rnGJ5K0jagYNv7ZJIUj9LcIwM20mtO8Cw X-Gm-Gg: Acq92OH7zZlJMW68/feWsKN8BSR3TvjHE0IVXKC9NxGPAHD2B1e7R8M0VAkWlx4IeQY NzYhpWgbs+EO9Z+hPjr24chGqabYhIJ8NncdCo3ouzujDKCIt17CvSns/XJcQdmHIUgix2cVfiJ QuO0L3qfmQAAMOAs116VUle0qc7cMtuMhceKRhJ4XpCl2QTnYE4pXU1H6eggDpDrib5hohpg86x eg+bjapff9j41A4ca5NrDKS26IvogLC052/al2gleY4td6bKp0/X15Grr8Cs/7RoA4xbLjkP137 XsWJbMgATFttyCdT6tFP0qkvTbRQ/06n5kUOQ7JCa5e1dz9RHGBJD2L/eqttRNxPI9gWDw/gAMp 1nwI80lJ5T1QiyrNtUT2OvM6tYE4rKGcT7lLLkoGl+f5soQ41GXqQ9rj96qU3YMdbAXoJyMBxRp HWEJgf2CAaxJwdIsu/tvE4CLPZ9I+8pEGfbvAk7bZUgddm6uh3xNSbnWRQEey2khZkS2Xy07qqr w== X-Received: by 2002:a05:7301:2c8a:b0:2f2:32bc:787d with SMTP id 5a478bee46e88-30398637044mr6248342eec.23.1779114734743; Mon, 18 May 2026 07:32:14 -0700 (PDT) Received: from [192.168.1.18] (177-4-162-74.user3p.v-tal.net.br. [177.4.162.74]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-302973bc9d4sm13570988eec.23.2026.05.18.07.32.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 07:32:14 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Mon, 18 May 2026 11:32:05 -0300 Subject: [PATCH] ALSA: ice1724: Fix blocking open for independent surround PCMs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-ice1724-blocking-open-v1-1-1bfa3e5aa7cf@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/yXMQQrCMBBG4auUWTvQjKWxXkW6MONvHZWkJCpC6 d2NuvwW7y1UkA2F9s1CGS8rlmKF2zSkl2OcwHaqJmmlbzvZsSmcl47DPenN4sRpRmQXvNehh2x loNrOGWd7/76H8e/yDFfo4zujdf0AP9pxyXkAAAA= X-Change-ID: 20260428-ice1724-blocking-open-1b77c96e2329 To: Takashi Iwai , Jaroslav Kysela Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?C=C3=A1ssio_Gabriel?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2698; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=WU/ixeeXgWodEpKM2ABkeTnuybuFAzfoH2evxyYyYHI=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDFncSi9mbZ3/9+7CyZ79TBK50oqyanc2/a0xql5wo+757 5nz5WyPdJSyMIhxMciKKbKsTlpkuafrwdX6uBUeMHNYmUCGMHBxCsBE7OoZ/srsnHR1gqtr15mn c8JumTFebdB+1uUssmORcMCk5WVb5k5k+KepF2b3dO78p0a3VikunShRra178tObevdTHHHuD49 7TOACAA== X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 The independent surround playback open path rejects a substream when the matching PDMA channel is reserved by the multi-channel PDMA0 stream. It currently returns -EBUSY for that case, although the driver has carried a FIXME noting that blocking mode is not handled properly. ALSA PCM open waits and retries only when the low-level open callback returns -EAGAIN. Returning -EBUSY therefore makes blocking opens fail immediately, the same as nonblocking opens. Return -EAGAIN for the temporary PDMA0 reservation conflict. The PCM core continues to report -EBUSY for O_NONBLOCK callers, while blocking callers sleep and retry. Also wake the independent surround PCM wait queue when hw_free releases a PDMA reservation. The reservation can be released by the pro PCM, while waiters are sleeping on the independent surround PCM, so waking the current substream PCM is not sufficient for this cross-PCM reservation. Signed-off-by: C=C3=A1ssio Gabriel --- sound/pci/ice1712/ice1724.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c index 2e64f9c020e5..79d57938a1c8 100644 --- a/sound/pci/ice1712/ice1724.c +++ b/sound/pci/ice1712/ice1724.c @@ -730,13 +730,22 @@ static int snd_vt1724_pcm_hw_params(struct snd_pcm_su= bstream *substream, static int snd_vt1724_pcm_hw_free(struct snd_pcm_substream *substream) { struct snd_ice1712 *ice =3D snd_pcm_substream_chip(substream); + bool released =3D false; int i; =20 - guard(mutex)(&ice->open_mutex); - /* unmark surround channels */ - for (i =3D 0; i < 3; i++) - if (ice->pcm_reserved[i] =3D=3D substream) + scoped_guard(mutex, &ice->open_mutex) { + /* unmark surround channels */ + for (i =3D 0; i < 3; i++) { + if (ice->pcm_reserved[i] !=3D substream) + continue; ice->pcm_reserved[i] =3D NULL; + released =3D true; + } + } + + if (released && ice->pcm_ds) + wake_up(&ice->pcm_ds->open_wait); + return 0; } =20 @@ -1364,7 +1373,7 @@ static int snd_vt1724_playback_indep_open(struct snd_= pcm_substream *substream) scoped_guard(mutex, &ice->open_mutex) { /* already used by PDMA0? */ if (ice->pcm_reserved[substream->number]) - return -EBUSY; /* FIXME: should handle blocking mode properly */ + return -EAGAIN; } runtime->private_data =3D (void *)&vt1724_playback_dma_regs[substream->nu= mber]; ice->playback_con_substream_ds[substream->number] =3D substream; --- base-commit: 910e9f1bc3bc96e6d067c405ba30d69c4feff46e change-id: 20260428-ice1724-blocking-open-1b77c96e2329 Best regards, -- =20 C=C3=A1ssio Gabriel