Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drm-misc-next-fixes-2020-12-15' of git://anongit.freedesktop.org/drm/drm-misc into drm-next

Short summary of fixes pull (less than what git shortlog provides):

* dma-buf: Fix docs
* mxsfb: Silence invalid error message
* radeon: Fix TTM multihop

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/X9i0X9mjHN9AZGD3@linux-uq9g

+33 -41
+1 -1
Documentation/driver-api/dma-buf.rst
··· 190 190 Indefinite DMA Fences 191 191 ~~~~~~~~~~~~~~~~~~~~~ 192 192 193 - At various times &dma_fence with an indefinite time until dma_fence_wait() 193 + At various times struct dma_fence with an indefinite time until dma_fence_wait() 194 194 finishes have been proposed. Examples include: 195 195 196 196 * Future fences, used in HWC1 to signal when a buffer isn't used by the display
+4 -6
drivers/gpu/drm/mxsfb/mxsfb_drv.c
··· 134 134 return -ENODEV; 135 135 136 136 ret = drm_bridge_attach(&mxsfb->encoder, bridge, NULL, 0); 137 - if (ret) { 138 - DRM_DEV_ERROR(drm->dev, 139 - "failed to attach bridge: %d\n", ret); 140 - return ret; 141 - } 137 + if (ret) 138 + return dev_err_probe(drm->dev, ret, "Failed to attach bridge\n"); 142 139 143 140 mxsfb->bridge = bridge; 144 141 ··· 209 212 210 213 ret = mxsfb_attach_bridge(mxsfb); 211 214 if (ret) { 212 - dev_err(drm->dev, "Cannot connect bridge: %d\n", ret); 215 + if (ret != -EPROBE_DEFER) 216 + dev_err(drm->dev, "Cannot connect bridge: %d\n", ret); 213 217 goto err_vblank; 214 218 } 215 219
+27 -33
drivers/gpu/drm/radeon/radeon_ttm.c
··· 217 217 struct ttm_resource *old_mem = &bo->mem; 218 218 int r; 219 219 220 - if ((old_mem->mem_type == TTM_PL_SYSTEM && 221 - new_mem->mem_type == TTM_PL_VRAM) || 222 - (old_mem->mem_type == TTM_PL_VRAM && 223 - new_mem->mem_type == TTM_PL_SYSTEM)) { 224 - hop->fpfn = 0; 225 - hop->lpfn = 0; 226 - hop->mem_type = TTM_PL_TT; 227 - hop->flags = 0; 228 - return -EMULTIHOP; 229 - } 230 - 231 220 if (new_mem->mem_type == TTM_PL_TT) { 232 221 r = radeon_ttm_tt_bind(bo->bdev, bo->ttm, new_mem); 233 222 if (r) 234 223 return r; 235 224 } 236 - radeon_bo_move_notify(bo, evict, new_mem); 237 225 238 226 r = ttm_bo_wait_ctx(bo, ctx); 239 227 if (r) 240 - goto fail; 228 + return r; 241 229 242 230 /* Can't move a pinned BO */ 243 231 rbo = container_of(bo, struct radeon_bo, tbo); ··· 235 247 rdev = radeon_get_rdev(bo->bdev); 236 248 if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) { 237 249 ttm_bo_move_null(bo, new_mem); 238 - return 0; 250 + goto out; 239 251 } 240 252 if (old_mem->mem_type == TTM_PL_SYSTEM && 241 253 new_mem->mem_type == TTM_PL_TT) { 242 254 ttm_bo_move_null(bo, new_mem); 243 - return 0; 255 + goto out; 244 256 } 245 257 246 258 if (old_mem->mem_type == TTM_PL_TT && ··· 248 260 radeon_ttm_tt_unbind(bo->bdev, bo->ttm); 249 261 ttm_resource_free(bo, &bo->mem); 250 262 ttm_bo_assign_mem(bo, new_mem); 251 - return 0; 263 + goto out; 252 264 } 253 - if (!rdev->ring[radeon_copy_ring_index(rdev)].ready || 254 - rdev->asic->copy.copy == NULL) { 255 - /* use memcpy */ 256 - goto memcpy; 257 - } 258 - 259 - r = radeon_move_blit(bo, evict, new_mem, old_mem); 260 - if (r) { 261 - memcpy: 262 - r = ttm_bo_move_memcpy(bo, ctx, new_mem); 263 - if (r) { 264 - goto fail; 265 + if (rdev->ring[radeon_copy_ring_index(rdev)].ready && 266 + rdev->asic->copy.copy != NULL) { 267 + if ((old_mem->mem_type == TTM_PL_SYSTEM && 268 + new_mem->mem_type == TTM_PL_VRAM) || 269 + (old_mem->mem_type == TTM_PL_VRAM && 270 + new_mem->mem_type == TTM_PL_SYSTEM)) { 271 + hop->fpfn = 0; 272 + hop->lpfn = 0; 273 + hop->mem_type = TTM_PL_TT; 274 + hop->flags = 0; 275 + return -EMULTIHOP; 265 276 } 277 + 278 + r = radeon_move_blit(bo, evict, new_mem, old_mem); 279 + } else { 280 + r = -ENODEV; 266 281 } 267 282 283 + if (r) { 284 + r = ttm_bo_move_memcpy(bo, ctx, new_mem); 285 + if (r) 286 + return r; 287 + } 288 + 289 + out: 268 290 /* update statistics */ 269 291 atomic64_add((u64)bo->num_pages << PAGE_SHIFT, &rdev->num_bytes_moved); 292 + radeon_bo_move_notify(bo, evict, new_mem); 270 293 return 0; 271 - fail: 272 - swap(*new_mem, bo->mem); 273 - radeon_bo_move_notify(bo, false, new_mem); 274 - swap(*new_mem, bo->mem); 275 - return r; 276 294 } 277 295 278 296 static int radeon_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_resource *mem)
+1 -1
include/linux/dma-buf-map.h
··· 122 122 123 123 /** 124 124 * DMA_BUF_MAP_INIT_VADDR - Initializes struct dma_buf_map to an address in system memory 125 - * @vaddr: A system-memory address 125 + * @vaddr_: A system-memory address 126 126 */ 127 127 #define DMA_BUF_MAP_INIT_VADDR(vaddr_) \ 128 128 { \