Skip to content

drm/msm/dpu: fix pipe ordering for source-split planes - #1997

Open
quicmahap wants to merge 10 commits into
qualcomm-linux:tech/mm/drmfrom
quicmahap:drm-lm-fixes-v4
Open

quicmahap wants to merge 10 commits into
qualcomm-linux:tech/mm/drmfrom
quicmahap:drm-lm-fixes-v4

Conversation

@quicmahap

@quicmahap quicmahap commented Oct 8, 2026 •

Copy link
Copy Markdown

CRs-Fixed: 4703533

This PR carries the existing 6-commit layer-mixer (LM) allocation and mode-limit series, followed by the 4-commit pipe-ordering fix.

LM series:

  • drm/msm/dpu: split modes a single layer mixer cannot clock
  • drm/msm/dpu: do not assume a merged datapath when validating mode clock
  • drm/msm/dpu: check mode against PINGPONG or DSC max width
  • drm/msm/dpu: filter writeback modes using writeback maxlinewidth
  • drm/msm/dpu: remove max_mixer_width from catalog
  • drm/msm/dpu: limit the mode width to a pipe if the LM has no source split

LM series: https://lore.kernel.org/all/20261008-lm_fixes_final-v4-0-fa986071c3c1@oss.qualcomm.com/

Pipe-ordering series:

  • Keep SSPP priority order for split planes on DPU < 5.0
  • Add SSPP operation to program source split order
  • Program source split order for split planes
  • Add source split order operation for DPU 13.x

Pipe-ordering series: https://lore.kernel.org/all/20261010-pipe_order-v1-0-9d8bd29fd78a@oss.qualcomm.com/

Mahadevan P and others added 6 commits October 8, 2026 23:40
The layer mixer count is picked purely from the mode width, via the
MAX_HDISPLAY_SPLIT threshold. Width is only half of what constrains a
mixer: it also processes one pixel per core clock cycle, so a mode narrow
enough to stay under the width threshold can still demand a higher pixel
rate than one mixer sustains. A 1080 wide panel at a few hundred Hz is
enough to get there.

Such a mode is currently given a single mixer and then has to be clocked
past the maximum core clock rate, which that mixer cannot do.

Factor the decision out into dpu_crtc_num_lm_for_mode() and have it ask
for a second mixer when the adjusted mode clock does not fit the maximum
core clock rate, in addition to the existing width test. Modes that
already fit within one mixer are unaffected, so the only decisions that
change are the ones that could not be driven as they were.

Assisted-by: LLM
Link: https://lore.kernel.org/all/20261008-lm_fixes_final-v4-1-fa986071c3c1@oss.qualcomm.com/
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
…g mode clock

dpu_crtc_mode_valid() halves the adjusted mode clock whenever the
hardware has a 3d_mux block, assuming the mode will be driven by two
layer mixers. Modes no wider than MAX_HDISPLAY_SPLIT are driven by a
single mixer, so for those the check permits twice the pixel rate the
datapath can sustain.

Divide by the mixer count the mode will really be driven by, as reported
by dpu_crtc_num_lm_for_mode(). Split modes still get the halved rate,
single mixer modes are held to what one mixer sustains, and parts
without a 3d_mux divide by one.

Assisted-by: LLM
Link: https://lore.kernel.org/all/20261008-lm_fixes_final-v4-2-fa986071c3c1@oss.qualcomm.com/
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
LM block doesn't have a hardware buffer (unlike PINGPONG and DSC
encoders). As such, don't use ephemeral max_mixer_width and
MAX_HDISPLAY_SPLIT to validate requested modes. Instead use PP and DSC
buffer widths.

While on the DPU 8.x+ supports a max linewidth of 8960 for PINGPONG_0,
there is some additional logic that needs to be added to the resource
manager to specifically try and reserve PINGPONG_0 for modes that are
greater than 5k.

The layer-mixer count for a merge-capable, non-DSC mode is chosen by
dpu_crtc_num_lm_for_mode(); feed the PINGPONG/DSC derived width to it as
the split threshold in place of the removed MAX_HDISPLAY_SPLIT, so the
pixel-rate floor added earlier keeps high-refresh modes that now fit
within a single PINGPONG buffer split across two mixers.

[MP: rebased on msm-next; fed PINGPONG/DSC width into
 dpu_crtc_num_lm_for_mode() instead of open-coding the width test]

