A Linux kernel engineer at Microsoft is working on a useful Linux desktop improvement. Hamza Mahfooz who previously worked for AMD on their AMDGPU Linux display driver code has been spearheading work on a KMS recovery mechanism to help kernel mode-setting display drivers recover in case of problems.
Hamza’s work is trying to address the possibility of the display stalling indefinitely where a hard reset of the system is then needed to recover.
Instead of stalling indefinitely, the KMS recovery mechanism aims to force a full mode-setting to re-program the state from scratch. Or if that fails, a new optional function allowing for driver/vendor-specific handling could be called for trying to address the stall / page-flip timeout.
“There should be a mechanism for drivers to respond to flip_done timeouts. Since, as it stands it is possible for the display to stall indefinitely, necessitating a hard reset. So, introduce a new mechanism that tries various methods of recovery with increasing aggression, in the following order:
1. Force a full modeset (have the compositor reprogram the state from scratch).
3. As a last resort, have the driver attempt a vendor specific reset (assuming it provides an implementation to drm_crtc_funcs.page_flip_timeout()).”
That recovery mechanism infrastructure is currently out for review on the mailing list.
