Hello Marek,

I have a very similar device iMac9.1, also with MCP79

03:00.0 VGA compatible controller [0300]: NVIDIA Corporation C79 [GeForce 9400] 
[10de:0867] (rev b1)

I'm facing various issues, including the bug below

https://lore.freedesktop.org/nouveau/[email protected]/T/#u

Do you think your patch would fix this? Would it apply also to kernel 6.12 or 
does it depend on some new changes in 6.18.

Regards
Fab


Le 09/04/2026 à 17:09, Marek Czernohous a écrit :
Hi,

this is my first patch series for the kernel. I'm running an Apple Mac
Mini with an NVAC (MCP79) chipset and DisplayPort output, and hit three
separate stability issues with the nouveau driver on kernel 6.18.

The patches are independent but together they bring the NVAC from
"needs NvMSI=0 workaround and can't run Wayland" to fully stable
operation with MSI enabled, working DPMS, and functional Wayland
(tested with Weston).

Patch 1: The MSI re-arm function for G94 uses memory-mapped register
access (nv40), which is unreliable on NVAC — the sister chipset NVAA
already has MSI disabled entirely for this reason. Switching to the
PCI config space method (nv46) fixes sporadic FIFO errors and hangs.

Patch 2: nv50_sor_atomic_disable() dereferences nv_encoder->crtc
unconditionally via container_of(). Under Wayland atomic modesetting,
the CRTC can become NULL between check and commit, causing a kernel
crash. Adding a NULL guard fixes Wayland session teardown.

Patch 3: Transient DisplayPort link glitches on NVAC cause unnecessary
disconnect/reconnect cycles. A single 100ms retry in the HPD IRQ
handler catches these without affecting real unplug detection.

All three patches were tested on the same machine (NVAC 0xac080b1,
DP output) over multiple days with DPMS cycling, VT switching, and
Wayland sessions.

Thanks,
Marek

Marek Czernohous (3):
   drm/nouveau/pci: use nv46 MSI rearm for G94 (NVAC/MCP79)
   drm/nouveau/kms: add NULL check for CRTC in nv50_sor_atomic_disable
   drm/nouveau/dp: retry link check once on HPD IRQ before disconnect

  drivers/gpu/drm/nouveau/dispnv50/disp.c       | 8 +++++++-
  drivers/gpu/drm/nouveau/nouveau_display.c     | 4 ++++
  drivers/gpu/drm/nouveau/nvkm/subdev/pci/g94.c | 2 +-
  3 files changed, 12 insertions(+), 2 deletions(-)


Reply via email to