Op 20-03-13 09:40, Maarten Lankhorst schreef:
> Hey,
>
> Op 19-03-13 22:13, Chris Wilson schreef:
>> On Tue, Mar 19, 2013 at 11:50:47AM +0100, Maarten Lankhorst wrote:
>>> The drmSetMaster call is needed, but the spinning is really just waiting 
>>> for the workqueue to run.
>>>
>>> bryce's patch never worked, it just caused it to try drmsetinterfaceversion 
>>> for a few seconds before timing out. That call
>>> was failing because his patch series never tried to obtain drm master.
>> You missed that the series Bryce posted did contain the drmSetMaster()
>> call inside the loop to retry drmSetVersion(). :)
>>
>>
> Oh I must have missed that.
>
> Is the drmSetInterfaceVersion call really needed here? If I look at 
> DRM_IOCTL_GET_UNIQUE,
> I don't see any requirement of drm master or anything, so it looks to me like 
> for this specific race
> the drmSetInterfaceVersion call can be skipped entirely without any side 
> effects.
> This would end up with cleaner code here, and drop the master requirement 
> entirely.
>
> Of course there's still a race that needs to be investigated, and is 
> currently not completely understood, I think.
>
Or worse, is that drmGetBusId call there even useful? From digging at the 
kernel it seems it's a per master value.
So if a device is hotplugged, it wouldn't be set yet. If someone else holds 
master, it wouldn't be set either.
In fact it would only be ever set from DRIOpenDRMMaster, but that call only 
happens a lot later, if it even happens at all.

It seems to me like opening the fd there should be removed entirely, and the 
bus id should be retrieved from the udev event instead.

I'll try to get something working for this.

~Maarten
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to