diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c index 8b97c7da..3b66c19a 100644 --- a/libdrm/xf86drm.c +++ b/libdrm/xf86drm.c @@ -217,6 +217,20 @@ static int drmOpenByName(const char *name) group = xf86ConfigDRI.group ? xf86ConfigDRI.group : DRM_DEV_GID; #endif +#if defined(XFree86Server) + if (!drmAvailable()) { + /* try to load the kernel module now */ + if (!xf86LoadKernelModule(name)) { + ErrorF("[drm] failed to load kernel module \"%s\"\n", + name); + return -1; + } + } +#else + if (!drmAvailable()) + return -1; +#endif + if (!geteuid()) { dirmode = mode; if (dirmode & S_IRUSR) dirmode |= S_IXUSR;