[Intel-gfx] [PATCH] intel: Add support for server managed fds
Hans de Goede
hdegoede at redhat.com
Fri Mar 7 19:18:29 CET 2014
Hi,
On 03/07/2014 02:18 PM, Chris Wilson wrote:
> 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?
Yes (*), so the never calling drmDropMaster is the intention.
Regards,
Hans
*) Well actually this is done by systemd-logind since it requires root
rights, but from the driver POV the server takes care of it. If we IE
get server managed fds on one of the BSD-s, it will no longer be done
by systemd-logind of course, but all that driver really needs to know
is that the server takes care of this one way or the other.
More information about the Intel-gfx
mailing list