xf86-video-ati 6.14.0

Warren Block wblock at wonkity.com
Sat Feb 5 19:59:33 UTC 2011


On Fri, 4 Feb 2011, Warren Block wrote:

> Output CRT2 disable success
> Segmentation fault: 11 at address 0x168
>
> Fatal server error:
> Caught signal 11 (Segmentation fault: 11). Server aborting
>
> This happens on line 1840 of atombios_output.c, inside 
> atombios_pick_dig_encoder.  The first two outputs are fine, but output->crtc 
> is null for the HDMI output.

Alex Deucher has quickly fixed this:
http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/commit/?id=84450ea9221f32296c1f786a6aa126a08bb9756f

Attached are patches for the port to duplicate that change.
-------------- next part --------------
--- src/radeon_output.c.orig	2011-02-01 17:01:22.000000000 -0700
+++ src/radeon_output.c	2011-02-05 12:22:53.000000000 -0700
@@ -120,6 +120,8 @@
 radeon_bios_output_crtc(xf86OutputPtr output);
 static void
 radeon_bios_output_lock(xf86OutputPtr output, Bool lock);
+extern void
+atombios_pick_dig_encoder(xf86OutputPtr output);
 
 void RADEONPrintPortMap(ScrnInfoPtr pScrn)
 {
@@ -731,6 +733,8 @@
     }
 
     radeon_bios_output_lock(output, TRUE);
+    if (IS_AVIVO_VARIANT)
+	atombios_pick_dig_encoder(output);
     radeon_dpms(output, DPMSModeOff);
     radeon_crtc_dpms(output->crtc, DPMSModeOff);
 
-------------- next part --------------
--- src/atombios_output.c.orig	2011-01-27 10:05:58.000000000 -0700
+++ src/atombios_output.c	2011-02-05 12:20:30.000000000 -0700
@@ -172,7 +172,6 @@
 #define DP_SET_POWER_D3  0x2
 
 static void do_displayport_link_train(xf86OutputPtr output);
-static void atombios_pick_dig_encoder(xf86OutputPtr output);
 
 static int
 atombios_output_dac_setup(xf86OutputPtr output, int action)
@@ -1469,7 +1468,6 @@
 
     if (radeon_encoder == NULL)
         return;
-    atombios_pick_dig_encoder(output);
 
     switch (radeon_encoder->encoder_id) {
     case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
@@ -1781,7 +1779,7 @@
     }
 }
 
-static void
+void
 atombios_pick_dig_encoder(xf86OutputPtr output)
 {
     xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(output->scrn);
@@ -1878,7 +1876,6 @@
 	return;
 
     radeon_output->pixel_clock = adjusted_mode->Clock;
-    atombios_pick_dig_encoder(output);
     atombios_output_overscan_setup(output, mode, adjusted_mode);
     atombios_output_scaler_setup(output);
     atombios_set_output_crtc_source(output);


More information about the freebsd-x11 mailing list