From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0439A385529 for ; Tue, 18 Aug 2026 23:57:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787097455; cv=none; b=oX2iigCBJbnO5LpsiswolaM+1raHYIn/aAPw795vglDHY8rRS07lQ49ShFkttEvpUHCzg3ubTLWOTPo/MN1iSZ8sE6HGiGNkZm962H9vVDvan1qpXNPfCa07XQnLWgBWPCKUxcYybCzabLoPQLj9lvspTnbfm79TuiqlTKGUORA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787097455; c=relaxed/simple; bh=Tfzt0Z68bihyXdu0vR/jV6efgJzKtIS85Vqf+E2pWXM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pBqHPkjkY8QnDVj0sy211UP9gukXclzkyFVxKLYUL/8R7zNw6MRRHzsXYWjFE6o5jnTJnpKdp17r+9oF3UglsMyM7jj9J/l2Xx9Ds5Ktr8fzo0HrmetJYXzO+YB+1s/l/vRz+EbtMBTf5HsO7fCJTQKUfGBgHfXI4SyMM6IfijE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=QJATYYA6; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="QJATYYA6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787097453; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6joxchIjpSKAZuVd8UNWe0u9ndTjKFHdE9rh6/DiW54=; b=QJATYYA62RWOEJ8rGJ5mc/YD3Ww+CHwfuGmt0TjwhNgDq3ZRHK3oc35xDRTHK6fW9J+mz9 jeoRZkE7WVwiofOgM8NmY9awkyDunFi0h6mrSxFfJi+clE+CaHK22LHfJG9so+XKVy8qnz i2Wpl/TOcfqQmjr8CYcbPvvOS3GFIvY= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-711-rwbj6aTuNea1z1EyPRRfDQ-1; Tue, 18 Aug 2026 19:57:18 -0400 X-MC-Unique: rwbj6aTuNea1z1EyPRRfDQ-1 X-Mimecast-MFC-AGG-ID: rwbj6aTuNea1z1EyPRRfDQ_1787097436 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4890B1956041; Tue, 18 Aug 2026 23:57:16 +0000 (UTC) Received: from GoldenWind.lan (unknown [10.22.80.100]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C0329180049F; Tue, 18 Aug 2026 23:57:13 +0000 (UTC) From: Lyude Paul To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org, Marek Czernohous Cc: "Faith Ekstrand" , "Dave Airlie" , "Marek Czernohous" , "Maarten Lankhorst" , "Luca Ceresoli" , "Kees Cook" , "Marco Crivellari" , "Simona Vetter" , "Ben Skeggs" , "David Airlie" , "Thomas Zimmermann" , "Maxime Ripard" , "Danilo Krummrich" , "Jani Nikula" , "James Jones" , "Lyude Paul" Subject: [PATCH 5/6] drm/nouveau/kms/nv50-: Add nouveau_encoder->audio.crtc Date: Tue, 18 Aug 2026 19:48:47 -0400 Message-ID: <20260818235637.1738055-6-lyude@redhat.com> In-Reply-To: <20260818235637.1738055-1-lyude@redhat.com> References: <20260818235637.1738055-1-lyude@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 This is the only spot in nouveau where we do actually need to keep track of the currently assigned CRTC for an encoder, and it ideally should be happening outside of the modesetting locks. So in preparation for obliterating nouveau_encoder->crtc, let's just add a variable into nouveau_encoder->audio for tracking this and use it instead of nouveau_encoder->crtc. This makes it a lot more obvious that this is only intended for state-tracking for audio. Signed-off-by: Lyude Paul --- drivers/gpu/drm/nouveau/dispnv50/disp.c | 4 +++- drivers/gpu/drm/nouveau/nouveau_encoder.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c index 63d554e97fb62..3bfc04f7ef602 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c @@ -636,7 +636,7 @@ nv50_audio_component_get_eld(struct device *kdev, int port, int dev_id, nv_encoder = nouveau_encoder(encoder); nv_connector = nv_encoder->conn; - nv_crtc = nouveau_crtc(nv_encoder->crtc); + nv_crtc = nv_encoder->audio.crtc; if (!nv_crtc || nv_encoder->outp.or.id != port || nv_crtc->index != dev_id) continue; @@ -757,6 +757,7 @@ nv50_audio_disable(struct drm_encoder *encoder, struct nouveau_crtc *nv_crtc) mutex_lock(&drm->audio.lock); if (nv_encoder->audio.enabled) { nv_encoder->audio.enabled = false; + nv_encoder->audio.crtc = NULL; nvif_outp_hda_eld(&nv_encoder->outp, nv_crtc->index, NULL, 0); } mutex_unlock(&drm->audio.lock); @@ -781,6 +782,7 @@ nv50_audio_enable(struct drm_encoder *encoder, struct nouveau_crtc *nv_crtc, nvif_outp_hda_eld(&nv_encoder->outp, nv_crtc->index, nv_connector->base.eld, drm_eld_size(nv_connector->base.eld)); nv_encoder->audio.enabled = true; + nv_encoder->audio.crtc = nv_crtc; mutex_unlock(&drm->audio.lock); diff --git a/drivers/gpu/drm/nouveau/nouveau_encoder.h b/drivers/gpu/drm/nouveau/nouveau_encoder.h index 4422c6185d498..647322ac1c8df 100644 --- a/drivers/gpu/drm/nouveau/nouveau_encoder.h +++ b/drivers/gpu/drm/nouveau/nouveau_encoder.h @@ -62,6 +62,7 @@ struct nouveau_encoder { /* Protected by nouveau_drm.audio.lock */ struct { bool enabled; + struct nouveau_crtc *crtc; } audio; struct drm_display_mode mode; -- 2.55.0