accel/ivpu: Enable recovery and adjust timeouts for fpga
authorTomasz Rusinowicz <tomasz.rusinowicz@intel.com>
Wed, 29 Jan 2025 12:56:35 +0000 (13:56 +0100)
committerJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Mon, 3 Feb 2025 09:40:34 +0000 (10:40 +0100)
Recovery now works on fpga. JSM state dump timeout needs to
be really long for the new fpga model releases.

Enable punit on fpga.

Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Tomasz Rusinowicz <tomasz.rusinowicz@intel.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250129125636.1047413-6-jacek.lawrynowicz@linux.intel.com
drivers/accel/ivpu/ivpu_hw.c
drivers/accel/ivpu/ivpu_pm.c

index 4199f0bbb435bec2dfdc21c3a17c9d983615a96b..2057907c5aa6a7cb09c96dd62b1432996170d060 100644 (file)
@@ -58,7 +58,7 @@ static void platform_init(struct ivpu_device *vdev)
 
 static void wa_init(struct ivpu_device *vdev)
 {
-       vdev->wa.punit_disabled = ivpu_is_fpga(vdev);
+       vdev->wa.punit_disabled = false;
        vdev->wa.clear_runtime_mem = false;
 
        if (ivpu_hw_btrs_gen(vdev) == IVPU_HW_BTRS_MTL)
@@ -87,12 +87,12 @@ static void timeouts_init(struct ivpu_device *vdev)
                vdev->timeout.autosuspend = -1;
                vdev->timeout.d0i3_entry_msg = -1;
        } else if (ivpu_is_fpga(vdev)) {
-               vdev->timeout.boot = 100000;
-               vdev->timeout.jsm = 50000;
-               vdev->timeout.tdr = 2000000;
+               vdev->timeout.boot = 50;
+               vdev->timeout.jsm = 15000;
+               vdev->timeout.tdr = 30000;
                vdev->timeout.autosuspend = -1;
                vdev->timeout.d0i3_entry_msg = 500;
-               vdev->timeout.state_dump_msg = 10;
+               vdev->timeout.state_dump_msg = 10000;
        } else if (ivpu_is_simics(vdev)) {
                vdev->timeout.boot = 50;
                vdev->timeout.jsm = 500;
index f41b3bfe40af4687c10522975ad8d3422bdffa4f..8f6222d1572041c76cbec6c9ae7ddcaab3ab61bc 100644 (file)
@@ -161,11 +161,6 @@ void ivpu_pm_trigger_recovery(struct ivpu_device *vdev, const char *reason)
                return;
        }
 
-       if (ivpu_is_fpga(vdev)) {
-               ivpu_err(vdev, "Recovery not available on FPGA\n");
-               return;
-       }
-
        /* Trigger recovery if it's not in progress */
        if (atomic_cmpxchg(&vdev->pm->reset_pending, 0, 1) == 0) {
                ivpu_hw_diagnose_failure(vdev);