On Wed, May 20, 2020 at 3:20 PM Simon Ser <contact@xxxxxxxxxxx> wrote: > > On Wednesday, May 20, 2020 2:55 PM, Daniel Vetter <daniel@xxxxxxxx> wrote: > > > Maybe we should add an explicit note that there's no guarantee about the > > new chardev minor this new device will get, it could both inherit the > > existing one (you can't open the old one anymore anyway) or get a new one? > > > > Or does userspace want a guarantee, i.e. as long as there's still a handle > > open kernel guarantees to not recycle the chardev minor (which is what we > > currently do). In that case better to add that to your list of guarantees > > above. > > The are race conditions to consider too, e.g. > > - Compositor sends /dev/dri/card0 to a client > - card0 goes away > - Another device takes card0 > - Client receives /dev/dri/card0 and then starts using it, but it's the > wrong device Oh reminds me, what should we do about open() - that one will fail, the chardev is going away after all, not failing kinda doesn't make sense. And more tricky, about creating new leases? I think reasonable semantics here would be that both of these "create a new open drm fd" operations can fail as soon as the device is unplugged. Userspace needs to be able to deal with that. -Daniel > > At first glance these seem like edge-cases that almost never happen. > However I've seen these happen in practice with connectors, especially > with docks. > > One solution would be to number minor numbers like PIDs: don't recycle > card0 before we've reached the upper minor number limit. -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel