OSDN Git Service

drm/amdgpu: remove adev pointer from struct amdgpu_bo v2
authorChristian König <christian.koenig@amd.com>
Thu, 15 Sep 2016 12:58:48 +0000 (14:58 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 25 Oct 2016 18:38:26 +0000 (14:38 -0400)
It's completely pointless to have two pointers to the
device in the same structure.

v2: rename function to amdgpu_ttm_adev, fix typos

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_cs.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index 4e51009..1c874fd 100644 (file)
@@ -465,7 +465,6 @@ struct amdgpu_bo {
         */
        struct list_head                va;
        /* Constant after initialization */
-       struct amdgpu_device            *adev;
        struct drm_gem_object           gem_base;
        struct amdgpu_bo                *parent;
        struct amdgpu_bo                *shadow;
@@ -2127,6 +2126,11 @@ struct amdgpu_device {
 
 };
 
+static inline struct amdgpu_device *amdgpu_ttm_adev(struct ttm_bo_device *bdev)
+{
+       return container_of(bdev, struct amdgpu_device, mman.bdev);
+}
+
 bool amdgpu_device_is_px(struct drm_device *dev);
 int amdgpu_device_init(struct amdgpu_device *adev,
                       struct drm_device *ddev,
index 187c366..504ae09 100644 (file)
@@ -355,6 +355,7 @@ static void amdgpu_cs_report_moved_bytes(struct amdgpu_device *adev,
 static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p,
                                 struct amdgpu_bo *bo)
 {
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        u64 initial_bytes_moved;
        uint32_t domain;
        int r;
@@ -372,9 +373,9 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p,
 
 retry:
        amdgpu_ttm_placement_from_domain(bo, domain);
-       initial_bytes_moved = atomic64_read(&bo->adev->num_bytes_moved);
+       initial_bytes_moved = atomic64_read(&adev->num_bytes_moved);
        r = ttm_bo_validate(&bo->tbo, &bo->placement, true, false);
-       p->bytes_moved += atomic64_read(&bo->adev->num_bytes_moved) -
+       p->bytes_moved += atomic64_read(&adev->num_bytes_moved) -
                initial_bytes_moved;
 
        if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) {
@@ -400,6 +401,7 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
 
                struct amdgpu_bo_list_entry *candidate = p->evictable;
                struct amdgpu_bo *bo = candidate->robj;
+               struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
                u64 initial_bytes_moved;
                uint32_t other;
 
@@ -420,9 +422,9 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
 
                /* Good we can try to move this BO somewhere else */
                amdgpu_ttm_placement_from_domain(bo, other);
-               initial_bytes_moved = atomic64_read(&bo->adev->num_bytes_moved);
+               initial_bytes_moved = atomic64_read(&adev->num_bytes_moved);
                r = ttm_bo_validate(&bo->tbo, &bo->placement, true, false);
-               p->bytes_moved += atomic64_read(&bo->adev->num_bytes_moved) -
+               p->bytes_moved += atomic64_read(&adev->num_bytes_moved) -
                        initial_bytes_moved;
 
                if (unlikely(r))
index 3ad0bf6..d4fce32 100644 (file)
@@ -116,10 +116,11 @@ void amdgpu_gem_force_release(struct amdgpu_device *adev)
  * Call from drm_gem_handle_create which appear in both new and open ioctl
  * case.
  */
-int amdgpu_gem_object_open(struct drm_gem_object *obj, struct drm_file *file_priv)
+int amdgpu_gem_object_open(struct drm_gem_object *obj,
+                          struct drm_file *file_priv)
 {
        struct amdgpu_bo *abo = gem_to_amdgpu_bo(obj);
-       struct amdgpu_device *adev = abo->adev;
+       struct amdgpu_device *adev = amdgpu_ttm_adev(abo->tbo.bdev);
        struct amdgpu_fpriv *fpriv = file_priv->driver_priv;
        struct amdgpu_vm *vm = &fpriv->vm;
        struct amdgpu_bo_va *bo_va;
@@ -142,7 +143,7 @@ void amdgpu_gem_object_close(struct drm_gem_object *obj,
                             struct drm_file *file_priv)
 {
        struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
-       struct amdgpu_device *adev = bo->adev;
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        struct amdgpu_fpriv *fpriv = file_priv->driver_priv;
        struct amdgpu_vm *vm = &fpriv->vm;
 
index 32fa7b7..7ea3cac 100644 (file)
@@ -285,7 +285,7 @@ free_rmn:
 int amdgpu_mn_register(struct amdgpu_bo *bo, unsigned long addr)
 {
        unsigned long end = addr + amdgpu_bo_size(bo) - 1;
-       struct amdgpu_device *adev = bo->adev;
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        struct amdgpu_mn *rmn;
        struct amdgpu_mn_node *node = NULL;
        struct list_head bos;
@@ -340,7 +340,7 @@ int amdgpu_mn_register(struct amdgpu_bo *bo, unsigned long addr)
  */
 void amdgpu_mn_unregister(struct amdgpu_bo *bo)
 {
-       struct amdgpu_device *adev = bo->adev;
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        struct amdgpu_mn *rmn;
        struct list_head *head;
 
index c6754e7..6efa8d7 100644 (file)
@@ -88,18 +88,19 @@ static void amdgpu_update_memory_usage(struct amdgpu_device *adev,
 
 static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo)
 {
+       struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
        struct amdgpu_bo *bo;
 
        bo = container_of(tbo, struct amdgpu_bo, tbo);
 
-       amdgpu_update_memory_usage(bo->adev, &bo->tbo.mem, NULL);
+       amdgpu_update_memory_usage(adev, &bo->tbo.mem, NULL);
 
        drm_gem_object_release(&bo->gem_base);
        amdgpu_bo_unref(&bo->parent);
        if (!list_empty(&bo->shadow_list)) {
-               mutex_lock(&bo->adev->shadow_list_lock);
+               mutex_lock(&adev->shadow_list_lock);
                list_del_init(&bo->shadow_list);
-               mutex_unlock(&bo->adev->shadow_list_lock);
+               mutex_unlock(&adev->shadow_list_lock);
        }
        kfree(bo->metadata);
        kfree(bo);
@@ -210,8 +211,10 @@ static void amdgpu_ttm_placement_init(struct amdgpu_device *adev,
 
 void amdgpu_ttm_placement_from_domain(struct amdgpu_bo *abo, u32 domain)
 {
-       amdgpu_ttm_placement_init(abo->adev, &abo->placement,
-                                 abo->placements, domain, abo->flags);
+       struct amdgpu_device *adev = amdgpu_ttm_adev(abo->tbo.bdev);
+
+       amdgpu_ttm_placement_init(adev, &abo->placement, abo->placements,
+                                 domain, abo->flags);
 }
 
 static void amdgpu_fill_placement_to_bo(struct amdgpu_bo *bo,
@@ -357,7 +360,6 @@ int amdgpu_bo_create_restricted(struct amdgpu_device *adev,
                kfree(bo);
                return r;
        }
-       bo->adev = adev;
        INIT_LIST_HEAD(&bo->shadow_list);
        INIT_LIST_HEAD(&bo->va);
        bo->prefered_domains = domain & (AMDGPU_GEM_DOMAIN_VRAM |
@@ -622,6 +624,7 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
                             u64 min_offset, u64 max_offset,
                             u64 *gpu_addr)
 {
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        int r, i;
        unsigned fpfn, lpfn;
 
@@ -657,12 +660,12 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
                if ((bo->placements[i].flags & TTM_PL_FLAG_VRAM) &&
                    !(bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS) &&
                    (!max_offset || max_offset >
-                    bo->adev->mc.visible_vram_size)) {
+                    adev->mc.visible_vram_size)) {
                        if (WARN_ON_ONCE(min_offset >
-                                        bo->adev->mc.visible_vram_size))
+                                        adev->mc.visible_vram_size))
                                return -EINVAL;
                        fpfn = min_offset >> PAGE_SHIFT;
-                       lpfn = bo->adev->mc.visible_vram_size >> PAGE_SHIFT;
+                       lpfn = adev->mc.visible_vram_size >> PAGE_SHIFT;
                } else {
                        fpfn = min_offset >> PAGE_SHIFT;
                        lpfn = max_offset >> PAGE_SHIFT;
@@ -677,12 +680,12 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
 
        r = ttm_bo_validate(&bo->tbo, &bo->placement, false, false);
        if (unlikely(r)) {
-               dev_err(bo->adev->dev, "%p pin failed\n", bo);
+               dev_err(adev->dev, "%p pin failed\n", bo);
                goto error;
        }
        r = amdgpu_ttm_bind(&bo->tbo, &bo->tbo.mem);
        if (unlikely(r)) {
-               dev_err(bo->adev->dev, "%p bind failed\n", bo);
+               dev_err(adev->dev, "%p bind failed\n", bo);
                goto error;
        }
 
@@ -690,11 +693,11 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
        if (gpu_addr != NULL)
                *gpu_addr = amdgpu_bo_gpu_offset(bo);
        if (domain == AMDGPU_GEM_DOMAIN_VRAM) {
-               bo->adev->vram_pin_size += amdgpu_bo_size(bo);
+               adev->vram_pin_size += amdgpu_bo_size(bo);
                if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS)
-                       bo->adev->invisible_pin_size += amdgpu_bo_size(bo);
+                       adev->invisible_pin_size += amdgpu_bo_size(bo);
        } else if (domain == AMDGPU_GEM_DOMAIN_GTT) {
-               bo->adev->gart_pin_size += amdgpu_bo_size(bo);
+               adev->gart_pin_size += amdgpu_bo_size(bo);
        }
 
 error:
@@ -708,10 +711,11 @@ int amdgpu_bo_pin(struct amdgpu_bo *bo, u32 domain, u64 *gpu_addr)
 
 int amdgpu_bo_unpin(struct amdgpu_bo *bo)
 {
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        int r, i;
 
        if (!bo->pin_count) {
-               dev_warn(bo->adev->dev, "%p unpin not necessary\n", bo);
+               dev_warn(adev->dev, "%p unpin not necessary\n", bo);
                return 0;
        }
        bo->pin_count--;
@@ -723,16 +727,16 @@ int amdgpu_bo_unpin(struct amdgpu_bo *bo)
        }
        r = ttm_bo_validate(&bo->tbo, &bo->placement, false, false);
        if (unlikely(r)) {
-               dev_err(bo->adev->dev, "%p validate failed for unpin\n", bo);
+               dev_err(adev->dev, "%p validate failed for unpin\n", bo);
                goto error;
        }
 
        if (bo->tbo.mem.mem_type == TTM_PL_VRAM) {
-               bo->adev->vram_pin_size -= amdgpu_bo_size(bo);
+               adev->vram_pin_size -= amdgpu_bo_size(bo);
                if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS)
-                       bo->adev->invisible_pin_size -= amdgpu_bo_size(bo);
+                       adev->invisible_pin_size -= amdgpu_bo_size(bo);
        } else if (bo->tbo.mem.mem_type == TTM_PL_TT) {
-               bo->adev->gart_pin_size -= amdgpu_bo_size(bo);
+               adev->gart_pin_size -= amdgpu_bo_size(bo);
        }
 
 error:
@@ -857,6 +861,7 @@ int amdgpu_bo_get_metadata(struct amdgpu_bo *bo, void *buffer,
 void amdgpu_bo_move_notify(struct ttm_buffer_object *bo,
                           struct ttm_mem_reg *new_mem)
 {
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
        struct amdgpu_bo *abo;
        struct ttm_mem_reg *old_mem = &bo->mem;
 
@@ -864,21 +869,21 @@ void amdgpu_bo_move_notify(struct ttm_buffer_object *bo,
                return;
 
        abo = container_of(bo, struct amdgpu_bo, tbo);
-       amdgpu_vm_bo_invalidate(abo->adev, abo);
+       amdgpu_vm_bo_invalidate(adev, abo);
 
        /* update statistics */
        if (!new_mem)
                return;
 
        /* move_notify is called before move happens */
-       amdgpu_update_memory_usage(abo->adev, &bo->mem, new_mem);
+       amdgpu_update_memory_usage(adev, &bo->mem, new_mem);
 
        trace_amdgpu_ttm_bo_move(abo, new_mem->mem_type, old_mem->mem_type);
 }
 
 int amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
 {
-       struct amdgpu_device *adev;
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
        struct amdgpu_bo *abo;
        unsigned long offset, size, lpfn;
        int i, r;
@@ -887,7 +892,6 @@ int amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
                return 0;
 
        abo = container_of(bo, struct amdgpu_bo, tbo);
-       adev = abo->adev;
        if (bo->mem.mem_type != TTM_PL_VRAM)
                return 0;
 
index 8255034..d3baf83 100644 (file)
@@ -71,12 +71,13 @@ static inline unsigned amdgpu_mem_type_to_domain(u32 mem_type)
  */
 static inline int amdgpu_bo_reserve(struct amdgpu_bo *bo, bool no_intr)
 {
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        int r;
 
        r = ttm_bo_reserve(&bo->tbo, !no_intr, false, NULL);
        if (unlikely(r != 0)) {
                if (r != -ERESTARTSYS)
-                       dev_err(bo->adev->dev, "%p reserve failed\n", bo);
+                       dev_err(adev->dev, "%p reserve failed\n", bo);
                return r;
        }
        return 0;
index f757f68..414fa8f 100644 (file)
 static int amdgpu_ttm_debugfs_init(struct amdgpu_device *adev);
 static void amdgpu_ttm_debugfs_fini(struct amdgpu_device *adev);
 
-static struct amdgpu_device *amdgpu_get_adev(struct ttm_bo_device *bdev)
-{
-       struct amdgpu_mman *mman;
-       struct amdgpu_device *adev;
-
-       mman = container_of(bdev, struct amdgpu_mman, bdev);
-       adev = container_of(mman, struct amdgpu_device, mman);
-       return adev;
-}
-
 
 /*
  * Global memory.
@@ -150,7 +140,7 @@ static int amdgpu_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
 {
        struct amdgpu_device *adev;
 
-       adev = amdgpu_get_adev(bdev);
+       adev = amdgpu_ttm_adev(bdev);
 
        switch (type) {
        case TTM_PL_SYSTEM:
@@ -195,6 +185,7 @@ static int amdgpu_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
 static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
                                struct ttm_placement *placement)
 {
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
        struct amdgpu_bo *abo;
        static struct ttm_place placements = {
                .fpfn = 0,
@@ -213,7 +204,7 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
        abo = container_of(bo, struct amdgpu_bo, tbo);
        switch (bo->mem.mem_type) {
        case TTM_PL_VRAM:
-               if (abo->adev->mman.buffer_funcs_ring->ready == false) {
+               if (adev->mman.buffer_funcs_ring->ready == false) {
                        amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_CPU);
                } else {
                        amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT);
@@ -229,7 +220,7 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
                                 * allocating address space for the BO.
                                 */
                                abo->placements[i].lpfn =
-                                       abo->adev->mc.gtt_size >> PAGE_SHIFT;
+                                       adev->mc.gtt_size >> PAGE_SHIFT;
                        }
                }
                break;
@@ -290,7 +281,7 @@ static int amdgpu_move_blit(struct ttm_buffer_object *bo,
                            struct ttm_mem_reg *new_mem,
                            struct ttm_mem_reg *old_mem)
 {
-       struct amdgpu_device *adev = amdgpu_get_adev(bo->bdev);
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
        struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring;
 
        struct drm_mm_node *old_mm, *new_mm;
@@ -384,7 +375,7 @@ static int amdgpu_move_vram_ram(struct ttm_buffer_object *bo,
        struct ttm_placement placement;
        int r;
 
-       adev = amdgpu_get_adev(bo->bdev);
+       adev = amdgpu_ttm_adev(bo->bdev);
        tmp_mem = *new_mem;
        tmp_mem.mm_node = NULL;
        placement.num_placement = 1;
@@ -431,7 +422,7 @@ static int amdgpu_move_ram_vram(struct ttm_buffer_object *bo,
        struct ttm_place placements;
        int r;
 
-       adev = amdgpu_get_adev(bo->bdev);
+       adev = amdgpu_ttm_adev(bo->bdev);
        tmp_mem = *new_mem;
        tmp_mem.mm_node = NULL;
        placement.num_placement = 1;
@@ -474,7 +465,7 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo,
        if (WARN_ON_ONCE(abo->pin_count > 0))
                return -EINVAL;
 
-       adev = amdgpu_get_adev(bo->bdev);
+       adev = amdgpu_ttm_adev(bo->bdev);
 
        /* remember the eviction */
        if (evict)
@@ -527,7 +518,7 @@ memcpy:
 static int amdgpu_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem)
 {
        struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
-       struct amdgpu_device *adev = amdgpu_get_adev(bdev);
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bdev);
 
        mem->bus.addr = NULL;
        mem->bus.offset = 0;
@@ -659,7 +650,7 @@ release_pages:
 /* prepare the sg table with the user pages */
 static int amdgpu_ttm_tt_pin_userptr(struct ttm_tt *ttm)
 {
-       struct amdgpu_device *adev = amdgpu_get_adev(ttm->bdev);
+       struct amdgpu_device *adev = amdgpu_ttm_adev(ttm->bdev);
        struct amdgpu_ttm_tt *gtt = (void *)ttm;
        unsigned nents;
        int r;
@@ -691,7 +682,7 @@ release_sg:
 
 static void amdgpu_ttm_tt_unpin_userptr(struct ttm_tt *ttm)
 {
-       struct amdgpu_device *adev = amdgpu_get_adev(ttm->bdev);
+       struct amdgpu_device *adev = amdgpu_ttm_adev(ttm->bdev);
        struct amdgpu_ttm_tt *gtt = (void *)ttm;
        struct sg_page_iter sg_iter;
 
@@ -851,7 +842,7 @@ static struct ttm_tt *amdgpu_ttm_tt_create(struct ttm_bo_device *bdev,
        struct amdgpu_device *adev;
        struct amdgpu_ttm_tt *gtt;
 
-       adev = amdgpu_get_adev(bdev);
+       adev = amdgpu_ttm_adev(bdev);
 
        gtt = kzalloc(sizeof(struct amdgpu_ttm_tt), GFP_KERNEL);
        if (gtt == NULL) {
@@ -895,7 +886,7 @@ static int amdgpu_ttm_tt_populate(struct ttm_tt *ttm)
                return 0;
        }
 
-       adev = amdgpu_get_adev(ttm->bdev);
+       adev = amdgpu_ttm_adev(ttm->bdev);
 
 #ifdef CONFIG_SWIOTLB
        if (swiotlb_nr_tbl()) {
@@ -941,7 +932,7 @@ static void amdgpu_ttm_tt_unpopulate(struct ttm_tt *ttm)
        if (slave)
                return;
 
-       adev = amdgpu_get_adev(ttm->bdev);
+       adev = amdgpu_ttm_adev(ttm->bdev);
 
 #ifdef CONFIG_SWIOTLB
        if (swiotlb_nr_tbl()) {
@@ -1064,7 +1055,7 @@ uint32_t amdgpu_ttm_tt_pte_flags(struct amdgpu_device *adev, struct ttm_tt *ttm,
 
 static void amdgpu_ttm_lru_removal(struct ttm_buffer_object *tbo)
 {
-       struct amdgpu_device *adev = amdgpu_get_adev(tbo->bdev);
+       struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
        unsigned i, j;
 
        for (i = 0; i < AMDGPU_TTM_LRU_SIZE; ++i) {
@@ -1081,7 +1072,7 @@ static void amdgpu_ttm_lru_removal(struct ttm_buffer_object *tbo)
 
 static struct amdgpu_mman_lru *amdgpu_ttm_lru(struct ttm_buffer_object *tbo)
 {
-       struct amdgpu_device *adev = amdgpu_get_adev(tbo->bdev);
+       struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
        unsigned log2_size = min(ilog2(tbo->num_pages),
                                 AMDGPU_TTM_LRU_SIZE - 1);
 
@@ -1370,7 +1361,7 @@ int amdgpu_fill_buffer(struct amdgpu_bo *bo,
                struct reservation_object *resv,
                struct fence **fence)
 {
-       struct amdgpu_device *adev = bo->adev;
+       struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        struct amdgpu_job *job;
        struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring;
 
index 4cf3ca7..d67eada 100644 (file)
@@ -931,7 +931,7 @@ static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring, struct amdgpu_bo *bo,
        if (r)
                return r;
 
-       if (!bo->adev->uvd.address_64_bit) {
+       if (!ring->adev->uvd.address_64_bit) {
                amdgpu_ttm_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_VRAM);
                amdgpu_uvd_force_into_uvd_segment(bo);
        }
index 840ac52..f4b78b6 100644 (file)
@@ -1195,7 +1195,7 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev,
 
        flags = amdgpu_ttm_tt_pte_flags(adev, bo_va->bo->tbo.ttm, mem);
        gtt_flags = (amdgpu_ttm_is_bound(bo_va->bo->tbo.ttm) &&
-               adev == bo_va->bo->adev) ? flags : 0;
+               adev == amdgpu_ttm_adev(bo_va->bo->tbo.bdev)) ? flags : 0;
 
        spin_lock(&vm->status_lock);
        if (!list_empty(&bo_va->vm_status))