Link: https://lore.kernel.org/all/20261008-lm_fixes_final-v4-3-fa986071c3c1@oss.qualcomm.com/
Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Tested-by: Xilin Wu <sophon@radxa.com>
[DB: reworked to drop catalog changes, updated commit message]
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
…width

Maximum width of the writeback mode is limited by the hardware buffer in
the WB block rather than by the LM properties (LM doesn't have an actual
buffer). Use the actual hardware limit (the writeback maxlinewidth) to
filter modes.

Link: https://lore.kernel.org/all/20261008-lm_fixes_final-v4-4-fa986071c3c1@oss.qualcomm.com/
Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
[DB: fixed commit message]
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Remove the now-unused max_mixer_width field from the HW catalog. It
doesn't represent an actual hardware constraint.

[MP: rebased on msm-next; also drop the field from the milos,
 eliza and kaanapali catalogs added since v3]

Link: https://lore.kernel.org/all/20261008-lm_fixes_final-v4-5-fa986071c3c1@oss.qualcomm.com/
Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
…o source split

Layer mixers without DPU_MIXER_SOURCESPLIT stage one pipe per blend level,
so a plane is fetched by a single pipe of at most max_linewidth pixels.

max_mixer_width used to reject wider modes. Now that the mode is checked
against the PINGPONG width (4096/5120), keep max_linewidth as an extra
bound when source split isn't available.

Assisted-by: LLM
Link: https://lore.kernel.org/all/20261008-lm_fixes_final-v4-6-fa986071c3c1@oss.qualcomm.com/
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
@qswat-orbit-external

Copy link
Copy Markdown

Dev Completion validation failed

CR: 4703533
Change Task: kernel.qli.0.0
Error: GenAI Assisted field must be set before moving change tasks to Development Complete. Please provide GenAI information.

The change task for this CR could not be moved to Dev Complete because of the error above. Please resolve the issue in Orbit and re-run the failed Orbit check.

@qswat-orbit-external

Copy link
Copy Markdown

Dev Completion validation failed

CR: 4703533
Change Task: kernel.qli.0.0
Error: GenAI Assisted field must be set before moving change tasks to Development Complete. Please provide GenAI information.

The change task for this CR could not be moved to Dev Complete because of the error above. Please resolve the issue in Orbit and re-run the failed Orbit check.

@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #1997

PR: #1997
Build run: https://github.com/qualcomm-linux/kernel-config/actions/runs/37823837822

# Error File:Line PR-introduced? Root Cause
1 Merge conflict during automerge Documentation/devicetree/bindings/display/msm/dp-controller.yaml No Pre-existing conflict between baseline and topic branch topic/tech/mm/drm
2 Merge conflict during automerge drivers/gpu/drm/msm/dp/dp_display.c No Pre-existing conflict between baseline and topic branch topic/tech/mm/drm

Verdict

No compilation errors occurred. The build failed during the automerge phase with 2 merge conflicts in files not touched by this PR. Both conflicts are pre-existing issues between the baseline branch and the topic/tech/mm/drm topic branch.

📎 Detailed analysis: Full report

@qlijarvis

Copy link
Copy Markdown

🔨 Build Failure Analysis — PR #1997

PR: #1997
Build run: https://github.com/qualcomm-linux/kernel-config/actions/runs/37823837822

# Error File:Line PR-introduced? Root Cause
1 Merge conflict during automerge Documentation/devicetree/bindings/display/msm/dp-controller.yaml No Pre-existing conflict between baseline and topic branch; PR does not modify this file
2 Merge conflict during automerge drivers/gpu/drm/msm/dp/dp_display.c No Pre-existing conflict between baseline and topic branch; PR does not modify this file

Verdict

No compilation errors occurred. The build failed during the automerge/integration step before compilation began. Both merge conflicts are pre-existing issues unrelated to this PR's changes. The PR modifies only DPU (Display Processing Unit) files, while the conflicts are in DP (DisplayPort) controller files.

📎 Detailed analysis: Full report

@qlijarvis

Copy link
Copy Markdown

PR #1997 — validate-patch

PR: #1997

Verdict Issues Detailed Report
⚠️ 0 Full report

