02:12awilfox[d]: That's fascinating. I had a similar experience with big endian but I didn't have time to triage it yet
02:13awilfox[d]: My BE branch has this in it:
02:13awilfox[d]: ```patch
02:13awilfox[d]: diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
02:13awilfox[d]: index eed579a6c858..2a8e8d209a61 100644
02:13awilfox[d]: --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
02:13awilfox[d]: +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
02:13awilfox[d]: @@ -809,7 +809,7 @@ nv50_hdmi_enable(struct drm_encoder *encoder, struct nouveau_crtc *nv_crtc,
02:13awilfox[d]: }
02:13awilfox[d]: ret = nvif_outp_hdmi(&nv_encoder->outp, nv_crtc->index, true, max_ac_packet, rekey,
02:13awilfox[d]: - mode->clock, hdmi->scdc.supported, hdmi->scdc.scrambling.supported,
02:13awilfox[d]: + mode->clock, false, hdmi->scdc.scrambling.supported,
02:13awilfox[d]: hdmi->scdc.scrambling.low_rates);
02:13awilfox[d]: if (ret)
02:13awilfox[d]: return;
02:14awilfox[d]: That is on 6.12, fwiw; I didn't bisect but it did work on 5.15
02:14awilfox[d]: (in the BE case, it prevents HDMI from coming on at all)
12:50karolherbst[d]: yeah... I don't think it's the first of such reports, but `scdc` is kinda funky
12:50karolherbst[d]: I think there is some wrong detection going on
14:54dwlsalmeida[d]: airlied[d]: we need to get this upstream, how do you want to go about it?
14:54dwlsalmeida[d]: diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c b/drivers/gpu/drm/nouveau/nouveau_abi16.c
14:54dwlsalmeida[d]: index 2a0617e5fe2a..eaef5effbb3d 100644
14:54dwlsalmeida[d]: --- a/drivers/gpu/drm/nouveau/nouveau_abi16.c
14:54dwlsalmeida[d]: +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c
14:54dwlsalmeida[d]: @@ -379,6 +379,9 @@ nouveau_abi16_ioctl_channel_alloc(ABI16_IOCTL_ARGS)
14:54dwlsalmeida[d]: case NOUVEAU_FIFO_ENGINE_CE:
14:55dwlsalmeida[d]: engine = NV_DEVICE_HOST_RUNLIST_ENGINES_CE;
14:55dwlsalmeida[d]: break;
14:55dwlsalmeida[d]: + case 0x300:
14:55dwlsalmeida[d]: + engine = NV_DEVICE_HOST_RUNLIST_ENGINES_NVDEC;
14:55dwlsalmeida[d]: + break;
14:55dwlsalmeida[d]: default:
14:55dwlsalmeida[d]: return nouveau_abi16_put(abi16, -ENOSYS);
14:55dwlsalmeida[d]: }
14:55dwlsalmeida[d]: @@ -456,10 +459,12 @@ nouveau_abi16_ioctl_channel_alloc(ABI16_IOCTL_ARGS)
14:55dwlsalmeida[d]: goto done;
14:55dwlsalmeida[d]: break;
14:55dwlsalmeida[d]: case NV_DEVICE_INFO_V0_TURING:
14:55dwlsalmeida[d]: - ret = nvif_object_ctor(&chan->chan->user, "abi16CeWar", 0, TURING_DMA_COPY_A,
14:55dwlsalmeida[d]: - NULL, 0, &chan->ce);
14:55dwlsalmeida[d]: - if (ret)
14:55dwlsalmeida[d]: - goto done;
14:55dwlsalmeida[d]: + if (engine != NV_DEVICE_HOST_RUNLIST_ENGINES_NVDEC) {
14:55dwlsalmeida[d]: + ret = nvif_object_ctor(&chan->chan->user, "abi16CeWar", 0, TURING_DMA_COPY_A,
14:55dwlsalmeida[d]: + NULL, 0, &chan->ce);
14:55dwlsalmeida[d]: + if (ret)
14:55dwlsalmeida[d]: + goto done;
14:55dwlsalmeida[d]: + }
14:55dwlsalmeida[d]: break;
14:55dwlsalmeida[d]: default:
14:55dwlsalmeida[d]: break;
14:55dwlsalmeida[d]: I can submit that with both our SoBs on your behalf
14:55dwlsalmeida[d]: if you're busy
14:56dwlsalmeida[d]: (you sent me this as a diff through email 1yr and a half ago)
19:36airlied[d]: I'm not sure it's 100% correct but I might send it out and see if skeggsb9778 thinks it's okay
19:54dwlsalmeida[d]: I see this doesn’t touch Ada nor ampere ?
19:54dwlsalmeida[d]: Does it need a touch up?
19:58skeggsb9778[d]: i'd probably stick that whole switch() in an "if (engine == GR) {}" block