Skip to content

interconnect: qcom: Add bandwidth limiter support for QLI targets - #1289

Open
MuraliKrishnaboina-16 wants to merge 1 commit into
qualcomm-linux:qcom-6.18.yfrom
MuraliKrishnaboina-16:icc-bw-limiter
Open

MuraliKrishnaboina-16 wants to merge 1 commit into
qualcomm-linux:qcom-6.18.yfrom
MuraliKrishnaboina-16:icc-bw-limiter

Conversation

@MuraliKrishnaboina-16

Copy link
Copy Markdown

Introduce a sysfs interface to allow userspace-controlled bandwidth limiting for QLI targets.

The current PMU-based scaling using static DDR-CPU operating points is overly aggressive for certain workloads and results in power regressions. Provide a fine-grained mechanism to restrict bandwidth at the client level, enabling better control of interconnect usage.

This improves power efficiency by allowing targeted bandwidth throttling for specific clients and workloads.

List of all the interconnect clients are populated inside /sys/kernel/interconnect folder and each client's voting can be limited by setting the limit_ab, limit_ib and limit_commit sysfs options present inside the folder created for each client-path combination.

Following would be the directory structure.

  • soc:qcom,dcvs:llcc:sp_chm_apps-qns_llcc --> <client_name>_<path_name>
    - limit_ab --> AB limit in KBps
    - limit_ib --> IB limit in KBps
    - limit_commit --> limits will be applied
    once commit is set

Change-Id: I08b6655c41bddbb70661a76cfeea07290272cd07

@qlijarvis

Copy link
Copy Markdown

PR #1289 — validate-patch

PR: #1289

Verdict Issues Detailed Report
❌ 0 Full report

Final Summary

  1. Lore link present: No — no lore.kernel.org link found in commit message. For vendor-only work, add QCLINUX: prefix; for upstream-bound work, post to mailing list and add FROMLIST: prefix with lore link.

  2. Lore link matches PR commits: N/A — no lore link to compare against.

  3. Upstream patch status: N/A — no upstream posting found. This appears to be vendor-specific work (QLI-specific sysfs interface) but lacks the required QCLINUX: prefix to indicate intentional vendor-only status.

  4. PR present in qcom-next/topics: Partial - 1/1 commit(s) only have partial integration evidence

Verdict: ❌ — click to expand

🔍 Patch Validation

PR: #1289 - interconnect: qcom: Add bandwidth limiter support for QLI targets
Upstream commit: N/A
Verdict: ❌ FAIL

Commit Message

Check Status Note
Subject matches upstream N/A No upstream link provided
Body preserves rationale N/A No upstream link provided
Fixes tag present/correct N/A No Fixes tag (not a bugfix)
Authorship preserved ❌ From: is Murali Krishna but Signed-off-by: is Raviteja Laggyshetty only
Backport note (if applicable) N/A Not a backport

Diff

File Status Notes
drivers/interconnect/Kconfig ⚠️ New CONFIG_INTERCONNECT_BW_LIMIT option; no upstream reference
drivers/interconnect/core.c ⚠️ 180 lines added; sysfs interface for bandwidth limiting; no upstream reference
drivers/interconnect/internal.h ⚠️ New fields in icc_req and icc_path structs; no upstream reference

Issues

  1. Missing commit prefix — The commit lacks a required prefix (UPSTREAM:, FROMLIST:, BACKPORT:, QCLINUX:, PENDING:, or WORKAROUND:). Based on the content (QLI-specific sysfs interface, Change-Id present, no lore link), this appears to be vendor-only work and should use the QCLINUX: prefix.

  2. Authorship mismatch — The From: field shows Murali Krishna mur@qti.qualcomm.com, but the only Signed-off-by: is Raviteja Laggyshetty rlaggysh@qti.qualcomm.com. Either:

    • Murali Krishna should be in Signed-off-by: (if they are the author), or
    • The From: field should be Raviteja Laggyshetty (if they are the actual author)
  3. Change-Id present — The commit contains Change-Id: I08b6655c41bddbb70661a76cfeea07290272cd07, which is a Gerrit artifact. These should be removed before merging into the kernel tree unless the tree explicitly uses Gerrit workflow.

  4. No lore.kernel.org link — For a new feature adding 203 lines of code across core interconnect infrastructure, there is no upstream posting or discussion reference. If this is vendor-only work, it should be clearly marked with QCLINUX: prefix.

