On Mon, Aug 10, 2015 at 02:07:49PM +0200, Daniel Vetter wrote: > On Mon, Aug 10, 2015 at 01:59:07PM +0200, Thierry Reding wrote: > > On Mon, Aug 10, 2015 at 11:55:38AM +0200, Daniel Vetter wrote: > > > ->load is depracated, bus functionst are deprecated and everyone > > > should use drm_dev_alloc®ister. > > > > Why would you want to deprecated ->load()? Even if you use > > drm_dev_alloc() and drm_dev_register(), there's still use for ->load() > > because it gives you the subsystem-level initialization entry point. > > ->load is called after the drm /dev node is registered and hence you can't > really do any driver setup in there without risking races. We paper over > that using drm_global_mutex, but that doesn't work for any other > driver/userspace interface like sysfs/debugfs because of deadlocks. > > And we can't just reorder ->load to happen before the /dev nodes are > registered because a lot of drivers would fall over if we do that. > > This is typical midlayer fail where the core calls into the driver instead > of the other way round. Okay, but then if we're going to deprecate ->load(), I think we should also come up with an upgrade plan. As it is, this just says that users shouldn't do ->load(), but it doesn't tell them what to do instead. Would the proper procedure be to fix drivers so that ->load() can be called between drm_dev_alloc() and drm_dev_register()? I suppose we could add some sort of (temporary) flag for drivers to signal this and then have drm_dev_register() call ->load() at the right time. If drivers don't support it, we can keep what we have. That, of course, doesn't get rid of the midlayer, so perhaps a better way forward would be to tell driver writers that they should be doing subsystem-level setup between drm_dev_alloc() and drm_dev_register(). Thierry
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel