[QUALIFICATION - DO NOT MERGE] SP11 v8 GPI ordering test - #46
Conversation
8fbab07 to
ed731b7
Compare
CI-only relift after #49This qualification branch was re-lifted from old head Verification before the force-with-lease update:
Therefore the existing v8 kernel packages remain exact for hardware behavior; this CI-only ancestry change does not require a rebuild. Hardware qualification is still pending. |
The device writes event elements into coherent memory before publishing its event ring read pointer. Both gpi_process_events() and gpi_mark_stale_events() read that pointer through readl_relaxed() and then consume the event memory without an ordering guarantee. On architectures such as arm64, this can expose a published event before all its fields are visible. Denali QSPI exposed this as an accepted completion whose length was observed as zero. Use ordered MMIO reads only for the event pointer. Keep all other register accesses relaxed. This follows the ordered ioread32() pattern used by the Qualcomm IPA GSI event-ring consumer. Fixes: 5d0c353 ("dmaengine: qcom: Add GPI dma driver") Signed-off-by: Leon Silcott <leon@boasi.io>
Signed-off-by: Leon Silcott <leon@boasi.io>
ed731b7 to
e805a56
Compare
Final message-clean qualification headAfter the tree-preserving #45 commit-message wrap, the unchanged v8 packaging commit was replayed onto the current topic head. Qualification head is now |
v8 one-boot audio quarantineThe v8 qualification remains isolated to commit A read-only source and package audit confirmed that the four relevant drivers are modules in this build:
Blacklisting only the machine driver is insufficient: the SoundWire controller, WSA macro, and WSA884x codecs have independent modalias/probe paths. The one-boot v8 GRUB This is an in-kernel module-loader blacklist, so it also covers initramfs and modalias load attempts. It is not a persistent configuration and must not be added to the fallback v19 entry. Before the first touchscreen or pen contact, use keyboard/USB mouse and run this passive check: grep -q 'module_blacklist=snd_soc_x1e80100,soundwire_qcom,snd_soc_wsa884x,snd_soc_lpass_wsa_macro' /proc/cmdline \
|| echo 'FAIL: v8 command line is missing the audio blacklist'
for m in snd_soc_x1e80100 soundwire_qcom snd_soc_wsa884x snd_soc_lpass_wsa_macro; do
if awk -v m="$m" '$1 == m { found=1 } END { exit !found }' /proc/modules; then
echo "FAIL: loaded module $m"
fi
[ ! -e "/sys/module/$m" ] || echo "FAIL: sysfs module $m"
modinfo -n "$m" >/dev/null 2>&1 || echo "WARN: module file not found for $m"
done
if [ -r /proc/asound/cards ] && grep -Eiq 'x1e|wsa|sndcard' /proc/asound/cards; then
echo 'FAIL: internal audio card is present'
else
echo 'PASS: no internal audio card'
fi
sudo dmesg | grep 'is blacklisted' || truePass criteria are zero Only after this passes should touch and pen be exercised. USB keyboard/mouse, QSPI, |
Purpose
Build and physically test one hypothesis for the Surface Pro 11 touch/pen
regression: order the GPI event-ring producer-pointer read before consuming the
device-written coherent event element.
This is a disposable qualification branch. It targets beta for comparison and
review visibility, but must not merge. The reusable source change remains
isolated in #45.
Exact delta from beta
666929700e1d— ordered event-ring pointer reads from dmaengine: qcom: gpi: order event ring pointer reads #45;8fbab0760dca— qualification-only Debian version7.2.2-jg-0sp11v8, producing ABI7.2.2-jg-0sp11v8-qcom-x1e.No early-EOT completion, audio repair, SPI-HID policy, MSHW0485 policy,
runtime-PM change, tracing dependency, delay, module parameter, or userspace
change is included.
Why this test is isolated
The failed v6 build accepted an RX completion for a 3628-byte descriptor but
reported the full 3628-byte residue, showing that the event length was observed
as zero. The failed v7 early-completion experiment converted that condition into
an invalid-cookie kernel BUG and was withdrawn. v19 remains stable on the same
hardware and userspace.
The v8 change preserves normal DMA completion ownership and changes only the
ordering of the device publication-pointer read. A sustained pass is consistent
with the ordering hypothesis, but cannot prove attribution by itself because
the known-good v19 baseline is an older kernel line. A repeat of the same
failure signature falsifies this repair more directly.
Pre-hardware validation
8fbab0760dcaand was fetched into anisolated Lexr work volume with
--reset-source; its recorded source treematches the committed revision, so unrelated local worktree edits were not
built;
git diff --check: pass;checkpatch.pl: 0 errors, 0 warnings, 0 checks;drivers/dma/qcom/gpi.obuild: pass;8fbab0760dca: pass;SHA256SUMSentries and Lexrkernel inspect: pass;headers, all at version
7.2.2-jg-0sp11v8;Surface DTBs;
findings; its final release review required the bounded attribution and
audio-isolation documentation recorded here.
The full Ubuntu configuration emitted five non-fatal warnings in unmodified,
out-of-scope code: one unused UCSI helper, two Mellanox frame-size warnings,
and two WireGuard frame-size warnings. No warning involved GPI, SPI, HID, IPTS,
the SP11 device tree, or packaging.
Required Surface qualification
Preserve
7.2.0-jg-0sp11v19-qcom-x1eand its matching DTB as the verifiedfallback. Software mute did not contain the v7 static, so the first v8 boot must
append this parameter to the v8 GRUB
linuxline with a one-timeeedit:This is a declared safety and isolation variable. It makes a passing result
evidence for touch transport under audio isolation only; it is not combined
beta qualification. Deferred codec/WSA probe messages are expected with these
machine/SoundWire modules blocked and are not by themselves a test failure.
per-ABI OLED Denali DTB is staged.
uname -ris exactly7.2.2-jg-0sp11v8-qcom-x1e.touching the display.
beyond the former intermittent three-second window, including repeated idle
periods.
then repeat touch and pen for at least another 10 minutes.
SP11 QSPI pair failed, zero-length completion,DMA-cookie BUG, host-fault/reset loop, or loss of HIDRAW/IPTS.
If touch freezes the machine, the old residue signature recurs, or any DMA
ownership warning appears, close this qualification PR and #45 rather than
adding another repair to v8.
Merge policy
Do not merge this qualification branch under any outcome. After a hardware
pass, only #45 may become eligible for its normal review and merge decision,
followed by a fresh beta regression build. A compile-only pass is insufficient.
Do not attempt an unblacklisted beta boot until the loud-static audio defect has
its own qualified repair.