Changeset View
Changeset View
Standalone View
Standalone View
x11-drivers/xf86-video-ati/files/patch-src__radeon_kms.c
--- src/radeon_kms.c.orig 2014-10-02 05:31:27.000000000 +0200 | --- src/radeon_kms.c.orig 2016-11-17 02:23:37 UTC | ||||
+++ src/radeon_kms.c 2014-10-23 18:56:18.359108170 +0200 | +++ src/radeon_kms.c | ||||
@@ -30,6 +30,8 @@ | @@ -30,6 +30,8 @@ | ||||
#include <errno.h> | #include <errno.h> | ||||
#include <sys/ioctl.h> | #include <sys/ioctl.h> | ||||
+#include <sys/param.h> | +#include <sys/param.h> | ||||
+#include <sys/linker.h> | +#include <sys/linker.h> | ||||
/* Driver data structures */ | /* Driver data structures */ | ||||
#include "radeon.h" | #include "radeon.h" | ||||
#include "radeon_reg.h" | #include "radeon_drm_queue.h" | ||||
@@ -280,7 +282,7 @@ | @@ -1405,6 +1407,15 @@ static int radeon_get_drm_master_fd(Scrn | ||||
radeon_dirty_update(ScreenPtr screen) | XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d", | ||||
{ | |||||
RegionPtr region; | |||||
- PixmapDirtyUpdatePtr ent; | |||||
+ PixmapDirtyUpdatePtr ent = NULL; | |||||
if (xorg_list_is_empty(&screen->pixmap_dirty_list)) | |||||
return; | |||||
@@ -589,7 +591,7 @@ | |||||
#endif | |||||
struct pci_device *dev = info->PciInfo; | |||||
char *busid; | |||||
- int fd; | |||||
+ int fd, err; | |||||
#ifdef XF86_PDEV_SERVER_FD | |||||
if (pRADEONEnt->platform_dev) { | |||||
@@ -608,6 +610,15 @@ | |||||
dev->domain, dev->bus, dev->dev, dev->func); | dev->domain, dev->bus, dev->dev, dev->func); | ||||
#endif | |||||
+ err = kldload("radeonkms"); | + fd = kldload("radeonkms"); | ||||
+ if (err == -1 && errno != EEXIST) { | + if (fd == -1 && errno != EEXIST) { | ||||
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, | + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, | ||||
+ "[drm] Failed to load kernel module for %s: %s\n", | + "[drm] Failed to load kernel module for %s: %s\n", | ||||
+ busid, strerror(errno)); | + busid, strerror(errno)); | ||||
+ free(busid); | + free(busid); | ||||
+ return -1; | + return fd; | ||||
+ } | + } | ||||
+ | + | ||||
fd = drmOpen(NULL, busid); | fd = drmOpen(NULL, busid); | ||||
if (fd == -1) | if (fd == -1) | ||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, | xf86DrvMsg(pScrn->scrnIndex, X_ERROR, |