[Mesa-dev] [PATCH 1/2] winsys/radeon: Add a work around for drmGetVersion() when using render nodes

David Herrmann dh.herrmann at gmail.com
Sun Nov 3 03:30:18 PST 2013


Hi Tom

On Tue, Oct 29, 2013 at 9:00 PM, Tom Stellard <tom at stellard.net> wrote:
> From: Tom Stellard <thomas.stellard at amd.com>
>
> DRM_IOCTL_VERSION is not currently a legal ioctl for render nodes, so we
> need to hard code the drm version when drmGetVersion() returns NULL.
> ---

This is already in 3.12:
  https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3d3b78c06c827bfc072a11056d7eb70aeb90e449

You can drop this patch (or revert it, or ignore it, or ..). Just
wanted to let you know.

Thanks
David

>  src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 36 ++++++++++++++++-------
>  1 file changed, 25 insertions(+), 11 deletions(-)
>
> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> index f8aeb96..5b5191a 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> @@ -212,23 +212,37 @@ static boolean do_winsys_init(struct radeon_drm_winsys *ws)
>
>      /* Get DRM version. */
>      version = drmGetVersion(ws->fd);
> -    if (version->version_major != 2 ||
> -        version->version_minor < 3) {
> +
> +    if (!version) {
> +#ifdef USE_RENDER_NODES
> +        /* Calling drmGetVersion was not allowed in the earliest
> +         * implementation of render nodes.  To work around this, we will
> +         * hard code to the oldest version with render node support.
> +         */
> +        ws->info.drm_major = 2; // version->version_major;
> +        ws->info.drm_minor = 32; //version->version_minor;
> +        ws->info.drm_patchlevel = 0; // version->version_patchlevel;
> +#else
> +        return false;
> +#endif
> +    } else {
> +        ws->info.drm_major = version->version_major;
> +        ws->info.drm_minor = version->version_minor;
> +        ws->info.drm_patchlevel = version->version_patchlevel;
> +        drmFreeVersion(version);
> +    }
> +
> +    if (ws->info.drm_major != 2 ||
> +        ws->info.drm_minor < 3) {
>          fprintf(stderr, "%s: DRM version is %d.%d.%d but this driver is "
>                  "only compatible with 2.3.x (kernel 2.6.34) or later.\n",
>                  __FUNCTION__,
> -                version->version_major,
> -                version->version_minor,
> -                version->version_patchlevel);
> -        drmFreeVersion(version);
> +                ws->info.drm_major,
> +                ws->info.drm_minor,
> +                ws->info.drm_patchlevel);
>          return FALSE;
>      }
>
> -    ws->info.drm_major = version->version_major;
> -    ws->info.drm_minor = version->version_minor;
> -    ws->info.drm_patchlevel = version->version_patchlevel;
> -    drmFreeVersion(version);
> -
>      /* Get PCI ID. */
>      if (!radeon_get_drm_value(ws->fd, RADEON_INFO_DEVICE_ID, "PCI ID",
>                                &ws->info.pci_id))
> --
> 1.8.1.5
>


More information about the mesa-dev mailing list