mirror of https://gitee.com/openkylin/linux.git
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
This commit is contained in:
commit
e33b3e7567
|
@ -216,6 +216,7 @@ static struct drm_driver driver_old = {
|
|||
.mmap = drm_mmap,
|
||||
.poll = drm_poll,
|
||||
.fasync = drm_fasync,
|
||||
.read = drm_read,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = radeon_compat_ioctl,
|
||||
#endif
|
||||
|
@ -304,6 +305,7 @@ static struct drm_driver kms_driver = {
|
|||
.mmap = radeon_mmap,
|
||||
.poll = drm_poll,
|
||||
.fasync = drm_fasync,
|
||||
.read = drm_read,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = radeon_kms_compat_ioctl,
|
||||
#endif
|
||||
|
|
|
@ -1716,40 +1716,12 @@ int ttm_bo_wait(struct ttm_buffer_object *bo,
|
|||
}
|
||||
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 ret = 0;
|
||||
|
||||
/*
|
||||
* Using ttm_bo_reserve instead of ttm_bo_block_reservation
|
||||
* makes sure the lru lists are updated.
|
||||
* Using ttm_bo_reserve makes sure the lru lists are updated.
|
||||
*/
|
||||
|
||||
ret = ttm_bo_reserve(bo, true, no_wait, false, 0);
|
||||
|
|
|
@ -204,7 +204,6 @@ static int __ttm_vt_unlock(struct ttm_lock *lock)
|
|||
lock->flags &= ~TTM_VT_LOCK;
|
||||
wake_up_all(&lock->queue);
|
||||
spin_unlock(&lock->lock);
|
||||
printk(KERN_INFO TTM_PFX "vt unlock.\n");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -265,10 +264,8 @@ int ttm_vt_lock(struct ttm_lock *lock,
|
|||
ttm_lock_type, &ttm_vt_lock_remove, NULL);
|
||||
if (ret)
|
||||
(void)__ttm_vt_unlock(lock);
|
||||
else {
|
||||
else
|
||||
lock->vt_holder = tfile;
|
||||
printk(KERN_INFO TTM_PFX "vt lock.\n");
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
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
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue