On Fri, Jan 8, 2016 at 4:04 AM, Michel Dänzer <[email protected]> wrote: > From: Michel Dänzer <[email protected]> > > Instead of up to twice as before. > > Signed-off-by: Michel Dänzer <[email protected]>
Series is: Reviewed-by: Alex Deucher <[email protected]> > --- > src/amdgpu_probe.c | 52 +++++++++++++++++++++++++--------------------------- > 1 file changed, 25 insertions(+), 27 deletions(-) > > diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c > index f74eb29..ea9ffa7 100644 > --- a/src/amdgpu_probe.c > +++ b/src/amdgpu_probe.c > @@ -99,16 +99,10 @@ static char *amdgpu_bus_id(ScrnInfoPtr pScrn, struct > pci_device *dev) > return busid; > } > > -static Bool amdgpu_kernel_mode_enabled(ScrnInfoPtr pScrn, > - struct pci_device *pci_dev) > +static Bool amdgpu_kernel_mode_enabled(ScrnInfoPtr pScrn, char *busIdString) > { > - char *busIdString = amdgpu_bus_id(pScrn, pci_dev); > - int ret; > + int ret = drmCheckModesettingSupported(busIdString); > > - if (!busIdString) > - return FALSE; > - > - ret = drmCheckModesettingSupported(busIdString); > #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) > if (ret) { > if (xf86LoadKernelModule("amdgpukms")) > @@ -127,10 +121,9 @@ static Bool amdgpu_kernel_mode_enabled(ScrnInfoPtr pScrn, > return TRUE; > } > > -static int amdgpu_kernel_open_fd(ScrnInfoPtr pScrn, struct pci_device *dev, > +static int amdgpu_kernel_open_fd(ScrnInfoPtr pScrn, char *busid, > struct xf86_platform_device *platform_dev) > { > - char *busid; > int fd; > > #ifdef XF86_PDEV_SERVER_FD > @@ -142,29 +135,21 @@ static int amdgpu_kernel_open_fd(ScrnInfoPtr pScrn, > struct pci_device *dev, > } > #endif > > - busid = amdgpu_bus_id(pScrn, dev); > - if (!busid) > - return -1; > - > fd = drmOpen(NULL, busid); > - if (fd == -1) { > + if (fd == -1) > xf86DrvMsg(pScrn->scrnIndex, X_ERROR, > "[drm] Failed to open DRM device for %s: %s\n", > busid, strerror(errno)); > - free(busid); > - return fd; > - } > - free(busid); > return fd; > } > > static Bool amdgpu_open_drm_master(ScrnInfoPtr pScrn, AMDGPUEntPtr > pAMDGPUEnt, > - struct pci_device *pci_dev) > + char *busid) > { > drmSetVersion sv; > int err; > > - pAMDGPUEnt->fd = amdgpu_kernel_open_fd(pScrn, pci_dev, NULL); > + pAMDGPUEnt->fd = amdgpu_kernel_open_fd(pScrn, busid, NULL); > if (pAMDGPUEnt->fd == -1) > return FALSE; > > @@ -190,6 +175,7 @@ static Bool amdgpu_open_drm_master(ScrnInfoPtr pScrn, > AMDGPUEntPtr pAMDGPUEnt, > static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev) > { > ScrnInfoPtr pScrn = NULL; > + char *busid; > EntityInfoPtr pEnt; > DevUnion *pPriv; > AMDGPUEntPtr pAMDGPUEnt; > @@ -200,8 +186,9 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct > pci_device *pci_dev) > if (!pScrn) > return FALSE; > > - if (!amdgpu_kernel_mode_enabled(pScrn, pci_dev)) > - return FALSE; > + busid = amdgpu_bus_id(pScrn, pci_dev); > + if (!amdgpu_kernel_mode_enabled(pScrn, busid)) > + goto error; > > pScrn->driverVersion = AMDGPU_VERSION_CURRENT; > pScrn->driverName = AMDGPU_DRIVER_NAME; > @@ -235,10 +222,10 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct > pci_device *pci_dev) > > pPriv->ptr = xnfcalloc(sizeof(AMDGPUEntRec), 1); > if (!pPriv->ptr) > - return FALSE; > + goto error; > > pAMDGPUEnt = pPriv->ptr; > - if (!amdgpu_open_drm_master(pScrn, pAMDGPUEnt, pci_dev)) > + if (!amdgpu_open_drm_master(pScrn, pAMDGPUEnt, busid)) > goto error_fd; > > pAMDGPUEnt->fd_ref = 1; > @@ -261,6 +248,7 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct > pci_device *pci_dev) > index) > - 1); > free(pEnt); > + free(busid); > > return TRUE; > > @@ -268,6 +256,8 @@ error_amdgpu: > drmClose(pAMDGPUEnt->fd); > error_fd: > free(pPriv->ptr); > +error: > + free(busid); > return FALSE; > } > > @@ -304,6 +294,7 @@ amdgpu_platform_probe(DriverPtr pDriver, > { > ScrnInfoPtr pScrn; > int scr_flags = 0; > + char *busid; > EntityInfoPtr pEnt; > DevUnion *pPriv; > AMDGPUEntPtr pAMDGPUEnt; > @@ -319,9 +310,13 @@ amdgpu_platform_probe(DriverPtr pDriver, > xf86SetEntityShared(entity_num); > xf86AddEntityToScreen(pScrn, entity_num); > > - if (!amdgpu_kernel_mode_enabled(pScrn, dev->pdev)) > + busid = amdgpu_bus_id(pScrn, dev->pdev); > + if (!busid) > return FALSE; > > + if (!amdgpu_kernel_mode_enabled(pScrn, busid)) > + goto error; > + > pScrn->driverVersion = AMDGPU_VERSION_CURRENT; > pScrn->driverName = AMDGPU_DRIVER_NAME; > pScrn->name = AMDGPU_NAME; > @@ -353,7 +348,7 @@ amdgpu_platform_probe(DriverPtr pDriver, > > pPriv->ptr = xnfcalloc(sizeof(AMDGPUEntRec), 1); > pAMDGPUEnt = pPriv->ptr; > - pAMDGPUEnt->fd = amdgpu_kernel_open_fd(pScrn, dev->pdev, dev); > + pAMDGPUEnt->fd = amdgpu_kernel_open_fd(pScrn, busid, dev); > if (pAMDGPUEnt->fd < 0) > goto error_fd; > > @@ -378,6 +373,7 @@ amdgpu_platform_probe(DriverPtr pDriver, > index) > - 1); > free(pEnt); > + free(busid); > > return TRUE; > > @@ -385,6 +381,8 @@ error_amdgpu: > drmClose(pAMDGPUEnt->fd); > error_fd: > free(pPriv->ptr); > +error: > + free(busid); > return FALSE; > } > #endif > -- > 2.6.2 > > _______________________________________________ > xorg-driver-ati mailing list > [email protected] > http://lists.x.org/mailman/listinfo/xorg-driver-ati _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
