Repository navigation
Conversation
Record the fourteen frozen recovery driver and header inputs on the accepted v26 source. Keep reset, QMP, PMIC GLINK ingress and altmode, PS883x, and MSM DP recovery work available for focused review. This source-only tracking commit is not the v27 producer identity, a new full-tree validation, operational USB4 support, or the deferred GLINK channel lifecycle repair. No board activation or packaging change is included. Signed-off-by: Leon Silcott <leon@boasi.io>
This was referenced Oct 20, 2026
Merged
ooaklee
added a commit
that referenced
this pull request
Nov 13, 2026
Second bounded extraction from the #72 recovery overlay, building on the pmic_glink generation API (#83). The historical driver kept per-port firmware state in struct fields written by receive callbacks and read by workers with no consistency between them, waited for unattributable PAN ACKs, and published HPD on work scheduled from any state: - Replace per-port state fields with a bounded kfifo of snapshot events (PMIC_GLINK_MAX_EVENTS=64); a full queue is reported and dropped, never overwritten, so firmware cannot drive unbounded memory use. - Tag every queued event and request with the pmic_glink generation; stale events are discarded and in-flight requests rejected across a service restart (pmic_glink_altmode_current()). - Split locking: event_lock (spinlock, queues/state only, never held over providers or waits) and lifecycle_lock (mutex, serialises provider/HPD application and reconciliation, never ACK waits). The old single-lock request path serialized unrelated ports behind ACK waits. - pdr_notify reconciles a new generation under event_lock: queues are reset, waiters are woken for cancellation (not as ACKs), and enable_worker re-registers PAN_EN once for the new generation. - HPD bridge notifications now track last-published state so a stale generation cannot leave a connector stuck connected; a service transition forces disconnected before reopening the barrier. - SC8180X legacy notifications no longer infer SC8280 mux state (has_mux_ctrl=false) and are only used for orientation/SVID/HPD. Adaptations vs overlay head 507356d: keep the base's corrected usbc_sc8280x_tbt_data size (res[7]) and usbc_notify trailing reserved word (upstream b255c6f), and keep drm_aux_hpd_bridge_notify_extra / system_freezable_wq usage already in this base.
This was referenced Nov 13, 2026
ooaklee
added a commit
that referenced
this pull request
Nov 14, 2026
Second bounded extraction from the #72 recovery overlay, building on the pmic_glink generation API (#83). The historical driver kept per-port firmware state in struct fields written by receive callbacks and read by workers with no consistency between them, waited for unattributable PAN ACKs, and published HPD on work scheduled from any state: - Replace per-port state fields with a bounded kfifo of snapshot events (PMIC_GLINK_MAX_EVENTS=64); a full queue is reported and dropped, never overwritten, so firmware cannot drive unbounded memory use. - Tag every queued event and request with the pmic_glink generation; stale events are discarded and in-flight requests rejected across a service restart (pmic_glink_altmode_current()). - Split locking: event_lock (spinlock, queues/state only, never held over providers or waits) and lifecycle_lock (mutex, serialises provider/HPD application and reconciliation, never ACK waits). The old single-lock request path serialized unrelated ports behind ACK waits. - pdr_notify reconciles a new generation under event_lock: queues are reset, waiters are woken for cancellation (not as ACKs), and enable_worker re-registers PAN_EN once for the new generation. - HPD bridge notifications now track last-published state so a stale generation cannot leave a connector stuck connected; a service transition forces disconnected before reopening the barrier. - SC8180X legacy notifications no longer infer SC8280 mux state (has_mux_ctrl=false) and are only used for orientation/SVID/HPD. Adaptations vs overlay head 507356d: keep the base's corrected usbc_sc8280x_tbt_data size (res[7]) and usbc_notify trailing reserved word (upstream b255c6f), and keep drm_aux_hpd_bridge_notify_extra / system_freezable_wq usage already in this base.
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.
Historical source preservation for the broader Type-C / DisplayPort recovery overlay. Remain draft. The current kernel integration branch is
sp11/ubuntu-qcom-x1e-7.3.y.Two bounded fixes have been split out, tested and merged into that default through #79: Qualcomm reset error propagation and PS883x orientation retry / idempotent probe-remove unwind. They passed independent GLM 5.3 review, GitHub CI, 29 behavioral cases/seven negative controls with sanitizers, and complete AArch64 object builds. They should not be merged again from this carrier.
The remaining twelve files are not active merely because those two fixes landed:
The original fourteen-file overlay remains at head
507356d03f3cagainst its historical qualification base so its unported work and provenance stay inspectable. This carrier is not retargeted mechanically: doing so would mix obsolete integration history with the current default. Implement each coherent remainder as a focused 7.3 follow-up, then close this draft when all residual work is resolved or explicitly superseded.No claim of working USB4 tunnels, physical display recovery, new packages or current hardware qualification is made by this source-preservation PR.