]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/radeon: use DMA_RESV_USAGE_KERNEL
authorChristian König <christian.koenig@amd.com>
Mon, 4 Apr 2022 10:59:32 +0000 (12:59 +0200)
committerChristian König <christian.koenig@amd.com>
Thu, 7 Apr 2022 10:53:54 +0000 (12:53 +0200)
Always wait for kernel fences before kmap and not only for UVD kmaps.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20220407085946.744568-7-christian.koenig@amd.com
drivers/gpu/drm/radeon/radeon_object.c
drivers/gpu/drm/radeon/radeon_uvd.c

index cb5c4aa45cef969bbf2b12d85a8038d1753c661c..6c4a6802ca9680289259f8bee4d5f91aedfbd610 100644 (file)
@@ -219,7 +219,12 @@ int radeon_bo_create(struct radeon_device *rdev,
 int radeon_bo_kmap(struct radeon_bo *bo, void **ptr)
 {
        bool is_iomem;
-       int r;
+       long r;
+
+       r = dma_resv_wait_timeout(bo->tbo.base.resv, DMA_RESV_USAGE_KERNEL,
+                                 false, MAX_SCHEDULE_TIMEOUT);
+       if (r < 0)
+               return r;
 
        if (bo->kptr) {
                if (ptr) {
index a50750740ab088b0a97f8e016d628560cb80fc5b..a2cda184b2b25ccb80445cf17057c0047d775c06 100644 (file)
@@ -470,24 +470,16 @@ static int radeon_uvd_cs_msg(struct radeon_cs_parser *p, struct radeon_bo *bo,
        int32_t *msg, msg_type, handle;
        unsigned img_size = 0;
        void *ptr;
-       long r;
-       int i;
+       int i, r;
 
        if (offset & 0x3F) {
                DRM_ERROR("UVD messages must be 64 byte aligned!\n");
                return -EINVAL;
        }
 
-       r = dma_resv_wait_timeout(bo->tbo.base.resv, DMA_RESV_USAGE_WRITE,
-                                 false, MAX_SCHEDULE_TIMEOUT);
-       if (r <= 0) {
-               DRM_ERROR("Failed waiting for UVD message (%ld)!\n", r);
-               return r ? r : -ETIME;
-       }
-
        r = radeon_bo_kmap(bo, &ptr);
        if (r) {
-               DRM_ERROR("Failed mapping the UVD message (%ld)!\n", r);
+               DRM_ERROR("Failed mapping the UVD message (%d)!\n", r);
                return r;
        }