Franck Bui changed bug 1000625
What Removed Added
Flags needinfo?(fbui@suse.com)  

Comment # 43 on bug 1000625 from
(In reply to Stefan Dirsch from comment #42)
> Franck, I do not understand at all how this hack works. If you try to
> explain to me what it does and why this works I may consider adding it
> permanently to the NVIDIA packages.
> 

Sure and sorry for not explaining earlier.

udev has support for static devices, see man udev and search for the
"static_node" option. I must admit that this part is poorly documented (IMHO).

Basically such devices dont trigger any events (like nvidia ones) so regular
rules don't apply to them. However when it starts, udev will look at the rules
with a "static_node" options defined and will apply the permissions to the
static devices/nodes defined by the option.

It's also possible to use the "TAG" key for those device. It's pretty useful if
you want to define the "uaccess" which is later used by logind to find devices
whose accesses need to be granted to the logged in user.

IOW using this rule:

 TAG+="uaccess", OPTIONS+="static_node=foo"

allows one to mark the static device /dev/foo with the "uaccess" tag.

Since static devices are not part of the udev DB, the fact that the device node
has a tag is done by creating symlinks in /run/udev/static_node-tags/tag as
it's described in the man page.

But things are not so easy when it comes to NVIDIA ;)

Indeed nvidia device nodes don't exist when udev is started (since they're not
really static nodes after all: they're created manually by something).
Therefore udev doesn't acccept to apply the "static" rule to them.

And here comes the trick, I used a tmpfile snippet to create the symlinks
manually.

As I said a rule could be used but the nvidia nodes need to be present when
udev is started (so very early).

One way to do that would be to create the nodes inside from initrd. But I don't
know what creates those nodes so I don't know if that could be doable.


You are receiving this mail because: