[PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe
Here are the logs without and with drm debug option set: [0.00] Initializing cgroup subsys cpuset [0.00] Initializing cgroup subsys cpu [0.00] Linux version 2.6.35-31-generic (buildd at pluot) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #62+lp722806thor4-Ubuntu SMP Fri Nov 25 11:50:56 UTC 2011 (Ubuntu 2.6.35-31.62+lp722806thor4-generic 2.6.35.13) [0.00] Command line: BOOT_IMAGE=/vmlinuz-2.6.35-31-generic root=UUID=bd9acbc2-0ada-404f-9864-158f93de9ed5 ro crashkernel=384M-2G:64M,2G-:128M quiet splash ... [8.459216] [drm] Radeon Display Connectors [8.459218] [drm] Connector 0: [8.459220] [drm] VGA [8.459223] [drm] DDC: 0x7e50 0x7e40 0x7e54 0x7e44 0x7e58 0x7e48 0x7e5c 0x7e4c [8.459225] [drm] Encoders: [8.459227] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [8.459229] [drm] Connector 1: [8.459231] [drm] S-video [8.459232] [drm] Encoders: [8.459234] [drm] TV1: INTERNAL_KLDSCP_DAC1 [8.459236] [drm] Connector 2: [8.459238] [drm] HDMI-A [8.459239] [drm] HPD2 [8.459242] [drm] DDC: 0x7e40 0x7e60 0x7e44 0x7e64 0x7e48 0x7e68 0x7e4c 0x7e6c [8.459244] [drm] Encoders: [8.459246] [drm] DFP2: INTERNAL_DDI [8.459248] [drm] Connector 3: [8.459249] [drm] DVI-D [8.459252] [drm] DDC: 0x7e40 0x7e50 0x7e44 0x7e54 0x7e48 0x7e58 0x7e4c 0x7e5c [8.459254] [drm] Encoders: [8.459256] [drm] DFP3: INTERNAL_LVTM1 [8.593100] i2c /dev entries driver [8.721280] Raw EDID: [8.721324] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721327] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721330] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721332] <3>00 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 [8.721335] <3>00 00 00 1f 03 00 00 00 00 07 00 00 00 01 00 00 [8.721338] <3>00 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721340] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721343] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721345] [8.721383] radeon :01:05.0: HDMI-A-1: EDID block 0 invalid. [8.721387] [drm:radeon_dvi_detect] HDMI-A-1: probed a monitor, DDC responded but no|invalid EDID [8.721428] [drm:radeon_dvi_detect] HDMI-A-1: detected RS690 floating bus bug, stopping ddc detect [8.871708] [drm] fb mappable at 0xF004 [8.871713] [drm] vram apper at 0xF000 [8.871715] [drm] size 5242880 [8.871717] [drm] fb depth is 24 [8.871719] [drm]pitch is 5120 [8.912957] Console: switching to colour frame buffer device 160x64 [8.925225] fb0: radeondrmfb frame buffer device [8.925228] drm: registered panic notifier [8.964597] [drm] Initialized radeon 2.5.0 20080528 for :01:05.0 on minor 0 [0.00] Initializing cgroup subsys cpuset [0.00] Initializing cgroup subsys cpu [0.00] Linux version 2.6.35-31-generic (buildd at pluot) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #62+lp722806thor4-Ubuntu SMP Fri Nov 25 11:50:56 UTC 2011 (Ubuntu 2.6.35-31.62+lp722806thor4-generic 2.6.35.13) [0.00] Command line: BOOT_IMAGE=/vmlinuz-2.6.35-31-generic root=UUID=bd9acbc2-0ada-404f-9864-158f93de9ed5 ro crashkernel=384M-2G:64M,2G-:128M quiet splash drm.debug=14 log_buf_len=16M ... [8.320490] [drm] Radeon Display Connectors [8.320492] [drm] Connector 0: [8.320494] [drm] VGA [8.320498] [drm] DDC: 0x7e50 0x7e40 0x7e54 0x7e44 0x7e58 0x7e48 0x7e5c 0x7e4c [8.320500] [drm] Encoders: [8.320502] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [8.320504] [drm] Connector 1: [8.320506] [drm] S-video [8.320508] [drm] Encoders: [8.320510] [drm] TV1: INTERNAL_KLDSCP_DAC1 [8.320512] [drm] Connector 2: [8.320514] [drm] HDMI-A [8.320515] [drm] HPD2 [8.320518] [drm] DDC: 0x7e40 0x7e60 0x7e44 0x7e64 0x7e48 0x7e68 0x7e4c 0x7e6c [8.320521] [drm] Encoders: [8.320523] [drm] DFP2: INTERNAL_DDI [8.320525] [drm] Connector 3: [8.320526] [drm] DVI-D [8.320529] [drm] DDC: 0x7e40 0x7e50 0x7e44 0x7e54 0x7e48 0x7e58 0x7e4c 0x7e5c [8.320532] [drm] Encoders: [8.320534] [drm] DFP3: INTERNAL_LVTM1 [8.320598] [drm:drm_helper_probe_single_connector_modes], VGA-1 [8.410041] [drm:drm_helper_probe_single_connector_modes], VGA-1 is disconnected [8.410049] [drm:drm_helper_probe_single_connector_modes], SVIDEO-1 [8.479510] i2c /dev entries driver [8.500081] [drm:drm_helper_probe_single_connector_modes], SVIDEO-1 is disconnected [8.500090] [drm:drm_helper_probe_single_connector_modes], HDMI-A-1 [8.563878] Raw EDID: [8.563922] <3>00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563926] <3>00 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563929] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563932] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563934] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563937] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563940] <3>00 00 00 00 00 0
[PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe
Since Linux 3.2-rc2 the following two patches have changed the DDC detect and and probe behaviour of the radeon driver: - drm/radeon/kms: always do extended edid probe - drm/radeon/kms: remove useless radeon_ddc_dump() The first patch makes an EDID header check mandatory during DDC detection/probe. The second patch removes the DDC check during Radeon device setup, that was done before the actual connector detection. The log output of this check confused users with DP, eDP, or DP bridge connectors. Found regression: (1) The stop of DDC detection for floating connectors, i. e. connectors with improperly wired/terminated i2c bus, of RS690/RS740 family chipsets does not work anymore. (2) HW bugs that result in the DDC being available, but unusable EDID (header) do now lead to connectors silently probed via i2c but not being used. There is no notification to the user (via kernel logs). Even with drm debugging enabled at kernel boot time, there is no information. No chance for a user to identify the root cause of the connector being probed but not being used. The attached two fixes restore the RS690/RS740 floating connectors quirk, i. e. stop of DDC detection. In addition, the detection of such floating connectors is now more comprehensive: Also floating connectors with a few (<= 8) random byte values other than zero reported during i2c transaction are now properly detected. During discussion of patch "drm/radeon/kms: remove useless radeon_ddc_dump()" (see http://www.spinics.net/lists/dri-devel/msg15523.html) the proposal was made to include the log information of the removed function radeon_ddc_dump() into function drm_fb_helper_initial_config(). Further investigations showed, that during intial framebuffer configuration the connector (type) specific detect function will be called surrounded by kernel debug log message output. In the here important radeon DVI connector case function radeon_dvi_detect() is called. As this function is anyway touched by the present patch, I decided to move the unusable EDID logging there. Counter radeon_connector-> broken_edid_header_counter will ensure, that kernel logs are not flooded, as it was the case before implementation of extended DDC/EDID probe. Thomas Reim (2): drm: Improve detection of floating connectors drm/radeon/kms: wrap-up handling of floating connectors and connector unavailability status logging drivers/gpu/drm/drm_edid.c | 13 ++- drivers/gpu/drm/radeon/radeon_connectors.c | 54 +++- drivers/gpu/drm/radeon/radeon_i2c.c|7 +++- drivers/gpu/drm/radeon/radeon_mode.h |3 ++ 4 files changed, 65 insertions(+), 12 deletions(-)
Re: [PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe
Here are the logs without and with drm debug option set: [0.00] Initializing cgroup subsys cpuset [0.00] Initializing cgroup subsys cpu [0.00] Linux version 2.6.35-31-generic (buildd@pluot) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #62+lp722806thor4-Ubuntu SMP Fri Nov 25 11:50:56 UTC 2011 (Ubuntu 2.6.35-31.62+lp722806thor4-generic 2.6.35.13) [0.00] Command line: BOOT_IMAGE=/vmlinuz-2.6.35-31-generic root=UUID=bd9acbc2-0ada-404f-9864-158f93de9ed5 ro crashkernel=384M-2G:64M,2G-:128M quiet splash ... [8.459216] [drm] Radeon Display Connectors [8.459218] [drm] Connector 0: [8.459220] [drm] VGA [8.459223] [drm] DDC: 0x7e50 0x7e40 0x7e54 0x7e44 0x7e58 0x7e48 0x7e5c 0x7e4c [8.459225] [drm] Encoders: [8.459227] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [8.459229] [drm] Connector 1: [8.459231] [drm] S-video [8.459232] [drm] Encoders: [8.459234] [drm] TV1: INTERNAL_KLDSCP_DAC1 [8.459236] [drm] Connector 2: [8.459238] [drm] HDMI-A [8.459239] [drm] HPD2 [8.459242] [drm] DDC: 0x7e40 0x7e60 0x7e44 0x7e64 0x7e48 0x7e68 0x7e4c 0x7e6c [8.459244] [drm] Encoders: [8.459246] [drm] DFP2: INTERNAL_DDI [8.459248] [drm] Connector 3: [8.459249] [drm] DVI-D [8.459252] [drm] DDC: 0x7e40 0x7e50 0x7e44 0x7e54 0x7e48 0x7e58 0x7e4c 0x7e5c [8.459254] [drm] Encoders: [8.459256] [drm] DFP3: INTERNAL_LVTM1 [8.593100] i2c /dev entries driver [8.721280] Raw EDID: [8.721324] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721327] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721330] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721332] <3>00 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 [8.721335] <3>00 00 00 1f 03 00 00 00 00 07 00 00 00 01 00 00 [8.721338] <3>00 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721340] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721343] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.721345] [8.721383] radeon :01:05.0: HDMI-A-1: EDID block 0 invalid. [8.721387] [drm:radeon_dvi_detect] HDMI-A-1: probed a monitor, DDC responded but no|invalid EDID [8.721428] [drm:radeon_dvi_detect] HDMI-A-1: detected RS690 floating bus bug, stopping ddc detect [8.871708] [drm] fb mappable at 0xF004 [8.871713] [drm] vram apper at 0xF000 [8.871715] [drm] size 5242880 [8.871717] [drm] fb depth is 24 [8.871719] [drm]pitch is 5120 [8.912957] Console: switching to colour frame buffer device 160x64 [8.925225] fb0: radeondrmfb frame buffer device [8.925228] drm: registered panic notifier [8.964597] [drm] Initialized radeon 2.5.0 20080528 for :01:05.0 on minor 0 [0.00] Initializing cgroup subsys cpuset [0.00] Initializing cgroup subsys cpu [0.00] Linux version 2.6.35-31-generic (buildd@pluot) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #62+lp722806thor4-Ubuntu SMP Fri Nov 25 11:50:56 UTC 2011 (Ubuntu 2.6.35-31.62+lp722806thor4-generic 2.6.35.13) [0.00] Command line: BOOT_IMAGE=/vmlinuz-2.6.35-31-generic root=UUID=bd9acbc2-0ada-404f-9864-158f93de9ed5 ro crashkernel=384M-2G:64M,2G-:128M quiet splash drm.debug=14 log_buf_len=16M ... [8.320490] [drm] Radeon Display Connectors [8.320492] [drm] Connector 0: [8.320494] [drm] VGA [8.320498] [drm] DDC: 0x7e50 0x7e40 0x7e54 0x7e44 0x7e58 0x7e48 0x7e5c 0x7e4c [8.320500] [drm] Encoders: [8.320502] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [8.320504] [drm] Connector 1: [8.320506] [drm] S-video [8.320508] [drm] Encoders: [8.320510] [drm] TV1: INTERNAL_KLDSCP_DAC1 [8.320512] [drm] Connector 2: [8.320514] [drm] HDMI-A [8.320515] [drm] HPD2 [8.320518] [drm] DDC: 0x7e40 0x7e60 0x7e44 0x7e64 0x7e48 0x7e68 0x7e4c 0x7e6c [8.320521] [drm] Encoders: [8.320523] [drm] DFP2: INTERNAL_DDI [8.320525] [drm] Connector 3: [8.320526] [drm] DVI-D [8.320529] [drm] DDC: 0x7e40 0x7e50 0x7e44 0x7e54 0x7e48 0x7e58 0x7e4c 0x7e5c [8.320532] [drm] Encoders: [8.320534] [drm] DFP3: INTERNAL_LVTM1 [8.320598] [drm:drm_helper_probe_single_connector_modes], VGA-1 [8.410041] [drm:drm_helper_probe_single_connector_modes], VGA-1 is disconnected [8.410049] [drm:drm_helper_probe_single_connector_modes], SVIDEO-1 [8.479510] i2c /dev entries driver [8.500081] [drm:drm_helper_probe_single_connector_modes], SVIDEO-1 is disconnected [8.500090] [drm:drm_helper_probe_single_connector_modes], HDMI-A-1 [8.563878] Raw EDID: [8.563922] <3>00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563926] <3>00 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563929] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563932] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563934] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563937] <3>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [8.563940] <3>00 00 00 00 00 00 00 0
[PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe
Since Linux 3.2-rc2 the following two patches have changed the DDC detect and and probe behaviour of the radeon driver: - drm/radeon/kms: always do extended edid probe - drm/radeon/kms: remove useless radeon_ddc_dump() The first patch makes an EDID header check mandatory during DDC detection/probe. The second patch removes the DDC check during Radeon device setup, that was done before the actual connector detection. The log output of this check confused users with DP, eDP, or DP bridge connectors. Found regression: (1) The stop of DDC detection for floating connectors, i. e. connectors with improperly wired/terminated i2c bus, of RS690/RS740 family chipsets does not work anymore. (2) HW bugs that result in the DDC being available, but unusable EDID (header) do now lead to connectors silently probed via i2c but not being used. There is no notification to the user (via kernel logs). Even with drm debugging enabled at kernel boot time, there is no information. No chance for a user to identify the root cause of the connector being probed but not being used. The attached two fixes restore the RS690/RS740 floating connectors quirk, i. e. stop of DDC detection. In addition, the detection of such floating connectors is now more comprehensive: Also floating connectors with a few (<= 8) random byte values other than zero reported during i2c transaction are now properly detected. During discussion of patch "drm/radeon/kms: remove useless radeon_ddc_dump()" (see http://www.spinics.net/lists/dri-devel/msg15523.html) the proposal was made to include the log information of the removed function radeon_ddc_dump() into function drm_fb_helper_initial_config(). Further investigations showed, that during intial framebuffer configuration the connector (type) specific detect function will be called surrounded by kernel debug log message output. In the here important radeon DVI connector case function radeon_dvi_detect() is called. As this function is anyway touched by the present patch, I decided to move the unusable EDID logging there. Counter radeon_connector-> broken_edid_header_counter will ensure, that kernel logs are not flooded, as it was the case before implementation of extended DDC/EDID probe. Thomas Reim (2): drm: Improve detection of floating connectors drm/radeon/kms: wrap-up handling of floating connectors and connector unavailability status logging drivers/gpu/drm/drm_edid.c | 13 ++- drivers/gpu/drm/radeon/radeon_connectors.c | 54 +++- drivers/gpu/drm/radeon/radeon_i2c.c|7 +++- drivers/gpu/drm/radeon/radeon_mode.h |3 ++ 4 files changed, 65 insertions(+), 12 deletions(-) ___ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel