提交 e33b3e75 编写于 作者: L Linus Torvalds

Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6

* 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
  drm/ttm: Remove the ttm_bo_block_reservation() function.
  drm/ttm: Remove some leftover debug messages.
  drm/radeon: async event synchronization for drmWaitVblank
...@@ -216,6 +216,7 @@ static struct drm_driver driver_old = { ...@@ -216,6 +216,7 @@ static struct drm_driver driver_old = {
.mmap = drm_mmap, .mmap = drm_mmap,
.poll = drm_poll, .poll = drm_poll,
.fasync = drm_fasync, .fasync = drm_fasync,
.read = drm_read,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_ioctl = radeon_compat_ioctl, .compat_ioctl = radeon_compat_ioctl,
#endif #endif
...@@ -304,6 +305,7 @@ static struct drm_driver kms_driver = { ...@@ -304,6 +305,7 @@ static struct drm_driver kms_driver = {
.mmap = radeon_mmap, .mmap = radeon_mmap,
.poll = drm_poll, .poll = drm_poll,
.fasync = drm_fasync, .fasync = drm_fasync,
.read = drm_read,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_ioctl = radeon_kms_compat_ioctl, .compat_ioctl = radeon_kms_compat_ioctl,
#endif #endif
......
...@@ -1716,40 +1716,12 @@ int ttm_bo_wait(struct ttm_buffer_object *bo, ...@@ -1716,40 +1716,12 @@ int ttm_bo_wait(struct ttm_buffer_object *bo,
} }
EXPORT_SYMBOL(ttm_bo_wait); EXPORT_SYMBOL(ttm_bo_wait);
void ttm_bo_unblock_reservation(struct ttm_buffer_object *bo)
{
atomic_set(&bo->reserved, 0);
wake_up_all(&bo->event_queue);
}
int ttm_bo_block_reservation(struct ttm_buffer_object *bo, bool interruptible,
bool no_wait)
{
int ret;
while (unlikely(atomic_cmpxchg(&bo->reserved, 0, 1) != 0)) {
if (no_wait)
return -EBUSY;
else if (interruptible) {
ret = wait_event_interruptible
(bo->event_queue, atomic_read(&bo->reserved) == 0);
if (unlikely(ret != 0))
return ret;
} else {
wait_event(bo->event_queue,
atomic_read(&bo->reserved) == 0);
}
}
return 0;
}
int ttm_bo_synccpu_write_grab(struct ttm_buffer_object *bo, bool no_wait) int ttm_bo_synccpu_write_grab(struct ttm_buffer_object *bo, bool no_wait)
{ {
int ret = 0; int ret = 0;
/* /*
* Using ttm_bo_reserve instead of ttm_bo_block_reservation * Using ttm_bo_reserve makes sure the lru lists are updated.
* makes sure the lru lists are updated.
*/ */
ret = ttm_bo_reserve(bo, true, no_wait, false, 0); ret = ttm_bo_reserve(bo, true, no_wait, false, 0);
......
...@@ -204,7 +204,6 @@ static int __ttm_vt_unlock(struct ttm_lock *lock) ...@@ -204,7 +204,6 @@ static int __ttm_vt_unlock(struct ttm_lock *lock)
lock->flags &= ~TTM_VT_LOCK; lock->flags &= ~TTM_VT_LOCK;
wake_up_all(&lock->queue); wake_up_all(&lock->queue);
spin_unlock(&lock->lock); spin_unlock(&lock->lock);
printk(KERN_INFO TTM_PFX "vt unlock.\n");
return ret; return ret;
} }
...@@ -265,10 +264,8 @@ int ttm_vt_lock(struct ttm_lock *lock, ...@@ -265,10 +264,8 @@ int ttm_vt_lock(struct ttm_lock *lock,
ttm_lock_type, &ttm_vt_lock_remove, NULL); ttm_lock_type, &ttm_vt_lock_remove, NULL);
if (ret) if (ret)
(void)__ttm_vt_unlock(lock); (void)__ttm_vt_unlock(lock);
else { else
lock->vt_holder = tfile; lock->vt_holder = tfile;
printk(KERN_INFO TTM_PFX "vt lock.\n");
}
return ret; return ret;
} }
......
...@@ -789,34 +789,6 @@ extern void ttm_bo_unreserve(struct ttm_buffer_object *bo); ...@@ -789,34 +789,6 @@ extern void ttm_bo_unreserve(struct ttm_buffer_object *bo);
extern int ttm_bo_wait_unreserved(struct ttm_buffer_object *bo, extern int ttm_bo_wait_unreserved(struct ttm_buffer_object *bo,
bool interruptible); bool interruptible);
/**
* ttm_bo_block_reservation
*
* @bo: A pointer to a struct ttm_buffer_object.
* @interruptible: Use interruptible sleep when waiting.
* @no_wait: Don't sleep, but rather return -EBUSY.
*
* Block reservation for validation by simply reserving the buffer.
* This is intended for single buffer use only without eviction,
* and thus needs no deadlock protection.
*
* Returns:
* -EBUSY: If no_wait == 1 and the buffer is already reserved.
* -ERESTARTSYS: If interruptible == 1 and the process received a signal
* while sleeping.
*/
extern int ttm_bo_block_reservation(struct ttm_buffer_object *bo,
bool interruptible, bool no_wait);
/**
* ttm_bo_unblock_reservation
*
* @bo: A pointer to a struct ttm_buffer_object.
*
* Unblocks reservation leaving lru lists untouched.
*/
extern void ttm_bo_unblock_reservation(struct ttm_buffer_object *bo);
/* /*
* ttm_bo_util.c * ttm_bo_util.c
*/ */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册