[Intel-gfx] [PATCH 0/5] Link Training failure handling during modeset
Manasi Navare
manasi.d.navare at intel.com
Fri Nov 18 07:13:15 UTC 2016
Submitting this series again since it had to be rebased dur to changes
in drm that got merged.
The idea presented in these patches is to address link training failure
in a way that:
a) changes the current happy day scenario as little as possible, to avoid
regressions, b) can be implemented the same way by all drm drivers, c)
is still opt-in for the drivers and userspace, and opting out doesn't
regress the user experience, d) doesn't prevent drivers from
implementing better or alternate approaches, possibly without userspace
involvement. And, of course, handles all the issues presented.
The solution is to add a "link status" connector property. In the usual
happy day scenario, this is always "good". If something fails during or
after a mode set, the kernel driver can set the link status to "bad",
prune the mode list based on new information as necessary, and send a
hotplug uevent for userspace to have it re-check the valid modes through
getconnector, and try again. If the theoretical capabilities of the link
can't be reached, the mode list is trimmed based on that.
If the userspace is not aware of the property, the user experience is
the same as it currently is. If the userspace is aware of the property,
it has a chance to improve user experience. If a drm driver does not
modify the property (it stays "good"), the user experience is the same
as it currently is. A drm driver can also choose to try to handle more
of the failures in kernel, hardware not limiting, or it can choose to
involve userspace more. Up to the drivers.
The reason for adding the property is to handle link training failures,
but it is not limited to DP or link training. For example, if we
implement asynchronous setcrtc, we can use this to report any failures
in that.
Finally, while DP CTS compliance is advertized (which is great, and
could be made to work similarly for all drm drivers), this can be used
for the more important goal of improving user experience on link
training failures, by avoiding black screens.
Manasi Navare (5):
drm: Add a new connector property for link status
drm: Set DRM connector link status property
drm/i915: Update CRTC state if connector link status property changed
drm/i915: Find fallback link rate/lane count
drm/i915: Implement Link Rate fallback on Link training failure
drivers/gpu/drm/drm_atomic_helper.c | 7 ++
drivers/gpu/drm/drm_connector.c | 54 ++++++++++++++
drivers/gpu/drm/i915/intel_dp.c | 103 +++++++++++++++++++++++++-
drivers/gpu/drm/i915/intel_dp_link_training.c | 28 ++++++-
drivers/gpu/drm/i915/intel_drv.h | 7 ++
include/drm/drm_connector.h | 9 ++-
include/drm/drm_mode_config.h | 5 ++
include/uapi/drm/drm_mode.h | 4 +
8 files changed, 212 insertions(+), 5 deletions(-)
--
1.9.1
More information about the Intel-gfx
mailing list