Skip to content

Commit 276e483

Browse files
Krystian Pradzynskisgruszka
authored andcommitted
accel/ivpu: Use ratelimited warn and err in IPC/JSM
Quite often during test corner cases IPC, JSM functions can flood dmesg with warn or err messages. With that lost dmesg history. Change warn, err to ratelimited versions in IPC, JSM to suppress dmesg spam occurrence during fail test scenarios. Signed-off-by: Krystian Pradzynski <[email protected]> Reviewed-by: Stanislaw Gruszka <[email protected]> Reviewed-by: Jeffrey Hugo <[email protected]> Signed-off-by: Stanislaw Gruszka <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent c2635c0 commit 276e483

File tree

2 files changed

+26
-21
lines changed

2 files changed

+26
-21
lines changed

drivers/accel/ivpu/ivpu_ipc.c

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ ivpu_ipc_tx_prepare(struct ivpu_device *vdev, struct ivpu_ipc_consumer *cons,
7979

8080
tx_buf_vpu_addr = gen_pool_alloc(ipc->mm_tx, sizeof(*tx_buf));
8181
if (!tx_buf_vpu_addr) {
82-
ivpu_err(vdev, "Failed to reserve IPC buffer, size %ld\n",
83-
sizeof(*tx_buf));
82+
ivpu_err_ratelimited(vdev, "Failed to reserve IPC buffer, size %ld\n",
83+
sizeof(*tx_buf));
8484
return -ENOMEM;
8585
}
8686

@@ -93,12 +93,12 @@ ivpu_ipc_tx_prepare(struct ivpu_device *vdev, struct ivpu_ipc_consumer *cons,
9393
jsm_vpu_addr = tx_buf_vpu_addr + offsetof(struct ivpu_ipc_tx_buf, jsm);
9494

9595
if (tx_buf->ipc.status != IVPU_IPC_HDR_FREE)
96-
ivpu_warn(vdev, "IPC message vpu:0x%x not released by firmware\n",
97-
tx_buf_vpu_addr);
96+
ivpu_warn_ratelimited(vdev, "IPC message vpu:0x%x not released by firmware\n",
97+
tx_buf_vpu_addr);
9898

9999
if (tx_buf->jsm.status != VPU_JSM_MSG_FREE)
100-
ivpu_warn(vdev, "JSM message vpu:0x%x not released by firmware\n",
101-
jsm_vpu_addr);
100+
ivpu_warn_ratelimited(vdev, "JSM message vpu:0x%x not released by firmware\n",
101+
jsm_vpu_addr);
102102

103103
memset(tx_buf, 0, sizeof(*tx_buf));
104104
tx_buf->ipc.data_addr = jsm_vpu_addr;
@@ -266,18 +266,19 @@ ivpu_ipc_send_receive_internal(struct ivpu_device *vdev, struct vpu_jsm_msg *req
266266

267267
ret = ivpu_ipc_send(vdev, &cons, req);
268268
if (ret) {
269-
ivpu_warn(vdev, "IPC send failed: %d\n", ret);
269+
ivpu_warn_ratelimited(vdev, "IPC send failed: %d\n", ret);
270270
goto consumer_del;
271271
}
272272

273273
ret = ivpu_ipc_receive(vdev, &cons, NULL, resp, timeout_ms);
274274
if (ret) {
275-
ivpu_warn(vdev, "IPC receive failed: type 0x%x, ret %d\n", req->type, ret);
275+
ivpu_warn_ratelimited(vdev, "IPC receive failed: type 0x%x, ret %d\n",
276+
req->type, ret);
276277
goto consumer_del;
277278
}
278279

279280
if (resp->type != expected_resp_type) {
280-
ivpu_warn(vdev, "Invalid JSM response type: 0x%x\n", resp->type);
281+
ivpu_warn_ratelimited(vdev, "Invalid JSM response type: 0x%x\n", resp->type);
281282
ret = -EBADE;
282283
}
283284

@@ -375,13 +376,13 @@ int ivpu_ipc_irq_handler(struct ivpu_device *vdev)
375376
while (ivpu_hw_reg_ipc_rx_count_get(vdev)) {
376377
vpu_addr = ivpu_hw_reg_ipc_rx_addr_get(vdev);
377378
if (vpu_addr == REG_IO_ERROR) {
378-
ivpu_err(vdev, "Failed to read IPC rx addr register\n");
379+
ivpu_err_ratelimited(vdev, "Failed to read IPC rx addr register\n");
379380
return -EIO;
380381
}
381382

382383
ipc_hdr = ivpu_to_cpu_addr(ipc->mem_rx, vpu_addr);
383384
if (!ipc_hdr) {
384-
ivpu_warn(vdev, "IPC msg 0x%x out of range\n", vpu_addr);
385+
ivpu_warn_ratelimited(vdev, "IPC msg 0x%x out of range\n", vpu_addr);
385386
continue;
386387
}
387388
ivpu_ipc_msg_dump(vdev, "RX", ipc_hdr, vpu_addr);
@@ -390,15 +391,17 @@ int ivpu_ipc_irq_handler(struct ivpu_device *vdev)
390391
if (ipc_hdr->channel != IVPU_IPC_CHAN_BOOT_MSG) {
391392
jsm_msg = ivpu_to_cpu_addr(ipc->mem_rx, ipc_hdr->data_addr);
392393
if (!jsm_msg) {
393-
ivpu_warn(vdev, "JSM msg 0x%x out of range\n", ipc_hdr->data_addr);
394+
ivpu_warn_ratelimited(vdev, "JSM msg 0x%x out of range\n",
395+
ipc_hdr->data_addr);
394396
ivpu_ipc_rx_mark_free(vdev, ipc_hdr, NULL);
395397
continue;
396398
}
397399
ivpu_jsm_msg_dump(vdev, "RX", jsm_msg, ipc_hdr->data_addr);
398400
}
399401

400402
if (atomic_read(&ipc->rx_msg_count) > IPC_MAX_RX_MSG) {
401-
ivpu_warn(vdev, "IPC RX msg dropped, msg count %d\n", IPC_MAX_RX_MSG);
403+
ivpu_warn_ratelimited(vdev, "IPC RX msg dropped, msg count %d\n",
404+
IPC_MAX_RX_MSG);
402405
ivpu_ipc_rx_mark_free(vdev, ipc_hdr, jsm_msg);
403406
continue;
404407
}

drivers/accel/ivpu/ivpu_jsm_msg.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ int ivpu_jsm_register_db(struct ivpu_device *vdev, u32 ctx_id, u32 db_id,
2222
ret = ivpu_ipc_send_receive(vdev, &req, VPU_JSM_MSG_REGISTER_DB_DONE, &resp,
2323
VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
2424
if (ret) {
25-
ivpu_err(vdev, "Failed to register doorbell %d: %d\n", db_id, ret);
25+
ivpu_err_ratelimited(vdev, "Failed to register doorbell %d: %d\n", db_id, ret);
2626
return ret;
2727
}
2828

@@ -42,7 +42,7 @@ int ivpu_jsm_unregister_db(struct ivpu_device *vdev, u32 db_id)
4242
ret = ivpu_ipc_send_receive(vdev, &req, VPU_JSM_MSG_UNREGISTER_DB_DONE, &resp,
4343
VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
4444
if (ret) {
45-
ivpu_warn(vdev, "Failed to unregister doorbell %d: %d\n", db_id, ret);
45+
ivpu_warn_ratelimited(vdev, "Failed to unregister doorbell %d: %d\n", db_id, ret);
4646
return ret;
4747
}
4848

@@ -65,7 +65,8 @@ int ivpu_jsm_get_heartbeat(struct ivpu_device *vdev, u32 engine, u64 *heartbeat)
6565
ret = ivpu_ipc_send_receive(vdev, &req, VPU_JSM_MSG_QUERY_ENGINE_HB_DONE, &resp,
6666
VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
6767
if (ret) {
68-
ivpu_err(vdev, "Failed to get heartbeat from engine %d: %d\n", engine, ret);
68+
ivpu_err_ratelimited(vdev, "Failed to get heartbeat from engine %d: %d\n",
69+
engine, ret);
6970
return ret;
7071
}
7172

@@ -87,7 +88,7 @@ int ivpu_jsm_reset_engine(struct ivpu_device *vdev, u32 engine)
8788
ret = ivpu_ipc_send_receive(vdev, &req, VPU_JSM_MSG_ENGINE_RESET_DONE, &resp,
8889
VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
8990
if (ret)
90-
ivpu_err(vdev, "Failed to reset engine %d: %d\n", engine, ret);
91+
ivpu_err_ratelimited(vdev, "Failed to reset engine %d: %d\n", engine, ret);
9192

9293
return ret;
9394
}
@@ -107,7 +108,7 @@ int ivpu_jsm_preempt_engine(struct ivpu_device *vdev, u32 engine, u32 preempt_id
107108
ret = ivpu_ipc_send_receive(vdev, &req, VPU_JSM_MSG_ENGINE_PREEMPT_DONE, &resp,
108109
VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
109110
if (ret)
110-
ivpu_err(vdev, "Failed to preempt engine %d: %d\n", engine, ret);
111+
ivpu_err_ratelimited(vdev, "Failed to preempt engine %d: %d\n", engine, ret);
111112

112113
return ret;
113114
}
@@ -123,7 +124,8 @@ int ivpu_jsm_dyndbg_control(struct ivpu_device *vdev, char *command, size_t size
123124
ret = ivpu_ipc_send_receive(vdev, &req, VPU_JSM_MSG_DYNDBG_CONTROL_RSP, &resp,
124125
VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
125126
if (ret)
126-
ivpu_warn(vdev, "Failed to send command \"%s\": ret %d\n", command, ret);
127+
ivpu_warn_ratelimited(vdev, "Failed to send command \"%s\": ret %d\n",
128+
command, ret);
127129

128130
return ret;
129131
}
@@ -138,7 +140,7 @@ int ivpu_jsm_trace_get_capability(struct ivpu_device *vdev, u32 *trace_destinati
138140
ret = ivpu_ipc_send_receive(vdev, &req, VPU_JSM_MSG_TRACE_GET_CAPABILITY_RSP, &resp,
139141
VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
140142
if (ret) {
141-
ivpu_warn(vdev, "Failed to get trace capability: %d\n", ret);
143+
ivpu_warn_ratelimited(vdev, "Failed to get trace capability: %d\n", ret);
142144
return ret;
143145
}
144146

@@ -162,7 +164,7 @@ int ivpu_jsm_trace_set_config(struct ivpu_device *vdev, u32 trace_level, u32 tra
162164
ret = ivpu_ipc_send_receive(vdev, &req, VPU_JSM_MSG_TRACE_SET_CONFIG_RSP, &resp,
163165
VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
164166
if (ret)
165-
ivpu_warn(vdev, "Failed to set config: %d\n", ret);
167+
ivpu_warn_ratelimited(vdev, "Failed to set config: %d\n", ret);
166168

167169
return ret;
168170
}

0 commit comments

Comments
 (0)