ivpu_ipc.c (cf79f291f985662150363b4a93d16f88f12643bc) ivpu_ipc.c (27d19268cf394f2c78db732be0cb31852eeadb0a)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2020-2023 Intel Corporation
4 */
5
6#include <linux/genalloc.h>
7#include <linux/highmem.h>
8#include <linux/pm_runtime.h>

--- 329 unchanged lines hidden (view full) ---

338
339 ret = ivpu_ipc_send_receive_internal(vdev, req, expected_resp, resp, channel, timeout_ms);
340 if (ret != -ETIMEDOUT)
341 return ret;
342
343 hb_ret = ivpu_ipc_send_receive_internal(vdev, &hb_req, VPU_JSM_MSG_QUERY_ENGINE_HB_DONE,
344 &hb_resp, VPU_IPC_CHAN_ASYNC_CMD,
345 vdev->timeout.jsm);
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2020-2023 Intel Corporation
4 */
5
6#include <linux/genalloc.h>
7#include <linux/highmem.h>
8#include <linux/pm_runtime.h>

--- 329 unchanged lines hidden (view full) ---

338
339 ret = ivpu_ipc_send_receive_internal(vdev, req, expected_resp, resp, channel, timeout_ms);
340 if (ret != -ETIMEDOUT)
341 return ret;
342
343 hb_ret = ivpu_ipc_send_receive_internal(vdev, &hb_req, VPU_JSM_MSG_QUERY_ENGINE_HB_DONE,
344 &hb_resp, VPU_IPC_CHAN_ASYNC_CMD,
345 vdev->timeout.jsm);
346 if (hb_ret == -ETIMEDOUT) {
347 ivpu_hw_diagnose_failure(vdev);
348 ivpu_pm_schedule_recovery(vdev);
349 }
346 if (hb_ret == -ETIMEDOUT)
347 ivpu_pm_trigger_recovery(vdev, "IPC timeout");
350
351 return ret;
352}
353
354int ivpu_ipc_send_receive(struct ivpu_device *vdev, struct vpu_jsm_msg *req,
355 enum vpu_ipc_msg_type expected_resp, struct vpu_jsm_msg *resp,
356 u32 channel, unsigned long timeout_ms)
357{

--- 220 unchanged lines hidden ---
348
349 return ret;
350}
351
352int ivpu_ipc_send_receive(struct ivpu_device *vdev, struct vpu_jsm_msg *req,
353 enum vpu_ipc_msg_type expected_resp, struct vpu_jsm_msg *resp,
354 u32 channel, unsigned long timeout_ms)
355{

--- 220 unchanged lines hidden ---