Final Summary

  1. Lore link present: Yes — all 6 commits have correct Link: tags pointing to lore.kernel.org v4 series
  2. Lore link matches PR commits: Yes — diff content is identical; commit messages faithful; authorship reversal on 3 commits is technically compliant with FROMLIST rules but unusual
  3. Upstream patch status: ✅ ACKed — all 6 patches have Reviewed-by from subsystem maintainer Dmitry Baryshkov; no merge confirmation yet (recent submission 2026-10-08)
  4. PR present in qcom-next/topics: Fail - 3/6 commit(s) are missing from both qcom-next and topics
Verdict: ⚠️ — click to expand

🔍 Patch Validation Report

PR: #1997 - drm/msm/dpu: rework layer mixer allocation and mode limits (6 commits)
Upstream: https://lore.kernel.org/all/20261008-lm_fixes_final-v4-0-fa986071c3c1@oss.qualcomm.com/ (v4 patch series)
Verdict: ⚠️ PARTIAL — Authorship reversal on 3 commits; missing from qcom-next/topics


Commit Message Analysis

Check Patch 1/6 Patch 2/6 Patch 3/6 Patch 4/6 Patch 5/6 Patch 6/6
Subject matches upstream ✅ Identical (FROMLIST: prefix added) ✅ Identical ✅ Identical ✅ Identical ✅ Identical ✅ Identical
Body preserves rationale ✅ Faithful ✅ Faithful ✅ Faithful ✅ Faithful ✅ Faithful ✅ Faithful
Fixes tag present/correct N/A — no Fixes tag in upstream N/A N/A N/A N/A N/A
Authorship preserved ✅ Matches lore ✅ Matches lore ⚠️ Reversed ⚠️ Reversed ⚠️ Reversed ✅ Matches lore
Link: tag present ✅ Correct lore URL ✅ Correct lore URL ✅ Correct lore URL ✅ Correct lore URL ✅ Correct lore URL ✅ Correct lore URL
Assisted-by: LLM present ✅ Present ✅ Present ✅ Present ✅ Present ✅ Present ✅ Present

Diff Comparison

All 6 patches modify drivers/gpu/drm/msm/disp/dpu1/ files. Hunk line numbers and changed files match lore patches exactly.

Patch Files Changed Status Notes
1/6 dpu_crtc.c ✅ Identical New function dpu_crtc_num_lm_for_mode() added; topology logic updated
2/6 dpu_crtc.c ✅ Identical Mode validation clock calculation updated to use dpu_crtc_num_lm_for_mode()
3/6 dpu_crtc.c, dpu_hw_catalog.h ✅ Identical PINGPONG/DSC max width checks added; new catalog fields
4/6 dpu_crtc.c ✅ Identical Writeback mode filtering using PINGPONG width
5/6 25 catalog files, dpu_hw_catalog.h ✅ Identical Removes max_mixer_width from all platform catalogs
6/6 dpu_crtc.c ✅ Identical Adds max_linewidth check when source split unavailable

Upstream Patch Status

All 6 patches in the v4 series have:

Commit Community Verdict
1/6 — split modes a single layer mixer cannot clock ✅ ACKed — Reviewed-by Dmitry Baryshkov (subsystem maintainer) on 2026-10-08
2/6 — do not assume a merged datapath ✅ ACKed — Reviewed-by Dmitry Baryshkov on 2026-10-08
3/6 — check mode against PINGPONG or DSC max ✅ ACKed — Reviewed-by Dmitry Baryshkov on 2026-10-08
4/6 — filter writeback modes using writeback ✅ ACKed — Reviewed-by Dmitry Baryshkov on 2026-10-08
5/6 — remove max_mixer_width from catalog ✅ ACKed — Reviewed-by Dmitry Baryshkov on 2026-10-08
6/6 — limit the mode width to a pipe if LM has no source split ✅ ACKed — Reviewed-by Dmitry Baryshkov on 2026-10-08

Status: All patches have formal maintainer review and are ready for merge into the DRM/MSM tree. No NAK or rejection signals found. Series posted 2026-10-08; no merge confirmation yet (recent submission).


qcom-next/topics Presence

Per integration_presence_report.md:

Commit qcom-next topics Final Status
1/6 partial missing ⚠️ partial
2/6 missing missing ❌ missing
3/6 partial missing ⚠️ partial
4/6 missing missing ❌ missing
5/6 missing missing ❌ missing
6/6 partial missing ⚠️ partial

Overall: ❌ FAIL — 3/6 commits completely missing; 3/6 partial matches (subject or partial tree evidence, but full change not verified)


