diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index e48b4ec88c8c..46b9ea4e6103 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | |||
@@ -36,8 +36,6 @@ void amdgpu_gem_object_free(struct drm_gem_object *gobj) | |||
36 | struct amdgpu_bo *robj = gem_to_amdgpu_bo(gobj); | 36 | struct amdgpu_bo *robj = gem_to_amdgpu_bo(gobj); |
37 | 37 | ||
38 | if (robj) { | 38 | if (robj) { |
39 | if (robj->gem_base.import_attach) | ||
40 | drm_prime_gem_destroy(&robj->gem_base, robj->tbo.sg); | ||
41 | amdgpu_mn_unregister(robj); | 39 | amdgpu_mn_unregister(robj); |
42 | amdgpu_bo_unref(&robj); | 40 | amdgpu_bo_unref(&robj); |
43 | } | 41 | } |
@@ -45,7 +43,7 @@ void amdgpu_gem_object_free(struct drm_gem_object *gobj) | |||
45 | 43 | ||
46 | int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, | 44 | int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, |
47 | int alignment, u32 initial_domain, | 45 | int alignment, u32 initial_domain, |
48 | u64 flags, bool kernel, | 46 | u64 flags, enum ttm_bo_type type, |
49 | struct reservation_object *resv, | 47 | struct reservation_object *resv, |
50 | struct drm_gem_object **obj) | 48 | struct drm_gem_object **obj) |
51 | { | 49 | { |
@@ -59,8 +57,8 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, | |||
59 | } | 57 | } |
60 | 58 | ||
61 | retry: | 59 | retry: |
62 | r = amdgpu_bo_create(adev, size, alignment, kernel, initial_domain, | 60 | r = amdgpu_bo_create(adev, size, alignment, initial_domain, |
63 | flags, NULL, resv, 0, &bo); | 61 | flags, type, resv, &bo); |
64 | if (r) { | 62 | if (r) { |
65 | if (r != -ERESTARTSYS) { | 63 | if (r != -ERESTARTSYS) { |
66 | if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) { | 64 | if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) { |
@@ -523,12 +521,13 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev, | |||
523 | goto error; | 521 | goto error; |
524 | 522 | ||
525 | if (operation == AMDGPU_VA_OP_MAP || | 523 | if (operation == AMDGPU_VA_OP_MAP || |
526 | operation == AMDGPU_VA_OP_REPLACE) | 524 | operation == AMDGPU_VA_OP_REPLACE) { |
527 | r = amdgpu_vm_bo_update(adev, bo_va, false); | 525 | r = amdgpu_vm_bo_update(adev, bo_va, false); |
526 | if (r) | ||
527 | goto error; | ||
528 | } | ||
528 | 529 | ||
529 | r = amdgpu_vm_update_directories(adev, vm); | 530 | r = amdgpu_vm_update_directories(adev, vm); |
530 | if (r) | ||
531 | goto error; | ||
532 | 531 | ||
533 | error: | 532 | error: |
534 | if (r && r != -ERESTARTSYS) | 533 | if (r && r != -ERESTARTSYS) |
@@ -634,7 +633,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data, | |||
634 | if (r) | 633 | if (r) |
635 | goto error_backoff; | 634 | goto error_backoff; |
636 | 635 | ||
637 | va_flags = amdgpu_vm_get_pte_flags(adev, args->flags); | 636 | va_flags = amdgpu_gmc_get_pte_flags(adev, args->flags); |
638 | r = amdgpu_vm_bo_map(adev, bo_va, args->va_address, | 637 | r = amdgpu_vm_bo_map(adev, bo_va, args->va_address, |
639 | args->offset_in_bo, args->map_size, | 638 | args->offset_in_bo, args->map_size, |
640 | va_flags); | 639 | va_flags); |
@@ -654,7 +653,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data, | |||
654 | if (r) | 653 | if (r) |
655 | goto error_backoff; | 654 | goto error_backoff; |
656 | 655 | ||
657 | va_flags = amdgpu_vm_get_pte_flags(adev, args->flags); | 656 | va_flags = amdgpu_gmc_get_pte_flags(adev, args->flags); |
658 | r = amdgpu_vm_bo_replace_map(adev, bo_va, args->va_address, | 657 | r = amdgpu_vm_bo_replace_map(adev, bo_va, args->va_address, |
659 | args->offset_in_bo, args->map_size, | 658 | args->offset_in_bo, args->map_size, |
660 | va_flags); | 659 | va_flags); |