Verdict

Do not merge without correction. This commit requires:

  1. Add QCLINUX: prefix to the subject if this is vendor-only work, OR post to upstream mailing list and add FROMLIST: prefix with lore link
  2. Fix authorship: ensure From: matches the primary author and all contributors have Signed-off-by: lines
  3. Remove Change-Id: line (Gerrit artifact)

Final Summary

  1. Lore link present: No — no lore.kernel.org link found in commit message. For vendor-only work, add QCLINUX: prefix; for upstream-bound work, post to mailing list and add FROMLIST: prefix with lore link.

  2. Lore link matches PR commits: N/A — no lore link to compare against.

  3. Upstream patch status: N/A — no upstream posting found. This appears to be vendor-specific work (QLI-specific sysfs interface) but lacks the required QCLINUX: prefix to indicate intentional vendor-only status.

  4. PR present in qcom-next/topics: Partial — integration_presence_report.md shows "partial - subject or partial tree evidence found, but full change was not verified" in qcom-next, and "missing" in topics. This indicates the commit may exist in a different form or is incomplete in the integration branch.

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: cb7a416d2476d022a449e7d52475c28a6feb390d
topics remote: topics -> https://github.com/qualcomm-linux/kernel-topics
topics fetch: fetched

Commit Subject qcom-next topics Final
1/1 [PATCH] interconnect: qcom: Add bandwidth limiter support for QLI 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: PARTIAL
present_commits: 0/1
partial_commits: 1/1
missing_commits: 0/1
topics_checked_for_commits: 1/1
final_summary: PR present in qcom-next/topics: Partial - 1/1 commit(s) only have partial integration evidence

@qlijarvis

Copy link
Copy Markdown

PR #1289 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch ❌ 2 errors, 1 warning, 8 checks
dt-binding-check ⏭️ No DT binding changes
dtb-check ⏭️ No DTS changes
sparse-check ✅ Passed
check-uapi-headers ✅ Passed
check-patch-compliance ❌ Missing required prefix
tag-check ❌ Subject prefix required for qcom-6.18.y

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1289 - interconnect: qcom: Add bandwidth limiter support for QLI targets
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/38525359875

Checker Result Summary
checkpatch ❌ 2 errors, 1 warning, 8 checks
dt-binding-check ⏭️ No DT binding changes
dtb-check ⏭️ No DTS changes
sparse-check ✅ Passed
check-uapi-headers ✅ Passed
check-patch-compliance ❌ Missing required prefix
tag-check ❌ Subject prefix required for qcom-6.18.y

❌ checkpatch

Root cause: Missing Signed-off-by from patch author, Gerrit Change-Id present, and multiple alignment issues.

Failure details:

ERROR: Remove Gerrit Change-Id's before submitting upstream
#30: 
Change-Id: I08b6655c41bddbb70661a76cfeea07290272cd07

ERROR: Missing Signed-off-by: line by nominal patch author 'Murali Krishna <mur@qti.qualcomm.com>'

WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#24: 
+ soc:qcom,dcvs:llcc:sp_chm_apps-qns_llcc      --> <client_name>_<path_name>

CHECK: Alignment should match open parenthesis (8 occurrences)
#100: FILE: drivers/interconnect/core.c:457:
+static int icc_limit_apply(struct icc_path *path,
+				  u32 limit_ab, u32 limit_ib)

