* Do no reset the max link parameters when userspace reprobes modes
@ 2017-02-07 1:35 Manasi Navare
0 siblings, 0 replies; only message in thread
From: Manasi Navare @ 2017-02-07 1:35 UTC (permalink / raw)
To: intel-gfx, dri-devel; +Cc: daniel.vetter
Hi,
I am working on a solution for handling link failures during or after
the modeset.
In case of link failure, the max link rate/lane count values
are updated to lower link rate/lane count as per the spec and uevent is
sent to the userspace with link-status BAD. The userspace is expected to first
retry the existing mode and do a a full reprobe if this fails.
When userspace reprobes the modes, it calls drmModeGetConnector() IOCTL, that
eventually calls drm_helper_probe_single_connector_modes(). This helper function
calls the connector->func->detect() which in case of i915 calls intel_dp_detect()
which calls intel_dp_long_pulse() that resets the max_link_rate and max_link_lane_count
values.
Now during the link training retry, it uses the reset values of link rate/lane count
instead of using the lowered link rate/lane count values from link failure.
For this to work properly, we should not reset the link rate/lane count values
during the fill_modes() operation from userspace. However the current driver calls
the long pulse handler again during fill_modes and resets all the values as per DPCD reads
which fails to retrain the link at lower rate.
How can we handle this situation? Do we need to call long pulse handler
again during fill_modes()? Any ideas/suggestions?
Regards
Manasi
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-02-07 1:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-07 1:35 Do no reset the max link parameters when userspace reprobes modes Manasi Navare
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox