diff -Nurp xorg-server-1.4.1~git20080131-hardy/hw/xfree86/common/xf86Config.c xorg-server-1.4.1~git20080131-hardy-working/hw/xfree86/common/xf86Config.c --- xorg-server-1.4.1~git20080131-hardy/hw/xfree86/common/xf86Config.c 2008-05-13 18:49:54.000000000 -0700 +++ xorg-server-1.4.1~git20080131-hardy-working/hw/xfree86/common/xf86Config.c 2008-06-27 13:21:47.000000000 -0700 @@ -486,7 +486,7 @@ fixup_video_driver_list(char **drivers) static const char *fallback[5] = { "vga", "vesa", "fbdev", "wsfb", NULL }; char **end, **drv; char *x; - char **ati, **atimisc; + char **ati, **atimisc, **amd, **geode; int i; /* walk to the end of the list */ @@ -506,6 +506,22 @@ fixup_video_driver_list(char **drivers) } } } + + /* We prefer -geode over -amd now, so sort it ahead of -amd */ + for (drv = drivers; drv != end; drv++) { + if (!strstr(*drv, "amd")) { + amd = drv; + for (drv = amd; drv != end; drv++) { + if (!strcmp(*drv, "geode")) { + geode = drv; + x = *geode; *geode = *amd; *amd = x; + break; + } + } + break; + } + } + /* * since the ati wrapper driver is gross and awful, sort ati before * atimisc, which makes sure all the ati symbols are visible in xorgcfg.