Fix:

  1. Remove Gerrit Change-Id:

    git rebase -i HEAD~1  # mark commit as 'edit'
    git commit --amend    # remove the "Change-Id: I08b6655c..." line
    git rebase --continue
  2. Add missing Signed-off-by:

    git commit --amend --signoff

    This will add: Signed-off-by: Murali Krishna <mur@qti.qualcomm.com>

  3. Fix alignment issues:
    All 8 alignment checks are for function parameters. Align continuation lines with the opening parenthesis:

    // Before:
    static int icc_limit_apply(struct icc_path *path,
                               u32 limit_ab, u32 limit_ib)
    
    // After:
    static int icc_limit_apply(struct icc_path *path,
                               u32 limit_ab, u32 limit_ib)

    Apply this pattern to all 8 functions flagged.

  4. Wrap long commit body line (optional):
    The line in the commit message exceeds 75 chars. Consider wrapping or shortening the directory structure example.

Reproduce locally:

./scripts/checkpatch.pl --strict --ignore FILE_PATH_CHANGES --git 8580c1c2138163e4e79c3ac86dc6ea15322c8214..5853b0909bd266226882ff22725804254bf22064

❌ check-patch-compliance

Root cause: Commit subject does not start with a required prefix (FROMLIST:, FROMGIT:, UPSTREAM:, or BACKPORT:).

Failure details:

Checking commit: interconnect: qcom: Add bandwidth limiter support for QLI targets
Commit summary does not start with a required prefix

Fix:

The commit subject must start with one of the allowed prefixes. Based on the nature of this patch:

  • If this patch has been posted to a mailing list (lore.kernel.org), use FROMLIST: and add a Link: tag
  • If this is vendor-specific code with no upstream equivalent, use QCLINUX: (note: this will still fail check-patch-compliance due to checker limitations, but is the correct semantic prefix)
  • If taken from an upstream maintainer tree, use FROMGIT:
  • If merged into mainline, use UPSTREAM:
git rebase -i HEAD~1  # mark commit as 'edit'
git commit --amend -m "FROMLIST: interconnect: qcom: Add bandwidth limiter support for QLI targets"
# Add Link: tag to commit body if posted upstream
git rebase --continue

Reproduce locally:

# The checker script validates prefix format
echo "interconnect: qcom: Add bandwidth limiter support for QLI targets" | \
  grep -qE '^(FROMLIST|FROMGIT|UPSTREAM|BACKPORT):' || echo "FAIL: Missing prefix"

❌ tag-check

Root cause: Target branch is qcom-6.18.y (not qcom-next or qcom-next-staging), which requires all commits to have a subject prefix.

Failure details:

Commit 5853b0909bd2 ("interconnect: qcom: Add bandwidth limiter support for QLI targets"): subject line does not start with a required prefix.

All branches except qcom-next and qcom-next-staging require one of:
FROMLIST: / FROMGIT: / UPSTREAM: / BACKPORT: / QCLINUX: / PENDING: / WORKAROUND:

Fix:

Same as check-patch-compliance fix above. Add the appropriate prefix based on the patch origin:

git rebase -i HEAD~1
git commit --amend -m "FROMLIST: interconnect: qcom: Add bandwidth limiter support for QLI targets"
git rebase --continue

Choose the correct prefix:

  • Posted to lore but not yet merged → FROMLIST:
  • In a maintainer tree → FROMGIT:
  • Merged into Linus's tree → UPSTREAM:
  • Backported with modifications → BACKPORT:
  • Vendor-only, no upstream → QCLINUX:
  • Work-in-progress, not posted → PENDING:
  • Temporary fix → WORKAROUND:

Verdict

3 blockers must be fixed before merge:

  1. Critical: Remove Gerrit Change-Id and add missing Signed-off-by from patch author
  2. Critical: Add required subject prefix (FROMLIST:, UPSTREAM:, QCLINUX:, etc.)
  3. Recommended: Fix 8 alignment issues to match kernel coding style

