diff -Nru xorg-server-1.16.0.orig/hw/xfree86/common/xf86Config.c xorg-server-1.16.0/hw/xfree86/common/xf86Config.c
--- xorg-server-1.16.0.orig/hw/xfree86/common/xf86Config.c	2014-07-14 11:52:32.000000000 +0200
+++ xorg-server-1.16.0/hw/xfree86/common/xf86Config.c	2014-08-31 16:32:58.084764780 +0200
@@ -519,7 +519,7 @@
 static void
 fixup_video_driver_list(const char **drivers)
 {
-    static const char *fallback[5] = { "modesetting", "fbdev", "vesa", "wsfb", NULL };
+    static const char *fallback[6] = { "fglrx", "modesetting", "fbdev", "vesa", "wsfb", NULL };
     const char **end, **drv;
     const char *x;
     int i;
@@ -533,9 +533,11 @@
      * swap it with the last available non-fallback driver.
      */
     for (i = 0; fallback[i]; i++) {
-        for (drv = drivers; drv != end; drv++) {
+        for (drv = drivers; drv <= end; drv++) {
             if (strstr(*drv, fallback[i])) {
                 x = *drv;
+                /* disable the faulty probe of fglrx driver */
+                if (i == 0) *end = NULL;
                 *drv = *end;
                 *end = x;
                 end--;