Issues Found

1. Authorship Reversal (Patches 3, 4, 5) — ⚠️ WARNING

Lore upstream:

  • From: Mahadevan P <mahadevan.p@oss.qualcomm.com>
  • Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com> (co-author)
  • Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> (reviewer)
  • Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com> (author)

PR commits:

  • From: Jessica Zhang <jesszhan0024@gmail.com> ← reversed
  • Signed-off-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
  • Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
  • Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com> ← original author present ✅

Analysis:
According to the validate-patch skill, for FROMLIST: commits, the submitter (in From:) may legitimately differ from the lore author, as long as the original lore author's Signed-off-by: is present. This condition is satisfied — Mahadevan P's Signed-off-by: is present in all three PR commits.

However, this is an unusual pattern: the lore series has Mahadevan P as the primary author with Jessica Zhang as co-author, but the PR reverses this relationship. This suggests the commits were cherry-picked and the --reset-author flag was used, or authorship was manually changed.

Recommendation:
While technically compliant with FROMLIST rules, this authorship reversal is confusing and deviates from the upstream submission. For clarity and to preserve the original contribution record:

  • Either keep From: Mahadevan P to match lore exactly, OR
  • Add Co-developed-by: Mahadevan P <mahadevan.p@oss.qualcomm.com> before his Signed-off-by: to explicitly document the co-authorship relationship.

2. Missing from qcom-next and topics — ❌ FAIL

3 commits (2/6, 4/6, 5/6) are completely missing from both qcom-next and the kernel topic branches. 3 commits (1/6, 3/6, 6/6) show only partial evidence (subject or partial tree match, but full change not verified).

Root cause: This is a recent upstream submission (2026-10-08). The patches have maintainer review but have not yet been merged into any integration branch.

Impact: The PR is adding patches that are not yet present in the Qualcomm kernel integration tree. This is expected for FROMLIST: commits (posted to the list but not yet merged), but it means the PR is ahead of the integration baseline.


Verdict

⚠️ PARTIAL — Merge with caution; address authorship clarity

