Skip to content

WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit - #1853

Open
quicmahap wants to merge 1 commit into
qualcomm-linux:tech/bus/usb/phyfrom
quicmahap:glymur-usb-phy-synced-poweroff
Open

quicmahap wants to merge 1 commit into
qualcomm-linux:tech/bus/usb/phyfrom
quicmahap:glymur-usb-phy-synced-poweroff

Conversation

@quicmahap

@quicmahap quicmahap commented Sep 17, 2026

Copy link
Copy Markdown

On Glymur the USB PHY GDSC needs to stay powered on while the PHY is runtime suspended, so that host-mode bus suspend can resume without losing PHY state. Losing that state causes memory loss and SMMU faults, which show up as an xHCI crash on resume.

The GDSC side of this is handled by the gdsc_synced_poweroff_disable callback, which only powers a GDSC off when GenPD's synced_poweroff flag is set. This change adds the consumer half: once the common PHY block is fully exited and the PHY no longer needs its state preserved, qmp_combo_com_exit() calls dev_pm_genpd_synced_poweroff() so the GDSC is allowed to power off instead of being retained indefinitely.

Gated on a new use_synced_poweroff config flag, enabled only for Glymur, so other platforms are unchanged.

Companion change

This is the PHY/consumer half only. The matching clk-side change, which sets .power_off = gdsc_synced_poweroff_disable on the Glymur USB PHY GDSCs, cannot live on this branchtech/bus/usb/phy lacks both prerequisites:

Commit Provides Present on tech/bus/usb/phy?
0661ee1d650f clk: qcom: gdsc: Add custom disable callback for GX GDSC gdsc_gx_disable() no
a6d6436f89cc WORKAROUND: clk: qcom: gdsc: Conditionally disable GDSC if synced_poweroff flag is set #define gdsc_synced_poweroff_disable no

Building the clk change here fails with:

drivers/clk/qcom/gcc-glymur.c:7936:30: error: 'gdsc_synced_poweroff_disable' undeclared here (not in a function)

