[PATCH 15/31] xf86: load modesetting driver on Linux hotplug

Dave Airlie airlied at gmail.com
Tue Jun 26 11:16:08 PDT 2012


On Tue, Jun 26, 2012 at 6:03 PM, Michal Srb <msrb at suse.com> wrote:
> On Wednesday 20 of June 2012 15:00:30 Dave Airlie wrote:
>> From: Dave Airlie <airlied at redhat.com>
>>
>> This driver is currently really the only choice for a hotplug
>> at the moment, we can refine this in the future to try and
>> pick the driver names.
>>
>> We have to reload this as it can get unloaded it not used
>> in the original probe.
>
> This unfortunatelly fails on my machine. If the device is not plugged during
> start of X, the hotplugging doesn't work correctly. The module is loaded but
> prints this to log:
>   (II) Failed to load module "modesetting" (already loaded, 0)
> And the modesetting driver is not added to X server.
>
> It is because the Setup function of xf86-video-modesetting module keeps static
> variable (setupDone) which ensures that any repeated loading of the module
> fails. In case the modesetting driver is not needed during start, it is
> removed from X server and subsequently also the module is unloaded. When the
> modesetting module is loaded again because of hotplug, the driver has to be
> added again from Setup. Unfortunatelly the setupDone variable is not reset to
> zero between UnloadModule and LoadModule.
>
> I am no expert on dynamic libraries, but I found this is probably the cause:
> Static variables are reset to original values when library gets unloaded and
> loaded again. In our case the library won't get unloaded after dlclose because
> dlsym was called earlier on symbol from that library (modesettingModuleData)
> and that keeps reference counter above zero.
>
> Patch with possible solution follows...

I've patched -modesetting for that here already, its just not posted
until the server stuff
is all in place.

Dave.


More information about the xorg-devel mailing list