drm/amdgpu: keep the prefered/allowed domains in the BO
authorChristian König <christian.koenig@amd.com>
Fri, 18 Dec 2015 21:13:12 +0000 (22:13 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 10 Feb 2016 19:16:47 +0000 (14:16 -0500)
Stop copying that to the bo list entry, it doesn't change anyway.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index b7056649062a28ca71c4f9fa873b9c55186cefbf..7410d5bd37b95724f5461d5462e99c55cb92b695 100644 (file)
@@ -484,8 +484,6 @@ struct amdgpu_bo_list_entry {
        struct amdgpu_bo                *robj;
        struct ttm_validate_buffer      tv;
        struct amdgpu_bo_va             *bo_va;
-       unsigned                        prefered_domains;
-       unsigned                        allowed_domains;
        uint32_t                        priority;
 };
 
@@ -522,7 +520,8 @@ struct amdgpu_bo {
        /* Protected by gem.mutex */
        struct list_head                list;
        /* Protected by tbo.reserved */
-       u32                             initial_domain;
+       u32                             prefered_domains;
+       u32                             allowed_domains;
        struct ttm_place                placements[AMDGPU_GEM_DOMAIN_MAX + 1];
        struct ttm_placement            placement;
        struct ttm_buffer_object        tbo;
index 9da4bd02cec3e1c323746f50b81131a9b2676c09..c4341dd4b6a4fec0f335144cc3b9be3c10eeb42a 100644 (file)
@@ -111,23 +111,16 @@ static int amdgpu_bo_list_set(struct amdgpu_device *adev,
                drm_gem_object_unreference_unlocked(gobj);
                entry->priority = min(info[i].bo_priority,
                                      AMDGPU_BO_LIST_MAX_PRIORITY);
-               entry->prefered_domains = entry->robj->initial_domain;
-               entry->allowed_domains = entry->prefered_domains;
-               if (entry->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
-                       entry->allowed_domains |= AMDGPU_GEM_DOMAIN_GTT;
-               if (amdgpu_ttm_tt_has_userptr(entry->robj->tbo.ttm)) {
+               if (amdgpu_ttm_tt_has_userptr(entry->robj->tbo.ttm))
                        has_userptr = true;
-                       entry->prefered_domains = AMDGPU_GEM_DOMAIN_GTT;
-                       entry->allowed_domains = AMDGPU_GEM_DOMAIN_GTT;
-               }
                entry->tv.bo = &entry->robj->tbo;
                entry->tv.shared = true;
 
-               if (entry->prefered_domains == AMDGPU_GEM_DOMAIN_GDS)
+               if (entry->robj->prefered_domains == AMDGPU_GEM_DOMAIN_GDS)
                        gds_obj = entry->robj;
-               if (entry->prefered_domains == AMDGPU_GEM_DOMAIN_GWS)
+               if (entry->robj->prefered_domains == AMDGPU_GEM_DOMAIN_GWS)
                        gws_obj = entry->robj;
-               if (entry->prefered_domains == AMDGPU_GEM_DOMAIN_OA)
+               if (entry->robj->prefered_domains == AMDGPU_GEM_DOMAIN_OA)
                        oa_obj = entry->robj;
 
                trace_amdgpu_bo_list_set(list, entry->robj);
index d249e9e0a4ea32c2cd3c2e7a1c1d341cba28c442..a610465c5e0b74ff8d3fc910d0c54037a4ad07e8 100644 (file)
@@ -107,8 +107,6 @@ static int amdgpu_cs_user_fence_chunk(struct amdgpu_cs_parser *p,
        }
 
        p->uf_entry.robj = amdgpu_bo_ref(p->uf.bo);
-       p->uf_entry.prefered_domains = AMDGPU_GEM_DOMAIN_GTT;
-       p->uf_entry.allowed_domains = AMDGPU_GEM_DOMAIN_GTT;
        p->uf_entry.priority = 0;
        p->uf_entry.tv.bo = &p->uf_entry.robj->tbo;
        p->uf_entry.tv.shared = true;
@@ -315,9 +313,9 @@ int amdgpu_cs_list_validate(struct amdgpu_cs_parser *p,
                 * completely.
                 */
                if (p->bytes_moved <= p->bytes_moved_threshold)
-                       domain = lobj->prefered_domains;
+                       domain = bo->prefered_domains;
                else
-                       domain = lobj->allowed_domains;
+                       domain = bo->allowed_domains;
 
        retry:
                amdgpu_ttm_placement_from_domain(bo, domain);
@@ -327,8 +325,8 @@ int amdgpu_cs_list_validate(struct amdgpu_cs_parser *p,
                               initial_bytes_moved;
 
                if (unlikely(r)) {
-                       if (r != -ERESTARTSYS && domain != lobj->allowed_domains) {
-                               domain = lobj->allowed_domains;
+                       if (r != -ERESTARTSYS && domain != bo->allowed_domains) {
+                               domain = bo->allowed_domains;
                                goto retry;
                        }
                        return r;
index 7380f782cd14a2ba1b3bb182832971368545e404..84e850f81f39fd3d016a69b43845368509b96d2b 100644 (file)
@@ -252,6 +252,8 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,
                goto handle_lockup;
 
        bo = gem_to_amdgpu_bo(gobj);
+       bo->prefered_domains = AMDGPU_GEM_DOMAIN_GTT;
+       bo->allowed_domains = AMDGPU_GEM_DOMAIN_GTT;
        r = amdgpu_ttm_tt_set_userptr(bo->tbo.ttm, args->addr, args->flags);
        if (r)
                goto release_object;
@@ -628,7 +630,7 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
 
                info.bo_size = robj->gem_base.size;
                info.alignment = robj->tbo.mem.page_alignment << PAGE_SHIFT;
-               info.domains = robj->initial_domain;
+               info.domains = robj->prefered_domains;
                info.domain_flags = robj->flags;
                amdgpu_bo_unreserve(robj);
                if (copy_to_user(out, &info, sizeof(info)))
@@ -641,9 +643,13 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
                        amdgpu_bo_unreserve(robj);
                        break;
                }
-               robj->initial_domain = args->value & (AMDGPU_GEM_DOMAIN_VRAM |
-                                                     AMDGPU_GEM_DOMAIN_GTT |
-                                                     AMDGPU_GEM_DOMAIN_CPU);
+               robj->prefered_domains = args->value & (AMDGPU_GEM_DOMAIN_VRAM |
+                                                       AMDGPU_GEM_DOMAIN_GTT |
+                                                       AMDGPU_GEM_DOMAIN_CPU);
+               robj->allowed_domains = robj->prefered_domains;
+               if (robj->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
+                       robj->allowed_domains |= AMDGPU_GEM_DOMAIN_GTT;
+
                amdgpu_bo_unreserve(robj);
                break;
        default:
index b8fbbd7699e4586e13e57905b0cef818f6e43e6b..8c1fc1f56342bfaa4c9e0dc11b658c11b48676dd 100644 (file)
@@ -254,12 +254,15 @@ int amdgpu_bo_create_restricted(struct amdgpu_device *adev,
        bo->adev = adev;
        INIT_LIST_HEAD(&bo->list);
        INIT_LIST_HEAD(&bo->va);
-       bo->initial_domain = domain & (AMDGPU_GEM_DOMAIN_VRAM |
-                                      AMDGPU_GEM_DOMAIN_GTT |
-                                      AMDGPU_GEM_DOMAIN_CPU |
-                                      AMDGPU_GEM_DOMAIN_GDS |
-                                      AMDGPU_GEM_DOMAIN_GWS |
-                                      AMDGPU_GEM_DOMAIN_OA);
+       bo->prefered_domains = domain & (AMDGPU_GEM_DOMAIN_VRAM |
+                                        AMDGPU_GEM_DOMAIN_GTT |
+                                        AMDGPU_GEM_DOMAIN_CPU |
+                                        AMDGPU_GEM_DOMAIN_GDS |
+                                        AMDGPU_GEM_DOMAIN_GWS |
+                                        AMDGPU_GEM_DOMAIN_OA);
+       bo->allowed_domains = bo->prefered_domains;
+       if (!kernel && bo->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
+               bo->allowed_domains |= AMDGPU_GEM_DOMAIN_GTT;
 
        bo->flags = flags;
 
index 9599f7559b3dc86308d2c375739d0cd20ee60941..7e6414cffbefffed53645f0003bbcd5f17c65c38 100644 (file)
@@ -89,8 +89,6 @@ void amdgpu_vm_get_pd_bo(struct amdgpu_vm *vm,
                         struct amdgpu_bo_list_entry *entry)
 {
        entry->robj = vm->page_directory;
-       entry->prefered_domains = AMDGPU_GEM_DOMAIN_VRAM;
-       entry->allowed_domains = AMDGPU_GEM_DOMAIN_VRAM;
        entry->priority = 0;
        entry->tv.bo = &vm->page_directory->tbo;
        entry->tv.shared = true;
@@ -1124,8 +1122,6 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev,
                }
 
                entry->robj = pt;
-               entry->prefered_domains = AMDGPU_GEM_DOMAIN_VRAM;
-               entry->allowed_domains = AMDGPU_GEM_DOMAIN_VRAM;
                entry->priority = 0;
                entry->tv.bo = &entry->robj->tbo;
                entry->tv.shared = true;
This page took 0.034787 seconds and 5 git commands to generate.