[PATCH] xserver: add udev/systemd multi-seat support

Peter Hutterer peter.hutterer at who-t.net
Tue Jul 19 21:12:46 PDT 2011


On Mon, Jul 18, 2011 at 08:56:27PM +0200, Lennart Poettering wrote:
> On Mon, 18.07.11 19:29, Lennart Poettering (lennart at poettering.net) wrote:
> 
> > If this is supposed to help with the wacom driver, then this is bogus
> > too, as the associated rule in /lib/udev/rules.d/70-wacom.rules actually
> > does check for ID_INPUT.
> 
> So, I had another closer look on this, and now understand what is going
> on. This rules file is actually really really borked, and really needs
> to be fixed. And not only this files is borked, the matching code in X11
> is borked too. 
> 
> If I understand this properly, then the wacom serial tablets come with
> their own special ISAPNP serial port?
> 
> So here's what needs to be fixed:

just for the archives: the wacom serial rules files are not part of any
X.Org specific package. They're currently maintained by the distributions.
I've pushed a fixed rules file to rawhide and forwarded your email to
the linuxwacom-devel list. Thanks for the comments.

Cheers,
  Peter

> 1) You cannot overide ENV{SUBSYSTEM}. This env var encodes to which
> kernel subsystem a device belongs to. Just by overriding this in
> userspace you cannot make it move to a different piece of code! This
> will break things if left in this way. In fact, after I told Kay about
> this he has now added code to udev to explicitly disallow lines like
> this. That means these lines will stop working with newer udev unless
> they are fixed to stop doing this.
> 
> 2) If you introduce your own env vars on devices, you are not allowed
> not to prefix them. Unprefixed variables are private property of the
> kernel. Userspace may only add prefixed variables to that. A common
> prefix used is ID_, but you can choose whatever you want. This needs
> fixing too. You need to find a better variable than "NAME" to store
> your device name.
> 
> 3) We try to avoid setting pretty names in udev rules, since they might
> need translations later on. Hence having a property like "NAME" here
> isn't a good idea at all -- not even if you rename it.
> 
> 4) If you just check attr{id} like you do in those rules this will cause
> *all* devices' id attribute to be read, and if if they happen to include
> "FUJ" as prefix, you'll mark them as tablet. Example: an audio driver
> also exposes an id property, you can even set it to whatevr you want via
> a module argument. If a poor soul has a sound card with an id of "FUJ"
> then your rule will mark it as input device for X.
> 
> To fix this: since the devices in question show up as ISAPNP devices,
> this is what you need to check for. i.e. instead of this:
> 
> ATTRS{id}=="FUJ*", ...
> 
> use this:
> 
> SUBSYSTEMS="pnp", ATTRS{id}=="FUJ*", ...
> 
> 5) You are now adding your properties to *every* child device of the pnp
> device which is very much broken. You should only add it to the serial
> port itself. I.e. you also need to check SUBSYSTEM="tty". (Singular, not
> plural in this case).
> 
> 6) Where a device shows up in the device tree is not considered ABI,
> kernel devs are free and happy to add new layers to the tree where
> necessary. That means in the X11 udev code you cannot use
> udev_device_get_parent() to check the parent device of the wacom tablet,
> assuming it was a pnp device. This is borked and will break at any
> time. Use udev_device_get_parent_with_subsystem_devtype() instead, or
> much better: assign the properties you are looking for to the serial
> device itself, via the udev rule, by inheriting them as necessary.
> 
> Sorry that I cannot really prep a patch for this, as I do not own this
> hardware. However I am happy to review any patches which fix this, just
> CC me.
> 
> And again, Kay has changed udev now so that the wacom rule will fail,
> due to 1). If this rule file isn't fixed then wacom devices will just
> stop working very soon.
> 
> I will modify my own patch set for X11 now to look for both devices in
> the "input" and the "tty" subsystem. This should prepare things for
> wacom, but as mentioned the wacom udev rule needs to be fixed as well.
> 
> Lennart
> 
> -- 
> Lennart Poettering - Red Hat, Inc.


More information about the xorg-devel mailing list