Rationale:

  1. ✅ Diff content is faithful — All 6 patches match lore v4 exactly; no semantic changes or missing hunks
  2. ✅ Commit messages preserve rationale — Body text, Assisted-by, and Link tags are correct
  3. ✅ Upstream status is positive — All patches have Reviewed-by from subsystem maintainer Dmitry Baryshkov
  4. ⚠️ Authorship reversal on 3 commits — Technically compliant with FROMLIST rules (original author's Signed-off-by present), but unusual and potentially confusing
  5. ❌ Not present in qcom-next/topics — Expected for recent FROMLIST submissions, but means PR is ahead of integration baseline

Recommended actions before merge:

  1. Clarify authorship intent — If Jessica Zhang is the primary contributor to patches 3/4/5, add Co-developed-by: Mahadevan P tags. If Mahadevan P is the primary author, restore From: Mahadevan P to match lore.
  2. Verify integration strategy — Confirm that merging FROMLIST patches ahead of qcom-next integration is intentional and aligns with the topic branch workflow.
  3. Monitor upstream merge — Track when these patches land in the DRM/MSM maintainer tree (likely drm-msm-next or drm-misc-next) and update commit prefixes to UPSTREAM: or BACKPORT: accordingly.

Final Summary

  1. Lore link present: Yes — all 6 commits have correct Link: tags pointing to lore.kernel.org v4 series
  2. Lore link matches PR commits: Yes — diff content is identical; commit messages faithful; authorship reversal on 3 commits is technically compliant with FROMLIST rules but unusual
  3. Upstream patch status: ✅ ACKed — all 6 patches have Reviewed-by from subsystem maintainer Dmitry Baryshkov; no merge confirmation yet (recent submission 2026-10-08)
  4. PR present in qcom-next/topics: ❌ Fail — 3/6 commits missing, 3/6 partial matches; expected for recent FROMLIST submissions but means PR is ahead of integration baseline

Deterministic Integration Presence

Integration Presence Report

This report is generated by Jarvis before validate-patch runs.
It is the authoritative source for whether PR changes are already present
in qcom-next or in the kernel topic branches.

Kernel repo: /local/mnt/workspace/sgaud/Qgenie/image_pipeline/kernel
qcom-next ref: ba86f67908354f41f269ca1d64b22e4624766dcf
topics remote: topics -> https://github.com/qualcomm-linux/kernel-topics
topics fetch: fetched

Commit Subject qcom-next topics Final
1/6 [PATCH 1/6] FROMLIST: drm/msm/dpu: split modes a single layer mixer partial - subject or partial tree evidence found, but full change was not verified missing - no subject, patch-id, or full tree-content match found partial
2/6 [PATCH 2/6] FROMLIST: drm/msm/dpu: do not assume a merged datapath missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing
3/6 [PATCH 3/6] FROMLIST: drm/msm/dpu: check mode against PINGPONG or DSC partial - subject or partial tree evidence found, but full change was not verified missing - no subject, patch-id, or full tree-content match found partial
4/6 [PATCH 4/6] FROMLIST: drm/msm/dpu: filter writeback modes using missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing
5/6 [PATCH 5/6] FROMLIST: drm/msm/dpu: remove max_mixer_width from missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing
6/6 [PATCH 6/6] FROMLIST: drm/msm/dpu: limit the mode width to a pipe if partial - subject or partial tree evidence found, but full change was not verified missing - no subject, patch-id, or full tree-content match found partial

Final Status

overall_status: FAIL
present_commits: 0/6
partial_commits: 3/6
missing_commits: 3/6
topics_checked_for_commits: 6/6
final_summary: PR present in qcom-next/topics: Fail - 3/6 commit(s) are missing from both qcom-next and topics

@qlijarvis

Copy link
Copy Markdown

PR #1997 — checker-log-analyzer

PR: #1997
Checker run: https://github.com/qualcomm-linux/kernel-config/actions/runs/37823838627

Checker Result Summary
Checker Result Summary
checkpatch ⏭️ Skipped - merge conflict prevented execution
dt-binding-check ⏭️ Skipped - merge conflict prevented execution
dtb-check ⏭️ Skipped - merge conflict prevented execution
sparse-check ⏭️ Skipped - merge conflict prevented execution
check-uapi-headers ⏭️ Skipped - merge conflict prevented execution
check-patch-compliance ⏭️ Skipped - merge conflict prevented execution
tag-check ✅ All 6 commits have valid FROMLIST: prefix
qcom-next-check N/A Target branch is tech/mm/drm (not qcom-next)

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1997 - drm/msm/dpu: layer mixer mode splitting fixes
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/37823838627
Target branch: tech/mm/drm

Checker Result Summary
checkpatch ⏭️ Skipped - merge conflict prevented execution
dt-binding-check ⏭️ Skipped - merge conflict prevented execution
dtb-check ⏭️ Skipped - merge conflict prevented execution
sparse-check ⏭️ Skipped - merge conflict prevented execution
check-uapi-headers ⏭️ Skipped - merge conflict prevented execution
check-patch-compliance ⏭️ Skipped - merge conflict prevented execution
tag-check ✅ All 6 commits have valid FROMLIST: prefix
qcom-next-check N/A Target branch is tech/mm/drm (not qcom-next)

❌ Merge Conflict (CI Infrastructure)

Root cause: The PR cannot be merged into the integration branch due to conflicts in 2 files.

Failure details:

Auto-merging Documentation/devicetree/bindings/display/msm/dp-controller.yaml
CONFLICT (content): Merge conflict in Documentation/devicetree/bindings/display/msm/dp-controller.yaml
Auto-merging drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
Auto-merging drivers/gpu/drm/msm/dp/dp_display.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/msm/dp/dp_display.c
Automatic merge failed; fix conflicts and then commit the result.

Conflicting files:

  1. Documentation/devicetree/bindings/display/msm/dp-controller.yaml
  2. drivers/gpu/drm/msm/dp/dp_display.c

Analysis:
The kernel-checkers CI workflow attempts to merge the PR branch (tech/mm/drm) into an integration branch based on qcom-next. The merge failed because changes in this PR conflict with other changes already present in the baseline.

This is not a patch quality issue — the patches themselves may be perfectly valid. The conflict indicates that:

  • Another PR or commit has modified the same files in overlapping regions
  • The baseline branch has diverged from the state when this PR was created
  • Manual conflict resolution is required before the checkers can run

Fix:

Option 1: Rebase the PR branch onto the latest baseline

# In the kernel-topics repository
git fetch origin tech/mm/drm
git checkout <pr-branch>
git rebase origin/tech/mm/drm

# Resolve conflicts in:
# - Documentation/devicetree/bindings/display/msm/dp-controller.yaml
# - drivers/gpu/drm/msm/dp/dp_display.c

git add <resolved-files>
git rebase --continue
git push --force-with-lease

Option 2: Merge the latest baseline into the PR branch

git fetch origin tech/mm/drm
git checkout <pr-branch>
git merge origin/tech/mm/drm

# Resolve conflicts in the same 2 files
git add <resolved-files>
git commit
git push

Reproduce locally:

git clone https://github.com/qualcomm-linux/kernel-topics.git
cd kernel-topics
git fetch origin pull/1997/head:pr-1997
git fetch origin tech/mm/drm
git checkout -b test-merge origin/tech/mm/drm
git merge pr-1997
# Conflicts will appear in the 2 files listed above

✅ tag-check

Status: PASS

All 6 commits in the PR have valid subject prefixes:

  1. FROMLIST: drm/msm/dpu: split modes a single layer mixer cannot clock
  2. FROMLIST: drm/msm/dpu: do not assume a merged datapath
  3. FROMLIST: drm/msm/dpu: check mode against PINGPONG or DSC
  4. FROMLIST: drm/msm/dpu: filter writeback modes using
  5. FROMLIST: drm/msm/dpu: remove max_mixer_width from
  6. FROMLIST: drm/msm/dpu: limit the mode width to a pipe if

All commits also include proper Link: tags pointing to lore.kernel.org.

Note: The target branch tech/mm/drm is not qcom-next or qcom-next-staging, so subject prefix tags are mandatory. This PR complies with the requirement.


Verdict

Cannot assess patch quality — merge conflict blocks all checkers.

The PR must be rebased or merged with the latest tech/mm/drm baseline to resolve conflicts in:

  • Documentation/devicetree/bindings/display/msm/dp-controller.yaml
  • drivers/gpu/drm/msm/dp/dp_display.c

Once conflicts are resolved and the PR is updated, re-trigger the CI to run all checkers (checkpatch, dt-binding-check, dtb-check, sparse-check, check-uapi-headers, check-patch-compliance).

Action required: Rebase or merge with baseline, resolve 2 conflicts, force-push, and re-run CI.

Mahadevan P added 4 commits October 10, 2026 19:22
Before DPU 5.0, the layer mixer places the higher priority SSPP on
the left of a source-split pair. Priority follows the SSPP index
(VIG, RGB, DMA), while allocation prefers DMA, RGB, then VIG.

Swap the two SSPPs when the right one has the lower index. Both are
reserved with the same requirements. Same-SSPP parallel multirect
already puts RECT_0, the higher priority rectangle, on the left.

Fixes: 8c62a31 ("drm/msm/dpu: allow using two SSPP blocks for a single plane")
Assisted-by: LLM
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
DPU 5.0 introduced SRC_SPLIT_ORDER in bit 4 of SSPP_SRC_OP_MODE and
SSPP_SRC_OP_MODE_REC1. For source-split pairs using legacy CTL routing,
this field identifies the left source with 0 and the right source with 1.

Add a setup_src_split_order() operation for the SSPP register layout
used on DPU 5.0 through 12.x. Select SSPP_SRC_OP_MODE for SOLO or RECT0
and SSPP_SRC_OP_MODE_REC1 for RECT1, and update only the ordering bit.

Assisted-by: LLM
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Virtual planes can use two SSPPs when a plane exceeds the single-pipe
width or clock limit and parallel multirect cannot be used.

Program SRC_SPLIT_ORDER during mixer setup from the pipes' destination
X positions. Set the bit for the right source and clear it for the
left source or a source without a sibling.

Fixes: 8c62a31 ("drm/msm/dpu: allow using two SSPP blocks for a single plane")
Assisted-by: LLM
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
DPU 13.x places the SSPP op-mode register in separate REC0 and REC1
banks. Add the source split order operation for this layout, using
the shared helper to update SRC_SPLIT_ORDER in the selected bank.

Assisted-by: LLM
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
@qcomlnxci
qcomlnxci requested a review from a team October 10, 2026 13:55
@quicmahap quicmahap changed the title drm/msm/dpu: rework layer mixer allocation and mode limits drm/msm/dpu: fix pipe ordering for source-split planes Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants