2021-06-08 11:48:01

by Stanimir Varbanov

[permalink] [raw]
Subject: [PATCH v2 0/5] Venus fatal error handling

Changes since v1:
* replace pm_runtime_get_sync with pm_runtime_resume_and_get in 1/5.

regards,
Stan

Stanimir Varbanov (5):
venus: venc: Use pmruntime autosuspend
venus: Make sys_error flag an atomic bitops
venus: hfi: Check for sys error on session hfi functions
venus: helpers: Add helper to mark fatal vb2 error
venus: Handle fatal errors during encoding and decoding

drivers/media/platform/qcom/venus/core.c | 13 ++-
drivers/media/platform/qcom/venus/core.h | 6 +-
drivers/media/platform/qcom/venus/helpers.c | 16 ++-
drivers/media/platform/qcom/venus/helpers.h | 1 +
drivers/media/platform/qcom/venus/hfi.c | 48 +++++++-
drivers/media/platform/qcom/venus/vdec.c | 18 ++-
drivers/media/platform/qcom/venus/venc.c | 116 ++++++++++++++++++--
7 files changed, 201 insertions(+), 17 deletions(-)

--
2.25.1


2021-06-09 00:51:19

by Stanimir Varbanov

[permalink] [raw]
Subject: [PATCH v2 4/5] venus: helpers: Add helper to mark fatal vb2 error

Add a helper to mark source and destination vb2 queues fatal
unrecoverable error.

Signed-off-by: Stanimir Varbanov <[email protected]>
---
drivers/media/platform/qcom/venus/helpers.c | 12 ++++++++++++
drivers/media/platform/qcom/venus/helpers.h | 1 +
2 files changed, 13 insertions(+)

diff --git a/drivers/media/platform/qcom/venus/helpers.c b/drivers/media/platform/qcom/venus/helpers.c
index 210c628ac8f4..abd41ebf3c1b 100644
--- a/drivers/media/platform/qcom/venus/helpers.c
+++ b/drivers/media/platform/qcom/venus/helpers.c
@@ -1505,6 +1505,18 @@ void venus_helper_vb2_stop_streaming(struct vb2_queue *q)
}
EXPORT_SYMBOL_GPL(venus_helper_vb2_stop_streaming);

+void venus_helper_vb2_queue_error(struct venus_inst *inst)
+{
+ struct v4l2_m2m_ctx *m2m_ctx = inst->m2m_ctx;
+ struct vb2_queue *q;
+
+ q = v4l2_m2m_get_src_vq(m2m_ctx);
+ vb2_queue_error(q);
+ q = v4l2_m2m_get_dst_vq(m2m_ctx);
+ vb2_queue_error(q);
+}
+EXPORT_SYMBOL_GPL(venus_helper_vb2_queue_error);
+
int venus_helper_process_initial_cap_bufs(struct venus_inst *inst)
{
struct v4l2_m2m_ctx *m2m_ctx = inst->m2m_ctx;
diff --git a/drivers/media/platform/qcom/venus/helpers.h b/drivers/media/platform/qcom/venus/helpers.h
index e6269b4be3af..6a250c3d3cfe 100644
--- a/drivers/media/platform/qcom/venus/helpers.h
+++ b/drivers/media/platform/qcom/venus/helpers.h
@@ -21,6 +21,7 @@ int venus_helper_vb2_buf_prepare(struct vb2_buffer *vb);
void venus_helper_vb2_buf_queue(struct vb2_buffer *vb);
void venus_helper_vb2_stop_streaming(struct vb2_queue *q);
int venus_helper_vb2_start_streaming(struct venus_inst *inst);
+void venus_helper_vb2_queue_error(struct venus_inst *inst);
void venus_helper_m2m_device_run(void *priv);
void venus_helper_m2m_job_abort(void *priv);
int venus_helper_get_bufreq(struct venus_inst *inst, u32 type,
--
2.25.1

2021-10-06 05:03:21

by Vikash Garodia

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] Venus fatal error handling

On 2021-06-08 17:11, Stanimir Varbanov wrote:
> Changes since v1:
> * replace pm_runtime_get_sync with pm_runtime_resume_and_get in 1/5.
>
> regards,
> Stan
>
> Stanimir Varbanov (5):
> venus: venc: Use pmruntime autosuspend
> venus: Make sys_error flag an atomic bitops
> venus: hfi: Check for sys error on session hfi functions
> venus: helpers: Add helper to mark fatal vb2 error
> venus: Handle fatal errors during encoding and decoding
>
> drivers/media/platform/qcom/venus/core.c | 13 ++-
> drivers/media/platform/qcom/venus/core.h | 6 +-
> drivers/media/platform/qcom/venus/helpers.c | 16 ++-
> drivers/media/platform/qcom/venus/helpers.h | 1 +
> drivers/media/platform/qcom/venus/hfi.c | 48 +++++++-
> drivers/media/platform/qcom/venus/vdec.c | 18 ++-
> drivers/media/platform/qcom/venus/venc.c | 116 ++++++++++++++++++--
> 7 files changed, 201 insertions(+), 17 deletions(-)

Tested-by: Vikash Garodia <[email protected]>