On Thu, May 04, 2017 at 02:21:26PM -0600, Daniel Drake wrote:
Hi,
Numerous Asus desktops and All-in-one computers (e.g. D520MT) have a regression on Linux 4.9 where the VGA output is shown all-white.
This is a regression caused by:
commit 0ce140d45a8398b501934ac289aef0eb7f47c596 Author: Ville Syrjälä ville.syrjala@linux.intel.com Date: Tue Oct 11 20:52:47 2016 +0300
drm/i915: Clean up DDI DDC/AUX CH sanitation
On these platforms, the VGA output is detected as DP (presumably theres a DP-to-VGA converter on the motherboard). The sanitization done by the code that was removed here was correctly realising that port E's DP aux channel was DP_AUX_A, so it disabled DP output on port A, also showing this message:
[drm:intel_ddi_init] VBT says port A is not DVI/HDMI/DP compatible, respect it
But after this cleanup commit, both port A and port E are activated and the screen shows all-white. Reverting the commit restores usable VGA display output.
The reason the new implementation doesn't catch the duplicate configuration is because the new code only considers ports that are present in the VBT where parse_ddi_port() has run on them (in order to set that port's info->alternate_aux_channel).
In this case, port A is not present in the VBT so it will not have info->alternate_aux_channel set, and the new sanitize_aux_ch will run on port E but will not consider any overlap with port A.
debug logs from an affected kernel: https://gist.github.com/dsd/7e56c9bca7b2345b678cfacdab30ec55
Should we modify sanitize_aux_ch to look at all aux channels, not only for the ports specified in the VBT?
Please check if commit bb1d132935c2 ("drm/i915/vbt: split out defaults that are set when there is no VBT") fixes things for you.