[PATCH xf86-video-amdgpu 2/2] amdgpu_probe: Do not close server managed drm fds

Alex Deucher alexdeucher at gmail.com
Mon Mar 6 15:15:27 UTC 2017


On Mon, Mar 6, 2017 at 5:02 AM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Hans De Goede <hdegoede at redhat.com>
>
> This fixes the xserver only seeing AMD/ATI devices supported by the amdgpu
> driver, as by the time xf86-video-ati gets a chance to probe them, the
> fd has been closed.
>
> This fixes e.g. Xorg not seeing the dGPU on a Lenovo Thinkpad E465 laptop
> with a CARRIZO iGPU and a HAINAN dGPU.
>
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
>
> v2: Rebased on top of new patch 1.
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Series is:
Reviewed-by: Alex Deucher at amd.com>

> ---
>  src/amdgpu_probe.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c
> index fc93ac6a2..fb62cb811 100644
> --- a/src/amdgpu_probe.c
> +++ b/src/amdgpu_probe.c
> @@ -166,7 +166,7 @@ static Bool amdgpu_open_drm_master(ScrnInfoPtr pScrn, AMDGPUEntPtr pAMDGPUEnt,
>         if (err != 0) {
>                 xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
>                            "[drm] failed to set drm interface version.\n");
> -               drmClose(pAMDGPUEnt->fd);
> +               amdgpu_kernel_close_fd(pAMDGPUEnt);
>                 return FALSE;
>         }
>
> @@ -254,7 +254,7 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev)
>         return TRUE;
>
>  error_amdgpu:
> -       drmClose(pAMDGPUEnt->fd);
> +       amdgpu_kernel_close_fd(pAMDGPUEnt);
>  error_fd:
>         free(pPriv->ptr);
>  error:
> @@ -349,6 +349,7 @@ amdgpu_platform_probe(DriverPtr pDriver,
>
>                 pPriv->ptr = xnfcalloc(sizeof(AMDGPUEntRec), 1);
>                 pAMDGPUEnt = pPriv->ptr;
> +               pAMDGPUEnt->platform_dev = dev;
>                 pAMDGPUEnt->fd = amdgpu_kernel_open_fd(pScrn, busid, dev);
>                 if (pAMDGPUEnt->fd < 0)
>                         goto error_fd;
> @@ -367,7 +368,6 @@ amdgpu_platform_probe(DriverPtr pDriver,
>                 pAMDGPUEnt = pPriv->ptr;
>                 pAMDGPUEnt->fd_ref++;
>         }
> -       pAMDGPUEnt->platform_dev = dev;
>
>         xf86SetEntityInstanceForScreen(pScrn, pEnt->index,
>                                        xf86GetNumEntityInstances(pEnt->
> @@ -379,7 +379,7 @@ amdgpu_platform_probe(DriverPtr pDriver,
>         return TRUE;
>
>  error_amdgpu:
> -       drmClose(pAMDGPUEnt->fd);
> +       amdgpu_kernel_close_fd(pAMDGPUEnt);
>  error_fd:
>         free(pPriv->ptr);
>  error:
> --
> 2.11.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list