[PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe

2011-11-28 Thread Thomas Reim
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 

[PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe

2011-11-28 Thread Thomas Reim
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(-)



[PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe

2011-11-28 Thread Thomas Reim
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


Re: [PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe

2011-11-28 Thread Thomas Reim
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] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.721327] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.721330] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.721332] 300 00 00 00 00 00 00 00 07 00 00 00 00 00 00
00  
[8.721335] 300 00 00 1f 03 00 00 00 00 07 00 00 00 01 00
00  
[8.721338] 300 00 0f 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.721340] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.721343] 300 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] 300 00 07 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.563926] 300 00 ff 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.563929] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.563932] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.563934] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.563937] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  
[8.563940] 300 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00