The alignment checks are style issues that should be fixed for upstream submission. The missing Signed-off-by and Change-Id are hard blockers. The missing prefix is required for the qcom-6.18.y branch.

Introduce a sysfs interface to allow userspace-controlled bandwidth
limiting for QLI targets.

The current PMU-based scaling using static DDR-CPU operating points
is overly aggressive for certain workloads and results in power
regressions. Provide a fine-grained mechanism to restrict bandwidth
at the client level, enabling better control of interconnect usage.

This improves power efficiency by allowing targeted bandwidth
throttling for specific clients and workloads.

List of all the interconnect clients are populated inside
/sys/kernel/interconnect folder and each client's voting can be limited
by setting the limit_ab, limit_ib and limit_commit sysfs options
present inside the folder created for each client-path combination.

Following would be the directory structure.
+ soc:qcom,dcvs:llcc:sp_chm_apps-qns_llcc      --> <client_name>_<path_name>
       - limit_ab                              --> AB limit in KBps
       - limit_ib                              --> IB limit in KBps
       - limit_commit                          --> limits will be applied
                                                   once commit is set

Change-Id: I08b6655c41bddbb70661a76cfeea07290272cd07
Signed-off-by: Raviteja Laggyshetty <rlaggysh@qti.qualcomm.com>
@qlijarvis

Copy link
Copy Markdown

PR #1289 — validate-patch

PR: #1289

Verdict Issues Detailed Report
❌ 0 Full report

Final Summary

  1. Lore link present: No — no lore.kernel.org link found in commit message or PR description
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: Unknown — cannot determine without lore link; appears to be vendor-only based on "QLI targets" language and lack of upstream reference
  4. PR present in qcom-next/topics: Partial - 1/1 commit(s) only have partial integration evidence
Verdict: ❌ — click to expand

🔍 Patch Validation

PR: #1289 - interconnect: qcom: Add bandwidth limiter support for QLI targets
Upstream commit: N/A
Verdict: ❌ FAIL

Commit Message

Check Status Note
Subject matches upstream N/A No lore link present
Body preserves rationale N/A No lore link present
Fixes tag present/correct ❌ No Fixes tag (may not be applicable)
Authorship preserved ❌ Author mismatch: From: Murali Krishna, Signed-off-by: Raviteja Laggyshetty
Backport note (if applicable) N/A No upstream source

Diff

File Status Notes
drivers/interconnect/Kconfig ⚠️ Cannot verify against upstream - no lore link
drivers/interconnect/core.c ⚠️ Cannot verify against upstream - no lore link
drivers/interconnect/internal.h ⚠️ Cannot verify against upstream - no lore link

Issues

Critical Issues:

  1. No lore link found — The commit message contains no Link: tag pointing to lore.kernel.org. This skill only validates patches against a lore.kernel.org source. Without a lore link, the patch cannot be validated for upstream fidelity.

  2. Authorship mismatch — The commit has From: Murali Krishna <mur@qti.qualcomm.com> but Signed-off-by: Raviteja Laggyshetty <rlaggysh@qti.qualcomm.com>. The author and the sole sign-off do not match. Either:

    • Murali Krishna should have a Signed-off-by: line, OR
    • Raviteja should be the From: author if they are the actual author
  3. Missing commit prefix — The subject line lacks a vendor/upstream prefix (UPSTREAM:, FROMLIST:, BACKPORT:, QCLINUX:, PENDING:, etc.). Based on the content (QLI-specific feature, no lore link), this appears to be a vendor-only change and should use the QCLINUX: prefix.

  4. Change-Id present — The commit message contains a Gerrit Change-Id: tag, which is not used in upstream Linux kernel development and should be removed before submission to any public tree.

Minor Issues:

  1. Integration presence partial — According to integration_presence_report.md, this commit has only "partial" evidence in qcom-next (subject or partial tree match found, but full change not verified). This suggests the commit may be incomplete or differs from what's already in the integration branch.

Verdict

