Re: [PATCHv2] media: venc: destroy hfi session after m2m_ctx release

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 19/12/2024 05:37, Sergey Senozhatsky wrote:
This partially reverts commit that made hfi_session_destroy()
the first step of vdec/venc close().  The reason being is a
regression report when, supposedly, encode/decoder is closed
with still active streaming (no ->stop_streaming() call before
close()) and pending pkts, so isr_thread cannot find instance
and fails to process those pending pkts.  This was the idea
behind the original patch - make it impossible to use instance
under destruction, because this is racy, but apparently there
are uses cases that depend on that unsafe pattern.  Return to
the old (unsafe) behaviour for the time being (until a better
fix is found).

Fixes: 45b1a1b348ec ("media: venus: sync with threaded IRQ during inst destruction")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx>
---
  drivers/media/platform/qcom/venus/core.c | 8 ++------
  1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index 2d27c5167246..807487a1f536 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -506,18 +506,14 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev)
  void venus_close_common(struct venus_inst *inst)
  {
  	/*
-	 * First, remove the inst from the ->instances list, so that
-	 * to_instance() will return NULL.
-	 */
-	hfi_session_destroy(inst);
-	/*
-	 * Second, make sure we don't have IRQ/IRQ-thread currently running
+	 * Make sure we don't have IRQ/IRQ-thread currently running
  	 * or pending execution, which would race with the inst destruction.
  	 */
  	synchronize_irq(inst->core->irq);
v4l2_m2m_ctx_release(inst->m2m_ctx);
  	v4l2_m2m_release(inst->m2m_dev);
+	hfi_session_destroy(inst);
  	v4l2_fh_del(&inst->fh);
  	v4l2_fh_exit(&inst->fh);
  	v4l2_ctrl_handler_free(&inst->ctrl_handler);

Two questions:

1: Will this revert re-instantiate the original bug @

commit 45b1a1b348ec178a599323f1ce7d7932aea8c6d4
Author: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx>
Date:   Sat Oct 26 01:56:42 2024 +0900

    media: venus: sync with threaded IRQ during inst destruction


2: Why not balanced out the ordering of calls by moving
   hfi_session_create() in vdec_open_common() ? to match
   the ordering in venus_close_common();

---
bod




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux