Home | History | Annotate | Download | only in drm

Lines Matching defs:lock_data

255 drm_legacy_idlelock_take(struct drm_lock_data *lock_data)
258 spin_lock(&lock_data->spinlock);
259 KASSERT(!lock_data->idle_has_lock);
260 KASSERT(lock_data->kernel_waiters < UINT32_MAX);
261 lock_data->kernel_waiters++;
263 if (drm_lock_acquire(lock_data, DRM_KERNEL_CONTEXT)) {
264 lock_data->idle_has_lock = 1;
272 spin_unlock(&lock_data->spinlock);
279 drm_legacy_idlelock_release(struct drm_lock_data *lock_data)
282 spin_lock(&lock_data->spinlock);
283 KASSERT(0 < lock_data->kernel_waiters);
284 if (--lock_data->kernel_waiters == 0) {
285 if (lock_data->idle_has_lock) {
287 drm_lock_release(lock_data, DRM_KERNEL_CONTEXT);
290 spin_unlock(&lock_data->spinlock);
301 struct drm_lock_data *const lock_data = &file->master->lock;
307 spin_lock(&lock_data->spinlock);
310 if (lock_data->hw_lock == NULL)
314 if (!_DRM_LOCK_IS_HELD(lock_data->hw_lock->lock))
324 if (file == lock_data->file_priv)
325 drm_lock_release(lock_data,
328 out: spin_unlock(&lock_data->spinlock);
343 drm_lock_acquire(struct drm_lock_data *lock_data, int context)
345 volatile unsigned int *const lock = &lock_data->hw_lock->lock;
348 KASSERT(spin_is_locked(&lock_data->spinlock));
354 if ((0 < lock_data->user_waiters) ||
355 (0 < lock_data->kernel_waiters))
376 drm_lock_release(struct drm_lock_data *lock_data, int context)
380 KASSERT(spin_is_locked(&lock_data->spinlock));
381 KASSERT(_DRM_LOCK_IS_HELD(lock_data->hw_lock->lock));
382 KASSERT(_DRM_LOCKING_CONTEXT(lock_data->hw_lock->lock) == context);
384 lock_data->hw_lock->lock = 0;
385 DRM_SPIN_WAKEUP_ONE(&lock_data->lock_queue, &lock_data->spinlock);