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

+4 -61
+2
drivers/gpu/drm/radeon/radeon_drv.c
··· 216 216 .mmap = drm_mmap, 217 217 .poll = drm_poll, 218 218 .fasync = drm_fasync, 219 + .read = drm_read, 219 220 #ifdef CONFIG_COMPAT 220 221 .compat_ioctl = radeon_compat_ioctl, 221 222 #endif ··· 305 304 .mmap = radeon_mmap, 306 305 .poll = drm_poll, 307 306 .fasync = drm_fasync, 307 + .read = drm_read, 308 308 #ifdef CONFIG_COMPAT 309 309 .compat_ioctl = radeon_kms_compat_ioctl, 310 310 #endif
+1 -29
drivers/gpu/drm/ttm/ttm_bo.c
··· 1716 1716 } 1717 1717 EXPORT_SYMBOL(ttm_bo_wait); 1718 1718 1719 - void ttm_bo_unblock_reservation(struct ttm_buffer_object *bo) 1720 - { 1721 - atomic_set(&bo->reserved, 0); 1722 - wake_up_all(&bo->event_queue); 1723 - } 1724 - 1725 - int ttm_bo_block_reservation(struct ttm_buffer_object *bo, bool interruptible, 1726 - bool no_wait) 1727 - { 1728 - int ret; 1729 - 1730 - while (unlikely(atomic_cmpxchg(&bo->reserved, 0, 1) != 0)) { 1731 - if (no_wait) 1732 - return -EBUSY; 1733 - else if (interruptible) { 1734 - ret = wait_event_interruptible 1735 - (bo->event_queue, atomic_read(&bo->reserved) == 0); 1736 - if (unlikely(ret != 0)) 1737 - return ret; 1738 - } else { 1739 - wait_event(bo->event_queue, 1740 - atomic_read(&bo->reserved) == 0); 1741 - } 1742 - } 1743 - return 0; 1744 - } 1745 - 1746 1719 int ttm_bo_synccpu_write_grab(struct ttm_buffer_object *bo, bool no_wait) 1747 1720 { 1748 1721 int ret = 0; 1749 1722 1750 1723 /* 1751 - * Using ttm_bo_reserve instead of ttm_bo_block_reservation 1752 - * makes sure the lru lists are updated. 1724 + * Using ttm_bo_reserve makes sure the lru lists are updated. 1753 1725 */ 1754 1726 1755 1727 ret = ttm_bo_reserve(bo, true, no_wait, false, 0);
+1 -4
drivers/gpu/drm/ttm/ttm_lock.c
··· 204 204 lock->flags &= ~TTM_VT_LOCK; 205 205 wake_up_all(&lock->queue); 206 206 spin_unlock(&lock->lock); 207 - printk(KERN_INFO TTM_PFX "vt unlock.\n"); 208 207 209 208 return ret; 210 209 } ··· 264 265 ttm_lock_type, &ttm_vt_lock_remove, NULL); 265 266 if (ret) 266 267 (void)__ttm_vt_unlock(lock); 267 - else { 268 + else 268 269 lock->vt_holder = tfile; 269 - printk(KERN_INFO TTM_PFX "vt lock.\n"); 270 - } 271 270 272 271 return ret; 273 272 }
-28
include/drm/ttm/ttm_bo_driver.h
··· 789 789 extern int ttm_bo_wait_unreserved(struct ttm_buffer_object *bo, 790 790 bool interruptible); 791 791 792 - /** 793 - * ttm_bo_block_reservation 794 - * 795 - * @bo: A pointer to a struct ttm_buffer_object. 796 - * @interruptible: Use interruptible sleep when waiting. 797 - * @no_wait: Don't sleep, but rather return -EBUSY. 798 - * 799 - * Block reservation for validation by simply reserving the buffer. 800 - * This is intended for single buffer use only without eviction, 801 - * and thus needs no deadlock protection. 802 - * 803 - * Returns: 804 - * -EBUSY: If no_wait == 1 and the buffer is already reserved. 805 - * -ERESTARTSYS: If interruptible == 1 and the process received a signal 806 - * while sleeping. 807 - */ 808 - extern int ttm_bo_block_reservation(struct ttm_buffer_object *bo, 809 - bool interruptible, bool no_wait); 810 - 811 - /** 812 - * ttm_bo_unblock_reservation 813 - * 814 - * @bo: A pointer to a struct ttm_buffer_object. 815 - * 816 - * Unblocks reservation leaving lru lists untouched. 817 - */ 818 - extern void ttm_bo_unblock_reservation(struct ttm_buffer_object *bo); 819 - 820 792 /* 821 793 * ttm_bo_util.c 822 794 */