mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-12-08 07:15:55 +00:00
drm/xe/vm: tidy up xe_runtime_pm usage
The xe_device_mem_access_get() should be all that's needed here and should now work as expected, without any strange races. In theory should be no functional changes here. Reported-by: Oded Gabbay <ogabbay@kernel.org> Signed-off-by: Matthew Auld <matthew.auld@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
a00b8f1aae
commit
2d30332a5e
@ -1245,11 +1245,8 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
|
|||||||
|
|
||||||
INIT_LIST_HEAD(&vm->extobj.list);
|
INIT_LIST_HEAD(&vm->extobj.list);
|
||||||
|
|
||||||
if (!(flags & XE_VM_FLAG_MIGRATION)) {
|
if (!(flags & XE_VM_FLAG_MIGRATION))
|
||||||
/* We need to immeditatelly exit from any D3 state */
|
|
||||||
xe_pm_runtime_get(xe);
|
|
||||||
xe_device_mem_access_get(xe);
|
xe_device_mem_access_get(xe);
|
||||||
}
|
|
||||||
|
|
||||||
vm_resv_obj = drm_gpuvm_resv_object_alloc(&xe->drm);
|
vm_resv_obj = drm_gpuvm_resv_object_alloc(&xe->drm);
|
||||||
if (!vm_resv_obj) {
|
if (!vm_resv_obj) {
|
||||||
@ -1360,10 +1357,8 @@ err_close:
|
|||||||
|
|
||||||
err_no_resv:
|
err_no_resv:
|
||||||
kfree(vm);
|
kfree(vm);
|
||||||
if (!(flags & XE_VM_FLAG_MIGRATION)) {
|
if (!(flags & XE_VM_FLAG_MIGRATION))
|
||||||
xe_device_mem_access_put(xe);
|
xe_device_mem_access_put(xe);
|
||||||
xe_pm_runtime_put(xe);
|
|
||||||
}
|
|
||||||
return ERR_PTR(err);
|
return ERR_PTR(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1522,7 +1517,6 @@ static void vm_destroy_work_func(struct work_struct *w)
|
|||||||
|
|
||||||
if (!(vm->flags & XE_VM_FLAG_MIGRATION)) {
|
if (!(vm->flags & XE_VM_FLAG_MIGRATION)) {
|
||||||
xe_device_mem_access_put(xe);
|
xe_device_mem_access_put(xe);
|
||||||
xe_pm_runtime_put(xe);
|
|
||||||
|
|
||||||
if (xe->info.has_asid) {
|
if (xe->info.has_asid) {
|
||||||
mutex_lock(&xe->usm.lock);
|
mutex_lock(&xe->usm.lock);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user