Do not merge without correction. This commit requires the following fixes:

  1. Add the appropriate commit prefix:

    • If this is vendor-only: QCLINUX: interconnect: qcom: Add bandwidth limiter support for QLI targets
    • If posted upstream: Add FROMLIST: prefix and include Link: https://lore.kernel.org/r/<message-id>
    • If merged upstream: Add UPSTREAM: or BACKPORT: prefix with the upstream commit link
  2. Fix authorship: Ensure From: matches the primary author and that author has a Signed-off-by: line. If Raviteja is the author, use git commit --amend --author="Raviteja Laggyshetty <rlaggysh@qti.qualcomm.com>". If Murali is the author, add his Signed-off-by: line.

  3. Remove the Change-Id: line — this is Gerrit-specific and not appropriate for kernel commits.

  4. If this is vendor-only (no upstream posting planned), document why in the commit message.

Final Summary

  1. Lore link present: No — no lore.kernel.org link found in commit message or PR description
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: Unknown — cannot determine without lore link; appears to be vendor-only based on "QLI targets" language and lack of upstream reference
  4. PR present in qcom-next/topics: Partial — integration_presence_report.md shows "partial" evidence (subject or partial tree match found, but full change not verified in qcom-next or topics)

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: cb7a416d2476d022a449e7d52475c28a6feb390d
topics remote: topics -> https://github.com/qualcomm-linux/kernel-topics
topics fetch: fetched

Commit Subject qcom-next topics Final
1/1 [PATCH] interconnect: qcom: Add bandwidth limiter support for QLI 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: PARTIAL
present_commits: 0/1
partial_commits: 1/1
missing_commits: 0/1
topics_checked_for_commits: 1/1
final_summary: PR present in qcom-next/topics: Partial - 1/1 commit(s) only have partial integration evidence

@qlijarvis

Copy link
Copy Markdown

PR #1289 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch ❌ 2 errors, 1 warning, 8 checks
dt-binding-check ⏭️ No DT binding changes
dtb-check ⏭️ No DTS changes
sparse-check ✅ Passed
check-uapi-headers ✅ No UAPI changes
check-patch-compliance ❌ Missing required prefix
tag-check ❌ Missing required subject prefix

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1289 - interconnect: qcom: Add bandwidth limiter support for QLI targets
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/38543251592
Target branch: qcom-6.18.y

Checker Result Summary
checkpatch ❌ 2 errors, 1 warning, 8 checks
dt-binding-check ⏭️ No DT binding changes
dtb-check ⏭️ No DTS changes
sparse-check ✅ Passed
check-uapi-headers ✅ No UAPI changes
check-patch-compliance ❌ Missing required prefix
tag-check ❌ Missing required subject prefix

❌ checkpatch

Root cause: Commit has Gerrit Change-Id, missing author Signed-off-by, long commit body line, and alignment style issues.

Failure details:

WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#24: 
+ soc:qcom,dcvs:llcc:sp_chm_apps-qns_llcc      --> <client_name>_<path_name>

ERROR: Remove Gerrit Change-Id's before submitting upstream
#30: 
Change-Id: I08b6655c41bddbb70661a76cfeea07290272cd07

ERROR: Missing Signed-off-by: line by nominal patch author 'Murali Krishna <mur@qti.qualcomm.com>'

CHECK: Alignment should match open parenthesis (8 occurrences)
#100: FILE: drivers/interconnect/core.c:457:
+static int icc_limit_apply(struct icc_path *path,
+				  u32 limit_ab, u32 limit_ib)

Fix:

  1. Remove Change-Id:

    git rebase -i 8580c1c2138163e4e79c3ac86dc6ea15322c8214
    # mark commit as 'edit'
    git commit --amend
    # Delete the "Change-Id: I08b6655c41bddbb70661a76cfeea07290272cd07" line
  2. Add missing Signed-off-by:

    git commit --amend --signoff
    # Ensure "Signed-off-by: Murali Krishna <mur@qti.qualcomm.com>" is present
  3. Wrap long commit body line:
    Edit the commit message to wrap the directory structure example at 75 chars.

  4. Fix alignment (optional but recommended):
    Align function parameters to match the opening parenthesis:

    static int icc_limit_apply(struct icc_path *path,
                               u32 limit_ab, u32 limit_ib)