so it is being sent separately against tech/bsp/clk, which already carries that infrastructure (as merged via #1421). This patch is a functional no-op until that lands, and is safe to merge on its own.

@qcomlnxci
qcomlnxci requested review from a team, Pratham Pratap (ppratap-liveroot) and wcheng-eng and removed request for a team September 17, 2026 13:31
@qlijarvis

Copy link
Copy Markdown

PR #1853 — validate-patch

PR: #1853

Verdict Issues Detailed Report
0 Full report

Final Summary

  1. Lore link present: No — WORKAROUND: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — vendor-only workaround, not posted upstream
  4. PR present in qcom-next/topics: Fail - 1/1 commit(s) are missing from both qcom-next and topics
Verdict: ✅ — click to expand

🔍 Patch Validation

PR: #1853 - WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit
Upstream commit: N/A
Verdict: ✅ PASS

Commit Message

Check Status Note
Subject matches upstream N/A WORKAROUND: prefix; no upstream source to compare
Body preserves rationale Clear problem statement and solution description
Fixes tag present/correct N/A Not a fix; new workaround for Glymur platform
Authorship preserved Mahadevan P correctly listed as author
Backport note (if applicable) N/A Not a backport

Diff

File Status Notes
drivers/phy/qualcomm/phy-qcom-qmp-combo.c 18 insertions: adds synced poweroff support for Glymur PHY GDSC

Verdict

Merge as-is. This is a vendor-specific workaround for Glymur USB PHY GDSC power management. The commit message clearly explains the problem (xHCI crash on resume due to PHY state loss) and the solution (synced GDSC power-off after PHY exit). The implementation is gated behind a platform-specific config flag, leaving other platforms unchanged.

Final Summary

  1. Lore link present: No — WORKAROUND: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — vendor-only workaround, not posted upstream
  4. PR present in qcom-next/topics: No — commit is missing from both qcom-next and topics (per integration_presence_report.md)

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

Commit Subject qcom-next topics Final
1/1 [PATCH] WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing

Final Status

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

@qlijarvis

Copy link
Copy Markdown

PR #1853 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch No style issues
dt-binding-check ⏭️ No binding changes
dtb-check ⏭️ No DTS changes
sparse-check No static analysis issues
check-uapi-headers No UAPI changes
check-patch-compliance WORKAROUND: prefix not accepted
tag-check Valid prefix present

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1853 - WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/35227565508
Target branch: tech/bus/usb/phy

Checker Result Summary
checkpatch No style issues
dt-binding-check ⏭️ No binding changes
dtb-check ⏭️ No DTS changes
sparse-check No static analysis issues
check-uapi-headers No UAPI changes
check-patch-compliance WORKAROUND: prefix not accepted
tag-check Valid prefix present

❌ check-patch-compliance

Root cause: The commit uses WORKAROUND: prefix, which is not in the allowed list for check-patch-compliance.

Failure details:

Checking commit: WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit
Commit summary does not start with a required prefix

Analysis:

The check-patch-compliance checker enforces a strict subset of prefixes that require upstream linkage:

  • ✅ Accepted: FROMLIST:, FROMGIT:, UPSTREAM:, BACKPORT:
  • ❌ Rejected: WORKAROUND:, QCLINUX:, PENDING:

The commit uses WORKAROUND:, which is a valid prefix for the general tag-check requirement (all branches except qcom-next/qcom-next-staging require a prefix), but check-patch-compliance specifically rejects it because workarounds typically don't have upstream links.

This is a known checker limitation documented in the skill references:

QCLINUX: and PENDING: prefixes always fail check-patch-compliance — this is a known checker limitation for vendor-only commits.

The same applies to WORKAROUND: — it's a vendor-specific temporary fix that by definition has no upstream equivalent.

Options:

  1. Accept the failure (Recommended for true workarounds)

    • If this is genuinely a temporary workaround with no upstream equivalent, the check-patch-compliance failure is expected and can be ignored.
    • The commit is correctly tagged with WORKAROUND: per the general tagging policy.
    • Merge with maintainer approval acknowledging this is a vendor-specific workaround.
  2. Change prefix to FROMLIST: + add Link (If posted upstream)

    • Only if this patch has been or will be posted to a mailing list.
    • Add Link: <lore-url> to the commit body.
    • This would make check-patch-compliance pass.
  3. Change prefix to QCLINUX: or PENDING:

    • These would also fail check-patch-compliance (same limitation).
    • Not recommended unless the semantic meaning is more accurate.

Fix (if choosing option 2):

git rebase -i <base_sha>   # mark commit as 'edit'
git commit --amend -m "FROMLIST: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit

[original commit body]

Link: https://lore.kernel.org/...
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>"
git rebase --continue

Reproduce locally:

# The checker would run:
# ./scripts/check-patch-compliance.sh --kernel-src <path> --base-sha <base> --head-sha f2f3b68202f6

Verdict

One known limitation blockercheck-patch-compliance rejects WORKAROUND: prefix by design.

Recommendation:

  • If this is a genuine temporary workaround with no upstream equivalent → merge with maintainer approval acknowledging the expected check-patch-compliance failure.
  • If this patch will be posted upstream → change prefix to FROMLIST: and add a Link: tag.

All other checkers passed cleanly. The code itself has no style, binding, DTS, sparse, or UAPI issues.

…Y exit

On Glymur the USB PHY GDSC needs to stay powered on while the PHY is
runtime suspended, so that host-mode bus suspend can resume without
losing PHY state. Losing that state causes memory loss and SMMU faults,
which show up as an xHCI crash on resume.

The GDSC side of this is handled by the gdsc_synced_poweroff_disable
callback, which only powers a GDSC off when GenPD's synced_poweroff flag
is set. Add the consumer half here: once the common PHY block is fully
exited and the PHY no longer needs its state preserved, call
dev_pm_genpd_synced_poweroff() so the GDSC is allowed to power off
instead of being retained indefinitely.

Gate this on a new use_synced_poweroff config flag and enable it only
for Glymur, leaving other platforms unchanged.

Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
@quicmahap
quicmahap force-pushed the glymur-usb-phy-synced-poweroff branch from f2f3b68 to 2c83392 Compare September 17, 2026 17:51
@qcomlnxci
qcomlnxci requested a review from a team September 17, 2026 17:52
@qlijarvis

Copy link
Copy Markdown

PR #1853 — validate-patch

PR: #1853

Verdict Issues Detailed Report
N/A 0 Full report

Final Summary

  1. Lore link present: No — WORKAROUND: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — vendor-only change, not posted upstream
  4. PR present in qcom-next/topics: Fail - 1/1 commit(s) are missing from both qcom-next and topics
Verdict: N/A — click to expand

🔍 Patch Validation

PR: #1853 - WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit
Upstream commit: N/A (WORKAROUND: prefix — vendor-only temporary fix)
Verdict: ⏭️ SKIP (validation not applicable)

Commit Message

Check Status Note
Subject matches upstream N/A WORKAROUND: prefix — no upstream source
Body preserves rationale Clear problem statement and solution rationale
Fixes tag present/correct N/A No Fixes tag; workaround for Glymur-specific issue
Authorship preserved Signed-off-by present
Backport note (if applicable) N/A Not a backport

Diff

File Status Notes
drivers/phy/qualcomm/phy-qcom-qmp-combo.c Adds use_synced_poweroff flag and dev_pm_genpd_synced_poweroff() call

Verdict

This is a vendor-only workaround commit. The WORKAROUND: prefix correctly signals that this is a temporary fix not intended for upstream submission. The commit message clearly explains the Glymur-specific issue (USB PHY GDSC power management during runtime suspend) and the solution (synced power-off request). The implementation is gated behind a config flag (use_synced_poweroff) and enabled only for Glymur, leaving other platforms unchanged. No validation against lore.kernel.org is applicable or required.

Final Summary

  1. Lore link present: No — WORKAROUND: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — vendor-only change, not posted upstream
  4. PR present in qcom-next/topics: Not checked — WORKAROUND: vendor-only commit

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

Commit Subject qcom-next topics Final
1/1 [PATCH] WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC missing - no subject, patch-id, or full tree-content match found missing - no subject, patch-id, or full tree-content match found missing

Final Status

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

@qlijarvis

Copy link
Copy Markdown

PR #1853 — checker-log-analyzer

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

Checker Result Summary
Checker Result Summary
checkpatch No style issues
dt-binding-check ⏭️ No binding changes
dtb-check ⏭️ No DTS changes
sparse-check No static analysis warnings
check-uapi-headers No UAPI changes
check-patch-compliance WORKAROUND: prefix not in allowed list
tag-check Subject prefix valid for topic branches

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1853 — WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/35255385294

Checker Result Summary
checkpatch No style issues
dt-binding-check ⏭️ No binding changes
dtb-check ⏭️ No DTS changes
sparse-check No static analysis warnings
check-uapi-headers No UAPI changes
check-patch-compliance WORKAROUND: prefix not in allowed list
tag-check Subject prefix valid for topic branches

❌ check-patch-compliance

Root cause: The WORKAROUND: prefix is not in the checker's allowed list of upstream-linkable prefixes.

Failure details:

Checking commit: WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit
Commit summary does not start with a required prefix

Analysis:

The check-patch-compliance checker only accepts these prefixes:

  • FROMLIST: — patch posted to mailing list
  • FROMGIT: — patch from maintainer tree
  • UPSTREAM: — patch merged into mainline
  • BACKPORT: — upstream patch with modifications

However, WORKAROUND: is a valid vendor-internal prefix used for temporary fixes not suitable for upstream submission. This is a known checker limitation — the checker enforces upstream-linkable prefixes only and will always fail for vendor-only commits using WORKAROUND:, QCLINUX:, or PENDING: prefixes.

Context:

  • Target branch: tech/bus/usb/phy (topic branch)
  • Base integration: qcom-next (via automerge)
  • Commit subject: WORKAROUND: phy: qcom: qmp-combo: Request synced GDSC power-off on PHY exit

The commit is correctly tagged with WORKAROUND: because it's a temporary fix for Glymur USB PHY GDSC power management that is not intended for upstream submission.

tag-check verdict:PASS

The subject prefix WORKAROUND: is in the valid prefix list for all branches except qcom-next/qcom-next-staging:

  • Valid prefixes: FROMLIST:, FROMGIT:, UPSTREAM:, BACKPORT:, QCLINUX:, PENDING:, WORKAROUND:
  • This commit correctly uses WORKAROUND: for a vendor-specific temporary fix.

Fix options:

  1. Accept the failure (recommended): This is a known limitation of check-patch-compliance for vendor-only commits. The WORKAROUND: prefix is correct and appropriate for this change. No action needed.

  2. If upstream submission is planned: Change prefix to FROMLIST: and add a Link: trailer pointing to the lore.kernel.org posting. However, this is only appropriate if the patch is actually posted upstream.

Reproduce locally:

cd kernel
git log d49c33864d06..a9835e601025 --format="%H %s"
# Verify subject starts with WORKAROUND:

Verdict

Ready to merge — The check-patch-compliance failure is a known checker limitation for vendor-internal WORKAROUND: prefixed commits. All other checkers passed, and the subject prefix is valid for the target topic branch (tech/bus/usb/phy).

The commit is correctly tagged as a workaround for a vendor-specific issue (Glymur USB PHY GDSC power management) that is not suitable for upstream submission.

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