Commit cc3c72c7 authored by Karol Wachowski's avatar Karol Wachowski Committed by Jacek Lawrynowicz
Browse files

accel/ivpu: Refactor failure diagnostics during boot



Move diagnostic functions to common error handling within ivpu_boot()
function to ensure diagnostics are gathered even in cases where NPU
fails after successful boot (DCT and HWS init failures).

Signed-off-by: default avatarKarol Wachowski <karol.wachowski@intel.com>
Reviewed-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Reviewed-by: default avatarJeffrey Hugo <quic_jhugo@quicinc.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240930195322.461209-24-jacek.lawrynowicz@linux.intel.com


Signed-off-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
parent 5eaa4974
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -386,10 +386,7 @@ int ivpu_boot(struct ivpu_device *vdev)
	ret = ivpu_wait_for_ready(vdev);
	if (ret) {
		ivpu_err(vdev, "Failed to boot the firmware: %d\n", ret);
		ivpu_hw_diagnose_failure(vdev);
		ivpu_mmu_evtq_dump(vdev);
		ivpu_dev_coredump(vdev);
		return ret;
		goto err_diagnose_failure;
	}

	ivpu_hw_irq_clear(vdev);
@@ -400,12 +397,20 @@ int ivpu_boot(struct ivpu_device *vdev)
	if (ivpu_fw_is_cold_boot(vdev)) {
		ret = ivpu_pm_dct_init(vdev);
		if (ret)
			return ret;
			goto err_diagnose_failure;

		return ivpu_hw_sched_init(vdev);
		ret = ivpu_hw_sched_init(vdev);
		if (ret)
			goto err_diagnose_failure;
	}

	return 0;

err_diagnose_failure:
	ivpu_hw_diagnose_failure(vdev);
	ivpu_mmu_evtq_dump(vdev);
	ivpu_dev_coredump(vdev);
	return ret;
}

void ivpu_prepare_for_reset(struct ivpu_device *vdev)