* [PATCH v2 0/3] media: iris: Fix issues exposed during decoder seek
@ 2026-11-10 9:57 Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 1/3] media: iris: Skip redundant decoder input config params Vishnu Reddy
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Vishnu Reddy @ 2026-11-10 9:57 UTC (permalink / raw)
To: Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Mauro Carvalho Chehab, Vedang Nagar,
Hans Verkuil, Stefan Schmidt, Hans Verkuil,
Deepa Guthyappa Madivalara
Cc: linux-media, linux-arm-msm, linux-kernel, Bryan O'Donoghue,
Vishnu Reddy, stable
Several issues were identified while investigating decoder seek
failures.
A seek could trigger redundant port settings change events, incorrect
buffer requirements for VP9 streams, and codec configuration being
overwritten. Together these issues resulted in spurious resolution
change notifications, firmware buffer count errors, and seek failures.
This series fixes the issues observed during decoder seek operations.
Signed-off-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
---
Changes in v2:
- Dropped the TIER_AV1 cap instead of removing the set callbacks.
- Link to v1: https://patch.msgid.link/20261031-fix_dec_seek-v1-0-cfedf0c267ee@oss.qualcomm.com
---
Vishnu Reddy (3):
media: iris: Skip redundant decoder input config params
media: iris: Skip redundant HFI_PROP_TIER updates
media: iris: Use firmware reported count for output buffers
drivers/media/platform/qcom/iris/iris_hfi_gen2.c | 10 ----------
drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 8 ++++++--
drivers/media/platform/qcom/iris/iris_platform_common.h | 1 -
drivers/media/platform/qcom/iris/iris_vpu_buffer.c | 10 ++--------
4 files changed, 8 insertions(+), 21 deletions(-)
---
base-commit: 630059a5a632377b9b7b487baccde92b7ae1dd47
change-id: 20261031-fix_dec_seek-2fa92563b495
Best regards,
--
Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/3] media: iris: Skip redundant decoder input config params
2026-11-10 9:57 [PATCH v2 0/3] media: iris: Fix issues exposed during decoder seek Vishnu Reddy
@ 2026-11-10 9:57 ` Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 2/3] media: iris: Skip redundant HFI_PROP_TIER updates Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 3/3] media: iris: Use firmware reported count for output buffers Vishnu Reddy
2 siblings, 0 replies; 4+ messages in thread
From: Vishnu Reddy @ 2026-11-10 9:57 UTC (permalink / raw)
To: Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Mauro Carvalho Chehab, Vedang Nagar,
Hans Verkuil, Stefan Schmidt, Hans Verkuil,
Deepa Guthyappa Madivalara
Cc: linux-media, linux-arm-msm, linux-kernel, Bryan O'Donoghue,
Vishnu Reddy, stable
The decoder input configuration parameters are sent to the firmware every
time the output plane is streamed on. This includes streamon after a seek.
Resending these parameters generates a port settings change (PSC) event
even when the input configuration has not changed. The client then
receives a redundant resolution change notification on every seek. A seek
hang was observed when redundant PSC events were generated for the same
configuration.
Skip sending decoder input configuration parameters once the input port
properties have been programmed. Reuse the existing ipsc_properties_set
state which tracks whether the input port subscription and properties have
been configured. This prevents redundant PSC events during seek operations
and avoids unnecessary resolution change notifications to the client.
Fixes: 025398e9121c ("media: iris: subscribe parameters and properties to firmware for hfi_gen2")
Cc: stable@vger.kernel.org
Signed-off-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
---
drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
index 388a36ff2b07b..fac61ece177e9 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
@@ -668,6 +668,7 @@ static int iris_hfi_gen2_set_super_block(struct iris_inst *inst, u32 plane)
static int iris_hfi_gen2_session_set_config_params(struct iris_inst *inst, u32 plane)
{
const struct iris_firmware_data *fdata = inst->core->iris_firmware_data;
+ struct iris_inst_hfi_gen2 *inst_hfi_gen2 = to_iris_inst_hfi_gen2(inst);
u32 config_params_size = 0, i, j;
const u32 *config_params = NULL;
int ret;
@@ -693,6 +694,10 @@ static int iris_hfi_gen2_session_set_config_params(struct iris_inst *inst, u32 p
{HFI_PROP_AV1_SUPER_BLOCK_ENABLED, iris_hfi_gen2_set_super_block },
};
+ if (inst->domain == DECODER && V4L2_TYPE_IS_OUTPUT(plane) &&
+ inst_hfi_gen2->ipsc_properties_set)
+ return 0;
+
if (inst->domain == DECODER) {
if (V4L2_TYPE_IS_OUTPUT(plane)) {
if (inst->codec == V4L2_PIX_FMT_H264) {
--
2.34.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 2/3] media: iris: Skip redundant HFI_PROP_TIER updates
2026-11-10 9:57 [PATCH v2 0/3] media: iris: Fix issues exposed during decoder seek Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 1/3] media: iris: Skip redundant decoder input config params Vishnu Reddy
@ 2026-11-10 9:57 ` Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 3/3] media: iris: Use firmware reported count for output buffers Vishnu Reddy
2 siblings, 0 replies; 4+ messages in thread
From: Vishnu Reddy @ 2026-11-10 9:57 UTC (permalink / raw)
To: Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Mauro Carvalho Chehab, Vedang Nagar,
Hans Verkuil, Stefan Schmidt, Hans Verkuil,
Deepa Guthyappa Madivalara
Cc: linux-media, linux-arm-msm, linux-kernel, Bryan O'Donoghue,
Vishnu Reddy, stable
HFI_PROP_TIER is applicable to HEVC decoding. TIER and TIER_AV1 both map
to HFI_PROP_TIER and both define a .set callback, so iris_set_properties()
programs the property twice. TIER is programmed first and TIER_AV1, with
its default of 0, is programmed last. For HEVC, TIER_AV1 value overwrites
the tier selected through V4L2_CID_MPEG_VIDEO_HEVC_TIER.
AV1 does not require the tier property. Drop the TIER_AV1 cap and its
enum, and make iris_hfi_gen2_set_tier() read the value from TIER cap.
Fixes: 2af481a459a4 ("media: iris: Define AV1-specific platform capabilities and properties")
Cc: stable@vger.kernel.org
Signed-off-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
---
drivers/media/platform/qcom/iris/iris_hfi_gen2.c | 10 ----------
drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 3 +--
drivers/media/platform/qcom/iris/iris_platform_common.h | 1 -
3 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2.c
index 79bbd06ef8d2..706698201c17 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.c
@@ -999,16 +999,6 @@ static const struct platform_inst_fw_cap inst_fw_cap_sm8550_dec[] = {
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
.set = iris_set_u32_enum,
},
- {
- .cap_id = TIER_AV1,
- .min = 0,
- .max = 1,
- .step_or_mask = 1,
- .value = 0,
- .hfi_id = HFI_PROP_TIER,
- .flags = CAP_FLAG_INPUT_PORT,
- .set = iris_set_u32,
- },
{
.cap_id = DRAP,
.min = 0,
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
index fac61ece177e..9464543836c0 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
@@ -603,8 +603,7 @@ static int iris_hfi_gen2_set_tier(struct iris_inst *inst, u32 plane)
{
u32 port = iris_hfi_gen2_get_port(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE);
struct iris_inst_hfi_gen2 *inst_hfi_gen2 = to_iris_inst_hfi_gen2(inst);
- u32 tier_cap = (inst->codec == V4L2_PIX_FMT_AV1) ? TIER_AV1 : TIER;
- u32 tier = inst->fw_caps[tier_cap].value;
+ u32 tier = inst->fw_caps[TIER].value;
inst_hfi_gen2->src_subcr_params.tier = tier;
diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/drivers/media/platform/qcom/iris/iris_platform_common.h
index cddab9a9c375..973a6f91a49b 100644
--- a/drivers/media/platform/qcom/iris/iris_platform_common.h
+++ b/drivers/media/platform/qcom/iris/iris_platform_common.h
@@ -135,7 +135,6 @@ enum platform_inst_fw_cap_type {
LEVEL_VP9,
PROFILE_AV1,
LEVEL_AV1,
- TIER_AV1,
DRAP,
FILM_GRAIN,
SUPER_BLOCK,
--
2.34.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 3/3] media: iris: Use firmware reported count for output buffers
2026-11-10 9:57 [PATCH v2 0/3] media: iris: Fix issues exposed during decoder seek Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 1/3] media: iris: Skip redundant decoder input config params Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 2/3] media: iris: Skip redundant HFI_PROP_TIER updates Vishnu Reddy
@ 2026-11-10 9:57 ` Vishnu Reddy
2 siblings, 0 replies; 4+ messages in thread
From: Vishnu Reddy @ 2026-11-10 9:57 UTC (permalink / raw)
To: Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Mauro Carvalho Chehab, Vedang Nagar,
Hans Verkuil, Stefan Schmidt, Hans Verkuil,
Deepa Guthyappa Madivalara
Cc: linux-media, linux-arm-msm, linux-kernel, Bryan O'Donoghue,
Vishnu Reddy, stable
Once the firmware reports its minimum output buffer count, the driver
still caps it to 4 for VP9 and AV1 when split mode is enabled. After a
seek, the output buffer count can be lower than the minimum required by
the firmware for VP9 streams. This causes the firmware to report
insufficient output buffers and the seek operation can fail.
Use the firmware reported minimum count as is. The driver calculated
count is only used until the firmware reports its own requirement.
Fixes: e1f5d32608ec ("media: iris: Add internal buffer calculation for HEVC and VP9 decoders")
Cc: stable@vger.kernel.org
Signed-off-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
---
drivers/media/platform/qcom/iris/iris_vpu_buffer.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c
index a8170e5fa9e6..57467c952f42 100644
--- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c
+++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c
@@ -2375,14 +2375,8 @@ static int output_min_count(struct iris_inst *inst)
int output_min_count = 4;
/* fw_min_count > 0 indicates reconfig event has already arrived */
- if (inst->fw_min_count) {
- if (iris_split_mode_enabled(inst) &&
- (inst->codec == V4L2_PIX_FMT_VP9 ||
- inst->codec == V4L2_PIX_FMT_AV1))
- return min_t(u32, 4, inst->fw_min_count);
- else
- return inst->fw_min_count;
- }
+ if (inst->fw_min_count)
+ return inst->fw_min_count;
if (inst->codec == V4L2_PIX_FMT_VP9)
output_min_count = 9;
--
2.34.1
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-11-10 9:58 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-10 9:57 [PATCH v2 0/3] media: iris: Fix issues exposed during decoder seek Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 1/3] media: iris: Skip redundant decoder input config params Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 2/3] media: iris: Skip redundant HFI_PROP_TIER updates Vishnu Reddy
2026-11-10 9:57 ` [PATCH v2 3/3] media: iris: Use firmware reported count for output buffers Vishnu Reddy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®