[Intel-gfx] [PATCH] intel: Add support for server managed fds

Chris Wilson chris at chris-wilson.co.uk
Fri Mar 7 14:18:04 CET 2014


On Fri, Mar 07, 2014 at 02:13:38PM +0100, Hans de Goede wrote:
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
>  src/intel_device.c | 19 ++++++-------------
>  src/intel_module.c |  4 ++++
>  2 files changed, 10 insertions(+), 13 deletions(-)
> 
> diff --git a/src/intel_device.c b/src/intel_device.c
> index d0c8092..b19884c 100644
> --- a/src/intel_device.c
> +++ b/src/intel_device.c
> @@ -240,19 +240,10 @@ static char *get_path(struct xf86_platform_device *dev)
>  #endif
>  
>  
> -#if defined(ODEV_ATTRIB_FD) && 0
> +#if defined(ODEV_ATTRIB_FD)
>  static int get_fd(struct xf86_platform_device *dev)
>  {
> -	const char *str;
> -
> -	if (dev == NULL)
> -		return -1;
> -
> -	str = xf86_get_platform_device_attrib(dev, ODEV_ATTRIB_FD);
> -	if (str == NULL)
> -		return -1;
> -
> -	return atoi(str);
> +	return xf86_get_platform_device_int_attrib(dev, ODEV_ATTRIB_FD, -1);
>  }
>  
>  #else
> @@ -270,7 +261,7 @@ int intel_open_device(int entity_num,
>  {
>  	struct intel_device *dev;
>  	char *local_path;
> -	int fd;
> +	int fd, init_master_count = 0;
>  
>  	if (intel_device_key == -1)
>  		intel_device_key = xf86AllocateEntityPrivateIndex();
> @@ -286,6 +277,8 @@ int intel_open_device(int entity_num,
>  	fd = get_fd(platform);
>  	if (fd == -1)
>  		fd = __intel_open_device(pci, &local_path);
> +	else
> +		init_master_count = 1; /* Server fd is already master */

If we set master_count to non-zero, we won't ever call drmDropMaster
(since our get/put will be unbalanced). Does the server manage
DRM_MASTER across VT switches for this fd?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list