Commit f214b7be authored by Jay Cornwall's avatar Jay Cornwall Committed by Alex Deucher
Browse files

drm/amdkfd: Block per-queue reset when halt_if_hws_hang=1



The purpose of halt_if_hws_hang is to preserve GPU state for driver
debugging when queue preemption fails. Issuing per-queue reset may
kill wavefronts which caused the preemption failure.

Signed-off-by: default avatarJay Cornwall <jay.cornwall@amd.com>
Reviewed-by: default avatarJonathan Kim <Jonathan.Kim@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org # 6.12.x
parent 64179a14
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2325,9 +2325,9 @@ static int unmap_queues_cpsch(struct device_queue_manager *dqm,
	 */
	mqd_mgr = dqm->mqd_mgrs[KFD_MQD_TYPE_HIQ];
	if (mqd_mgr->check_preemption_failed(mqd_mgr, dqm->packet_mgr.priv_queue->queue->mqd)) {
		if (reset_queues_on_hws_hang(dqm)) {
		while (halt_if_hws_hang)
			schedule();
		if (reset_queues_on_hws_hang(dqm)) {
			dqm->is_hws_hang = true;
			kfd_hws_hang(dqm);
			retval = -ETIME;