SP11 7.2.2: record AudioReach, Denali QSPI and userspace fixes - #26
SP11 7.2.2: record AudioReach, Denali QSPI and userspace fixes#26ooaklee wants to merge 3 commits into
Conversation
The SP11 FullIO topology SAL module declares ten input ports. AR_MAX_MOD_LINKS bounds the stored output connection arrays, but it does not bound this module metadata. Rejecting the input count prevents the sound card from probing with -EINVAL. Keep the output-port array bound while accepting the valid SAL declaration. Signed-off-by: Leon Silcott <leon@boasi.io>
The event ring is allocated and published before either QSPI channel reaches ACTIVE_STATE. Using the active-channel predicate for the upper doorbell write therefore publishes only the low half of a 64-bit DMA address and can corrupt the completion stream. Detect a configured Denali QSPI channel for event-ring publication, and cache the root compatible so the SP11 completion workarounds remain gated away from common GPI users. Signed-off-by: Leon Silcott <leon@boasi.io>
Bump the downstream ABI for the AudioReach topology and Denali QSPI event-ring fixes. Signed-off-by: Leon Silcott <leon@boasi.io>
Resolved conclusionThis retrospective is complete and is intentionally being closed unmerged.
Propagation and records:
The clean Stubble build emitted ABI This resolves source, propagation, build, package, and publication work. It does not claim physical qualification; playback, microphone capture, touch, pen, suspend/resume, profile transitions, and battery-provider count still require a boot test on the Surface Pro 11. |
|
Closing unmerged as the requested retrospective record: the equivalent focused fixes are already propagated, the target and retrospective heads have identical trees, and the final resolution and validated release are recorded above. |
Summary
This retrospective records why
7.2.2-jg-0sp11v1-qcom-x1elost sound,microphone capture, touchscreen/pen reliability, and visible power-profile
control compared with
sp11/integration-7.2.x, and records the bounded fixesused for
7.2.2-jg-0sp11v2-qcom-x1e.The branch contains three commits:
retaining the fixed output-link bound;
activation and keep the completion workarounds scoped to
microsoft,denali; and7.2.2-jg-0sp11v2.This PR is a historical record, not a request to merge these commits again.
The target branch already contains equivalent focused merges and has the same
resulting source tree. A final evidence comment will be added before this PR is
closed unmerged, following the record-keeping pattern used by #25.
Root causes
Playback and microphone
The affected system had no ALSA card. The kernel log showed an AudioReach
command timeout followed by failure to load topology widget
sp11.sal.4001with
-EINVAL. FullIO v19c declares ten input ports for that SAL module, butthe parser incorrectly applied the eight-entry output-link limit to the input
metadata as well. The fixed arrays store output links, not input ports, so the
input rejection is removed and the output bound remains.
Microphone capture does not require a separate route patch here. The complete
card was aborting before playback or capture could register, while the target
already retains the VA/TX capture routes,
TX_CODEC_DMA_TX_3, and two-channelcapture configuration.
Touchscreen and pen
Touch initially enumerated and exposed HIDRAW, then the QSPI/GPI path reported
events without pending descriptors, RX residue, channel-stop timeouts, and
eventual initialization failure. The event ring was made active after only the
low half of its 64-bit doorbell address had been published. The correction
publishes both halves before activation. The related completion behavior is
enabled only for devices selected through
microsoft,denali.The pen uses the same QSPI/HIDRAW transport, so a separate userspace or pen
protocol change is not introduced.
Power profiles
The v1 kernel already exposes one native
/sys/class/platform-profile/platform-profile-0handler withlow-power,balanced,balanced-performance, andperformance. The missing desktopcontrol was a userspace compatibility gap: power-profiles-daemon 0.30 only
looked for the legacy ACPI path. No synthetic legacy kernel interface is added.
The companion OE PR teaches userspace to consume the native class, and the
Lexr PR gates readiness on that exact kernel/userspace contract.
Historical equivalence
PR #25 was closed unmerged. It is therefore not correct to describe this line
as having merged that PR by ancestry. Its relevant changes were rebased or
propagated through focused branches and are present by semantic/resulting-tree
equivalence.
The relevant parts of PR #18 are also already represented: X1E product
0x0c83, X1P product0x0c80, descriptor support, and registry-level omissionof duplicate SAM battery/AC providers. Replaying its older probe-time battery
workaround would weaken the current registry-level solution.
Guardrails and exclusions
by
microsoft,denali.it does not weaken the output-array safety bound.
are intentionally excluded.
userspace, Wi-Fi, Bluetooth, and GPU userspace remain unchanged and require
requalification rather than speculative source changes.
These boundaries follow the guardrail conclusion recorded in
jglathe#79 (comment).
Propagation
sp11/ubuntu-qcom-x1e-7.2.y-targetatb807d9e52ac9sp11/ubuntu-qcom-x1e-7.2.y-target-fix-pt-2atdd928de48c037ca93bc9ade7ee5a5728543f251fThe demonstration target and retrospective branch resolve to identical tree
b2be92faf2801084e23ae42d0568fc9fc844f33d.Validation
check-config: all good.7.2.2-jg-0sp11v2-qcom-x1e; boot image mode: Stubble.dd928de48c037ca93bc9ade7ee5a5728543f251f.SHA256SUMSentries passed andlexr kernel inspectaccepted thecomplete ABI-bound bundle.
gpi.ko.zst,snd-q6apm.ko.zst, andsnd-soc-x1e80100.ko.zstare present.This is source, build, and package validation. It does not claim a physical
boot test or qualification of playback, capture, touch, pen, suspend/resume,
power-profile transitions, or battery-provider count.