This is wrong and I only just noticed it before getting ready to finish
up work - whether we need to use the new or old state depends on if
we're enabling or disabling - otherwise we'll end up with an unexpected
!nv_crtc
Will send a respin of this tomorrow
On Tue, 2026-08-18 at 19:48 -0400, Lyude Paul wrote:
> Another leftover spot where we still use nv_encoder->crtc. Get rid of
> it
> and do the right thing: get the currently assigned CRTC from the new
> atomic
> state.
>
> Signed-off-by: Lyude Paul <[email protected]>
> Reported-by: Marek Czernohous <[email protected]>
> ---
> drivers/gpu/drm/nouveau/dispnv50/disp.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> index f19820dc055ae..63d554e97fb62 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> @@ -2171,10 +2171,14 @@ nv50_disp_atomic_commit_core(struct
> drm_atomic_commit *state, u32 *interlock)
> list_for_each_entry(outp, &atom->outp, head) {
> if (outp->encoder->encoder_type !=
> DRM_MODE_ENCODER_DPMST) {
> struct nouveau_encoder *nv_encoder =
> nouveau_encoder(outp->encoder);
> + struct nouveau_crtc *nv_crtc =
> nv50_outp_get_new_crtc(state, nv_encoder);
> +
> + if (drm_WARN_ON(drm->dev, !nv_crtc))
> + continue;
>
> if (outp->enabled) {
> - nv50_audio_enable(outp->encoder,
> nouveau_crtc(nv_encoder->crtc),
> - nv_encoder->conn,
> NULL, NULL);
> + nv50_audio_enable(outp->encoder,
> nv_crtc, nv_encoder->conn, NULL,
> + NULL);
> outp->enabled = outp->disabled =
> false;
> } else {
> if (outp->disabled) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.