Lines Matching defs:master
48 * DOC: master and authentication
52 * least once successfully became the device master (either through the
54 * no one else is the current master that time) there exists one &drm_master.
58 * In addition only one &drm_master can be the current master for a &drm_device.
63 * Clients can authenticate against the current master (if it matches their own)
77 ret = idr_alloc(&file_priv->master->magic_map, file_priv,
100 file = idr_find(&file_priv->master->magic_map, auth->magic);
103 idr_replace(&file_priv->master->magic_map, NULL, auth->magic);
112 struct drm_master *master;
114 master = kzalloc(sizeof(*master), GFP_KERNEL);
115 if (!master)
118 kref_init(&master->refcount);
119 drm_master_legacy_init(master);
120 idr_init(&master->magic_map);
121 master->dev = dev;
124 INIT_LIST_HEAD(&master->lessees);
125 INIT_LIST_HEAD(&master->lessee_list);
126 idr_init(&master->leases);
127 idr_init(&master->lessee_idr);
129 return master;
137 dev->master = drm_master_get(fpriv->master);
141 drm_master_put(&dev->master);
156 old_master = fpriv->master;
157 fpriv->master = drm_master_create(dev);
158 if (!fpriv->master) {
159 fpriv->master = old_master;
164 ret = dev->driver->master_create(dev, fpriv->master);
181 /* drop references and restore old master on failure */
182 drm_master_put(&fpriv->master);
183 fpriv->master = old_master;
198 if (dev->master) {
203 if (!file_priv->master) {
213 if (file_priv->master->lessor != NULL) {
214 DRM_DEBUG_LEASE("Attempt to set lessee %d as master\n", file_priv->master->lessee_id);
230 drm_master_put(&dev->master);
242 if (!dev->master)
245 if (file_priv->master->lessor != NULL) {
246 DRM_DEBUG_LEASE("Attempt to drop lessee %d as master\n", file_priv->master->lessee_id);
263 /* if there is no current master make this fd it, but do not create
264 * any master object for render clients */
266 if (!dev->master)
269 file_priv->master = drm_master_get(dev->master);
278 struct drm_master *master = file_priv->master;
282 idr_remove(&file_priv->master->magic_map, file_priv->magic);
287 drm_legacy_lock_master_cleanup(dev, master);
289 if (dev->master == file_priv->master)
294 * this is the "real" master
296 drm_lease_revoke(master);
299 /* drop the master reference held by the file priv */
300 if (file_priv->master)
301 drm_master_put(&file_priv->master);
306 * drm_is_current_master - checks whether @priv is the current master
309 * Checks whether @fpriv is current master on its device. This decides whether a
313 * - the current master is assumed to own the non-shareable display hardware.
317 return fpriv->is_master && drm_lease_owner(fpriv->master) == fpriv->minor->dev->master;
322 * drm_master_get - reference a master pointer
323 * @master: &struct drm_master
325 * Increments the reference count of @master and returns a pointer to @master.
327 struct drm_master *drm_master_get(struct drm_master *master)
329 kref_get(&master->refcount);
330 return master;
336 struct drm_master *master = container_of(kref, struct drm_master, refcount);
337 struct drm_device *dev = master->dev;
340 drm_lease_destroy(master);
343 dev->driver->master_destroy(dev, master);
345 drm_legacy_master_rmmaps(dev, master);
347 idr_destroy(&master->magic_map);
348 idr_destroy(&master->leases);
349 idr_destroy(&master->lessee_idr);
353 DRM_DESTROY_WAITQUEUE(&master->lock.lock_queue);
354 spin_lock_destroy(&master->lock.spinlock);
357 kfree(master->unique);
358 kfree(master);
362 * drm_master_put - unreference and clear a master pointer
363 * @master: pointer to a pointer of &struct drm_master
365 * This decrements the &drm_master behind @master and sets it to NULL.
367 void drm_master_put(struct drm_master **master)
369 kref_put(&(*master)->refcount, drm_master_destroy);
370 *master = NULL;
378 if (dev->master) {