Hallo macstar und andere!
Ich weiß nicht, ob ich da auf etwas gestoßen bin, gestoßen im Sinne von hier Relevantem. Da ich die Probleme seit dem Kernel 3.16 nicht mehr habe.
[https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.3]
drm/nouveau: Dis/Enable vblank irqs during suspend/resume.
commit 9cba5efab5a8145ae6c52ea273553f069c294482 upstream.
Vblank irqs don't get disabled during suspend or driver
unload, which causes irq delivery after "suspend" or
driver unload, at least until the gpu is powered off.
This could race with drm_vblank_cleanup() in the case
of nouveau and cause a use-after-free bug if the driver
is unloaded.
More annoyingly during everyday use, at least on nv50
display engine (likely also others), vblank irqs are
off after a resume from suspend, but the drm doesn't
know this, so all vblank related functionality is dead
after a resume. E.g., all windowed OpenGL clients will
hang at swapbuffers time, as well as many fullscreen
clients in many cases. This makes suspend/resume useless
if one wants to use any OpenGL apps after the resume.
In Linux 3.16, drm_vblank_on() was added, complementing
the older drm_vblank_off() to solve these problems
elegantly, so use those calls in nouveaus suspend/resume
code.
For kernels 3.8 - 3.15, we need to cherry-pick the
drm_vblank_on() patch to support this patch.
https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.3
drm / Stil:. Dis / Aktivieren Vblank irqs während Suspend / Resume
. begehen 9cba5efab5a8145ae6c52ea273553f069c294482 aufwärts
Vblank irqs nicht während deaktiviert auszusetzen oder Treiber erhalten
Entladen, die IRQ Lieferung nach "Suspend" oder verursacht
Fahrer entladen, zumindest bis die gpu ausgeschaltet ist.
Dies könnte mit drm_vblank_cleanup () bei Rennen
von Jugendstil und eine use-after verursachen -freie Fehler, wenn der Treiber
entladen wird.
Mehr störend im Alltag, zumindest auf NV50
-Display-Engine (wahrscheinlich auch andere), Vblank IRQs sind
nach einer Wiederaufnahme aus dem Ruhe, aber die drm nicht
wissen, so dass alle Vblank verwandten Funktionalität ist tot
nach einem Lebenslauf. Zum Beispiel werden alle Fenster OpenGL-Clients
an SwapBuffers Zeit, wie auch viele Vollbild hängen
Kunden in vielen Fällen. Dies macht Suspend / Resume nutzlos
, wenn man alle OpenGL-Anwendungen nach der Wiederaufnahme verwenden möchte.
In Linux 3.16 wurde drm_vblank_on () hinzugefügt und ergänzt
die ältere drm_vblank_off (), um diese Probleme zu lösen,
elegant, so verwenden Sie diese Anrufe in nouveaus Suspend / Resume
-Code .
Für Kernel 3,8-3,15, müssen wir herauspicken die
drm_vblank_on () Patch, um diesen Patch zu unterstützen.
Gruß Andi