media: iris: Fix DMA coherency and frame interval enumeration issues - #1640
Open
gouravk-qualcomm wants to merge 2 commits into
Open
media: iris: Fix DMA coherency and frame interval enumeration issues#1640gouravk-qualcomm wants to merge 2 commits into
gouravk-qualcomm wants to merge 2 commits into
Conversation
added 2 commits
August 5, 2026 00:47
…perty While testing with some higher resolution clips, the venus hardware triggers a fault due to wrong input data being received. Corruption was also observed in the captured output when the client dumped it to a file. On debugging, this was traced to the venus node not declaring dma-coherent. As a result, DMA buffers shared between the CPU and the venus video hardware/controller are not guaranteed to be I/O coherent: CPU writes to an input buffer can remain in CPU caches without being visible to the video hardware when it reads the same buffer, so the hardware receives input data that does not match what the CPU wrote. Likewise, on the capture path, data written by the video hardware to the output buffer may not be visible to the CPU, so the client reads stale or partial data, resulting in corruption. Add the dma-coherent property to the venus node so that DMA buffers shared between the CPU and the video hardware and controller remain coherent. Link: https://lore.kernel.org/all/20260801-iris-fixes-dma-pseq-fint-v1-1-aba0cb22f6ab@oss.qualcomm.com/ Fixes: 37613ae ("arm64: dts: qcom: sc7280: Add venus DT node") Cc: stable@vger.kernel.org Signed-off-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
… framerates iris_enum_frameintervals() advertised frame intervals using V4L2_FRMIVAL_TYPE_STEPWISE with step=1/MAXIMUM_FPS where MAXIMUM_FPS is 480. This caused client to enumerate only framerates of the form MAXIMUM_FPS/n (where n is a positive integer), restricting support to exact divisors of MAXIMUM_FPS (e.g., 480, 240, 160, 120, 96, 80, 60, 30, 24, 1). Framerates that are not exact divisors of MAXIMUM_FPS, such as 29 fps, 25 fps, were excluded from the enumerated list. There is no hardware restriction to framerates that are exact divisors of MAXIMUM_FPS. This caused GStreamer caps negotiation to fail with an "internal data stream error" when encoding content at such framerates. Fix this by using V4L2_FRMIVAL_TYPE_CONTINUOUS. With CONTINUOUS type, GStreamer creates a continuous framerate range [1, max_fps], allowing any integer framerate within the range to pass caps negotiation. The step field is set to 1/1 as required by the V4L2 specification for continuous frame intervals. Link: https://lore.kernel.org/all/20260801-iris-fixes-dma-pseq-fint-v1-4-aba0cb22f6ab@oss.qualcomm.com/ Fixes: a688243 ("media: iris: Add support for ENUM_FRAMESIZES/FRAMEINTERVALS for encoder") Cc: stable@vger.kernel.org Signed-off-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
qcomlnxci
requested review from
a team,
dikshita-agarwal and
vgarodia
and removed request for
a team
August 4, 2026 19:28
gouravk-qualcomm
force-pushed
the
multiple-fixes
branch
from
August 4, 2026 19:28
10af86a to
a985eda
Compare
🔨 Build Failure Analysis — PR #1640PR: #1640
Verdict0 of 1 errors are introduced by this PR; 1 is pre-existing. The build failure is unrelated to PR #1640 changes. 📎 Detailed analysis: Full report |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This series contains two independent fixes for the Qualcomm iris video driver:
DMA coherency fix for sc7280 venus node (
dt-bindings): The venus DT node was missingdma-coherent, so DMA buffers shared between the CPU and the venus hardware were not guaranteed I/O coherent. This caused hardware faults with high-resolution clips and data corruption in captured output. Addsdma-coherentto the binding and to the sc7280 venus node.Frame interval enumeration fix (
iris_vidc.c):iris_enum_frameintervals()usedV4L2_FRMIVAL_TYPE_STEPWISEwith a fixed step of1/480, which only allowed framerates that are exact divisors of 480 fps (480, 240, 120, 60, 30, ...). Non-divisor framerates like 29 or 25 fps were rejected, breaking GStreamer caps negotiation ("internal data stream error"). Switches toV4L2_FRMIVAL_TYPE_CONTINUOUSso any integer framerate in[1, max_fps]is accepted, as there's no hardware restriction to divisor framerates.CRs-fixed: 4515234,4446385
Depends-On: #1641