Commit 2a1398b3317fbc5d2efe1c0089dc56414286dc6b
Committed by
Greg Kroah-Hartman
1 parent
7bb9e4a06e
drm/radeon: don't init gpuvm if accel is disabled (v3)
commit 544143f9e01a60a93eb00ab4bfcb9bf4702a2a7d upstream. If acceleration is disabled, it does not make sense to init gpuvm since nothing will use it. Moreover, if radeon_vm_init() gets called it uses accel to try and clear the pde tables, etc. which results in a bug. v2: handle vm_fini as well v3: handle bo_open/close as well Bug: https://bugs.freedesktop.org/show_bug.cgi?id=88786 Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing 2 changed files with 12 additions and 10 deletions Side-by-side Diff
drivers/gpu/drm/radeon/radeon_gem.c
... | ... | @@ -146,7 +146,8 @@ |
146 | 146 | struct radeon_bo_va *bo_va; |
147 | 147 | int r; |
148 | 148 | |
149 | - if (rdev->family < CHIP_CAYMAN) { | |
149 | + if ((rdev->family < CHIP_CAYMAN) || | |
150 | + (!rdev->accel_working)) { | |
150 | 151 | return 0; |
151 | 152 | } |
152 | 153 | |
... | ... | @@ -176,7 +177,8 @@ |
176 | 177 | struct radeon_bo_va *bo_va; |
177 | 178 | int r; |
178 | 179 | |
179 | - if (rdev->family < CHIP_CAYMAN) { | |
180 | + if ((rdev->family < CHIP_CAYMAN) || | |
181 | + (!rdev->accel_working)) { | |
180 | 182 | return; |
181 | 183 | } |
182 | 184 |
drivers/gpu/drm/radeon/radeon_kms.c
... | ... | @@ -598,14 +598,14 @@ |
598 | 598 | return -ENOMEM; |
599 | 599 | } |
600 | 600 | |
601 | - vm = &fpriv->vm; | |
602 | - r = radeon_vm_init(rdev, vm); | |
603 | - if (r) { | |
604 | - kfree(fpriv); | |
605 | - return r; | |
606 | - } | |
607 | - | |
608 | 601 | if (rdev->accel_working) { |
602 | + vm = &fpriv->vm; | |
603 | + r = radeon_vm_init(rdev, vm); | |
604 | + if (r) { | |
605 | + kfree(fpriv); | |
606 | + return r; | |
607 | + } | |
608 | + | |
609 | 609 | r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); |
610 | 610 | if (r) { |
611 | 611 | radeon_vm_fini(rdev, vm); |
612 | 612 | |
... | ... | @@ -663,9 +663,9 @@ |
663 | 663 | radeon_vm_bo_rmv(rdev, vm->ib_bo_va); |
664 | 664 | radeon_bo_unreserve(rdev->ring_tmp_bo.bo); |
665 | 665 | } |
666 | + radeon_vm_fini(rdev, vm); | |
666 | 667 | } |
667 | 668 | |
668 | - radeon_vm_fini(rdev, vm); | |
669 | 669 | kfree(fpriv); |
670 | 670 | file_priv->driver_priv = NULL; |
671 | 671 | } |