| From bc4755a4bd1845ef6e88ac8c62f12e05bb530256 Mon Sep 17 00:00:00 2001 |
| From: Oded Gabbay <oded.gabbay@gmail.com> |
| Date: Thu, 26 May 2016 08:41:48 +0300 |
| Subject: drm/amdkfd: destroy dbgmgr in notifier release |
| |
| From: Oded Gabbay <oded.gabbay@gmail.com> |
| |
| commit bc4755a4bd1845ef6e88ac8c62f12e05bb530256 upstream. |
| |
| amdkfd need to destroy the debug manager in case amdkfd's notifier |
| function is called before the unbind function, because in that case, |
| the unbind function will exit without destroying debug manager. |
| |
| Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/amd/amdkfd/kfd_process.c | 10 ++++++++-- |
| 1 file changed, 8 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c |
| +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c |
| @@ -242,13 +242,19 @@ static void kfd_process_notifier_release |
| pqm_uninit(&p->pqm); |
| |
| /* Iterate over all process device data structure and check |
| - * if we should reset all wavefronts */ |
| - list_for_each_entry(pdd, &p->per_device_data, per_device_list) |
| + * if we should delete debug managers and reset all wavefronts |
| + */ |
| + list_for_each_entry(pdd, &p->per_device_data, per_device_list) { |
| + if ((pdd->dev->dbgmgr) && |
| + (pdd->dev->dbgmgr->pasid == p->pasid)) |
| + kfd_dbgmgr_destroy(pdd->dev->dbgmgr); |
| + |
| if (pdd->reset_wavefronts) { |
| pr_warn("amdkfd: Resetting all wave fronts\n"); |
| dbgdev_wave_reset_wavefronts(pdd->dev, p); |
| pdd->reset_wavefronts = false; |
| } |
| + } |
| |
| mutex_unlock(&p->mutex); |
| |