[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#732514: [PATCH] fixes for Radeon KMS on kFreeBSD



reassign 732514 xserver-xorg-video-radeon
thanks

On 18/12/2013 13:31, Robert Millan wrote:
> Package: xserver-xorg-video-ati
> Version: 7.2.0-1
> Tags: patch
> User: debian-bsd@lists.debian.org
> Usertags: kfreebsd
> 
> Hi,
> 
> Please consider this set of fixes for KMS support on kFreeBSD:
> 
> - Load "radeonkms" module instead of "radeon".

Actually, this was done at the wrong place. The first argument to
drmOpen() call is a red herring. It's supposed to load a kernel module,
but unless the module is already loaded this code is never reached
because drmCheckModesettingSupported() failure is treated as an
abort condition.

Please use this patch instead. This makes it load the module when
drmCheckModesettingSupported() fails, and then try the check again.

This is inspired by similar approach in intel driver (see
src/intel_device.c).

I'll submit it upstream as well.

-- 
Robert Millan
diff -ur xserver-xorg-video-ati-7.2.0/debian/control xserver-xorg-video-ati-7.2.0.new/debian/control
--- xserver-xorg-video-ati-7.2.0/debian/control	2013-12-16 22:40:22.000000000 +0100
+++ xserver-xorg-video-ati-7.2.0.new/debian/control	2013-12-16 22:54:49.294891823 +0100
@@ -79,7 +79,7 @@
  ${misc:Depends},
  ${xviddriver:Depends}
 Provides: ${xviddriver:Provides}
-Suggests: firmware-linux
+Suggests: firmware-linux [linux-any], kfreebsd-downloader (>= 10) [kfreebsd-any]
 Description: X.Org X server -- AMD/ATI Radeon display driver
  This package provides the 'radeon' driver for the AMD/ATI cards. The
  following chips should be supported: R100, RV100, RS100, RV200, RS200,
diff -ur xserver-xorg-video-ati-7.2.0/src/radeon_probe.c xserver-xorg-video-ati-7.2.0.new/src/radeon_probe.c
--- xserver-xorg-video-ati-7.2.0/src/radeon_probe.c	2013-08-07 10:44:09.000000000 +0200
+++ xserver-xorg-video-ati-7.2.0.new/src/radeon_probe.c	2013-12-18 20:56:19.525329978 +0100
@@ -46,6 +46,7 @@
 #include "atipcirename.h"
 
 #include "xf86.h"
+#include <xf86_OSproc.h>
 
 #include "xf86drmMode.h"
 #include "dri.h"
@@ -92,6 +93,16 @@
 
     busIdString = DRICreatePCIBusID(pci_dev);
     ret = drmCheckModesettingSupported(busIdString);
+    if (ret) {
+      if (xf86LoadKernelModule(
+#ifdef __FreeBSD_kernel__
+			       "radeonkms"
+#else
+			       "radeon"
+#endif
+			       ))
+        ret = drmCheckModesettingSupported(busIdString);
+    }
     free(busIdString);
     if (ret) {
       xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0,

Reply to: