Date: Fri, 4 Feb 2011 17:47:34 -0700 (MST) From: Warren Block <wblock@wonkity.com> To: freebsd-x11@freebsd.org Subject: xf86-video-ati 6.14.0 Message-ID: <alpine.BSF.2.00.1102031950160.23450@wonkity.com>
next in thread | raw e-mail | index | archive | help
A quick update of the 6.13.2 port to build the just-released 6.14.0 ati video driver had problems with a Radeon 4650 with VGA, DVI, and HDMI ports. X starts, goes to a black screen... and that's it. The machine is still alive, but video is not working until a reset. The X log says: ... (II) RADEON(0): Acceleration enabled (**) RADEON(0): DPMS enabled (==) RADEON(0): Silken mouse enabled (II) RADEON(0): Set up textured video 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. This happens due to output->crtc being null for the HDMI connector on line 1840 of atombios_output.c. The other two outputs are set first, without problems. A quick hack to check for a null crtc pointer lets X start and work, although of course the HDMI output is probably not functional. Again, this is a quick hack that doesn't fail but doesn't fix the problem of the crtc being null. No idea why that's not set correctly, or whether it's the fault of FreeBSD, which is why I'm posting this here rather than on the x.org bugzilla. If anyone can help confirm or fix this, I can post a bug report in the appropriate place. --- src/atombios_output.c.orig 2011-01-27 10:05:58.000000000 -0700 +++ src/atombios_output.c 2011-02-04 17:41:32.000000000 -0700 @@ -1836,8 +1836,12 @@ } if (IS_DCE32_VARIANT) { - RADEONCrtcPrivatePtr radeon_crtc = output->crtc->driver_private; - radeon_output->dig_encoder = radeon_crtc->crtc_id; + if (output->crtc) { + RADEONCrtcPrivatePtr radeon_crtc = output->crtc->driver_private; + radeon_output->dig_encoder = radeon_crtc->crtc_id; + } else { + ErrorF("WB: crtc for %s output is null!\n", output->name); + } return; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1102031950160.23450>