Reproduce locally:

./scripts/checkpatch.pl --strict --ignore FILE_PATH_CHANGES --git 8580c1c2138163e4e79c3ac86dc6ea15322c8214..04d7802a4d4b3da2982596939484968c682d1206

❌ check-patch-compliance

Root cause: Commit subject does not start with a required prefix (FROMLIST:, FROMGIT:, UPSTREAM:, BACKPORT:).

Failure details:

Checking commit: interconnect: qcom: Add bandwidth limiter support for QLI targets
Commit summary does not start with a required prefix

Fix:

The commit subject must start with one of the allowed prefixes. Since this appears to be a vendor-specific feature for QLI targets, the appropriate prefix depends on upstream status:

  • If this patch has been posted to lore.kernel.org → use FROMLIST:
  • If this is vendor-only with no upstream equivalent → use QCLINUX: (but note: check-patch-compliance will still fail for QCLINUX: — this is a known checker limitation)
  • If this is work-in-progress → use PENDING: (same limitation applies)

Recommended action:

git rebase -i 8580c1c2138163e4e79c3ac86dc6ea15322c8214
# mark commit as 'edit'
git commit --amend -m "FROMLIST: interconnect: qcom: Add bandwidth limiter support for QLI targets"
# (keep the rest of the commit body unchanged)
git rebase --continue

If the patch is vendor-only, use QCLINUX: instead, but be aware that check-patch-compliance does not accept this prefix and will continue to fail (this is a known limitation for vendor-only commits).


❌ tag-check

Root cause: Target branch is qcom-6.18.y (not qcom-next or qcom-next-staging), so every commit must start with a valid prefix tag. This commit has no prefix.

Failure details:

Commit 04d7802a4d4b ("interconnect: qcom: Add bandwidth limiter support for QLI targets"): subject line does not start with a required prefix.

All branches except qcom-next and qcom-next-staging require one of:

  • FROMLIST: / FROMGIT: / UPSTREAM: / BACKPORT: / QCLINUX: / PENDING: / WORKAROUND:

Fix:

Same as check-patch-compliance fix above — add the appropriate prefix to the commit subject:

git rebase -i 8580c1c2138163e4e79c3ac86dc6ea15322c8214
# mark commit as 'edit'
git commit --amend -m "FROMLIST: interconnect: qcom: Add bandwidth limiter support for QLI targets"
# (or QCLINUX: / PENDING: / WORKAROUND: depending on the patch origin)
git rebase --continue

Choose the correct prefix based on the patch origin:

  • Posted to lore but not yet merged → FROMLIST:
  • In a maintainer tree → FROMGIT:
  • Merged into Linus's tree → UPSTREAM:
  • Backported with modifications → BACKPORT:
  • Vendor-only, no upstream → QCLINUX:
  • Work-in-progress, not posted → PENDING:
  • Temporary fix, not for upstream → WORKAROUND:

Verdict

3 blockers must be fixed before merge:

  1. checkpatch (2 errors): Remove Gerrit Change-Id and add missing Signed-off-by for the nominal patch author.
  2. check-patch-compliance: Add a required prefix (FROMLIST:, QCLINUX:, etc.) to the commit subject.
  3. tag-check: Same as Adding Email Checker  #2 — the commit subject must start with a valid prefix tag for the qcom-6.18.y branch.

Additional recommended fixes:

  • Wrap the long commit body line at 75 chars (checkpatch warning).
  • Fix function parameter alignment to match kernel coding style (8 checkpatch checks).

All other checkers passed or were skipped (no relevant file changes).

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