Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc4755a4 authored by Oded Gabbay's avatar Oded Gabbay
Browse files

drm/amdkfd: destroy dbgmgr in notifier release



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: default avatarOded Gabbay <oded.gabbay@gmail.com>
CC: Stable <stable@vger.kernel.org>
parent 121b78e6
Loading
Loading
Loading
Loading
+8 −2
Original line number Original line Diff line number Diff line
@@ -242,13 +242,19 @@ static void kfd_process_notifier_release(struct mmu_notifier *mn,
	pqm_uninit(&p->pqm);
	pqm_uninit(&p->pqm);


	/* Iterate over all process device data structure and check
	/* Iterate over all process device data structure and check
	 * if we should reset all wavefronts */
	 * if we should delete debug managers and reset all wavefronts
	list_for_each_entry(pdd, &p->per_device_data, per_device_list)
	 */
	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) {
		if (pdd->reset_wavefronts) {
			pr_warn("amdkfd: Resetting all wave fronts\n");
			pr_warn("amdkfd: Resetting all wave fronts\n");
			dbgdev_wave_reset_wavefronts(pdd->dev, p);
			dbgdev_wave_reset_wavefronts(pdd->dev, p);
			pdd->reset_wavefronts = false;
			pdd->reset_wavefronts = false;
		}
		}
	}


	mutex_unlock(&p->mutex);
	mutex_unlock(&p->mutex);