Repository navigation
Conversation
|
Qualification bundle is ready in draft PR #46.
The full Ubuntu configuration emitted five non-fatal warnings in unrelated, PR #46 records the controlled hardware protocol. Because software mute did not Keep this PR draft and unmerged until the physical gates in #46 pass. |
250e623 to
f35a9f8
Compare
Message-only submission cleanupThe commit message was wrapped to satisfy full-patch |
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>
f35a9f8 to
bd9f5e2
Compare
September 29: isolated 7.2.5 review port publishedThe GPI ordering port is available on See the pinned-base mapping and current qualification checkpoint for replay/build evidence, dependencies and the actual v1 hardware result. No branch was force-updated, merged or deleted, and no duplicate PR was opened. Hardware and non-SP11 qualification remain outstanding. |
|
Closing this superseded review/qualification vehicle without merging. Current review work is tracked in ooaklee/linux_ms_dev_kit-sp11#61; ooaklee/linux_ms_dev_kit-sp11#68 is the single combined 7.2.5 qualification candidate. This does not discard the original feature intent or close any outstanding acceptance gate. The current combined source is This PR's branch and exact head The two additional deferred GPI corrections are explicitly deferred, not removed from an accepted fix list. V8's existing working GPI/touch implementation remains intact; the known residual risks and separate width-cast disposition are not waived. |
Summary
Use ordered MMIO reads for the GPI event-ring read pointer before consuming
events written by the device into coherent memory.
This is a one-variable replacement for the withdrawn early-EOT experiment in
#42. It does not change QSPI completion policy, descriptor ownership, SPI HID,
the MSHW0485 driver, recovery, runtime PM, or userspace.
Evidence boundary
Proven from the failed beta boots:
3628 and reported residue 3628, so the event length was observed as zero;
invalid-cookie kernel BUG, so that patch and its aggregate were withdrawn.
The missing read-side ordering is a hypothesis, not yet a hardware-qualified
root cause. The GPI driver reads the device producer pointer with
readl_relaxed()and immediately readsdma_alloc_coherent()event memory.Linux's MMIO contract reserves ordered
readl()for exactly this relationship.The analogous Qualcomm IPA GSI event-ring path also uses ordered
ioread32().Scope and guardrail
gpi_read_ev_rp()changes;gpi_process_events()andgpi_mark_stale_events();accessor;
suppression, or cookie workaround is introduced.
The change is generic because ordering a device publication pointer before its
coherent payload is a GPI core correctness requirement, not Denali hardware
policy. SP11 qualification can validate the exposed QSPI case; wider upstream
submission will still require review and regression coverage on other GPI
clients.
Validation
git diff --check: passcheckpatch.pl: 0 errors, 0 warnings, 0 checksdrivers/dma/qcom/gpi.obuild using the v7 configuration: passcorrecting the MMIO/DMA and split-pointer analysis
Current-head evidence
Hardware qualification
Keep this PR draft and unmerged until a touch-only beta build passes on the
Surface Pro 11 with tracing disabled:
SP11 QSPI pair failed, zero-length completion, DMA cookie BUG,host-fault loop, or loss of the IPTS bridge;
overhead.
Failure with the same residue signature falsifies this hypothesis and this PR
must be closed rather than expanded in place.
Merge policy
Do not merge on compile evidence alone. Do not combine this test with the
speaker repair or any other unqualified topic.
Qualified-source transport note
The qualified source also contains an exported
qcom_geni_spi_biosref_xfer()helper and public header, but its final tree has no caller;mshw0485_touchuses normalspi_sync()messages. Those dead helper artifacts are not part of the guarded relift. The active protocol-9 behavior lives in the beta branch scopedqcom,geni-qspi/QCOM_GPI_QSPIroute; this PR changes only the ordering used when that GPI path consumes its event ring.