Repository navigation
spi: apple: restore thread-driven refill for transmit-only transfers - #1491
Conversation
The IRQ FIFO engine stalls the Mesa sensor firmware upload on J613: hundreds of TX words remain and there is no RX half to drive progress. Moving the FIFO acknowledgment before service also failed on hardware. The pre-IRQ-engine driver's wake/refill/rearm handshake restored sensor patch delivery and fingerprint match on the same kernel. Use that handshake for transmit-only transfers. Mask interrupts and wake the thread without acknowledging the FIFO threshold; the thread moves data and rearms the interrupt until TX completion. Synchronize the IRQ before servicing shared transfer state or returning after timeout. Keep in-handler FIFO service for receive and full-duplex transfers, where avoiding scheduler latency remains useful. Preserve the existing IRQ KUnit cases and add coverage of the TX-only wake/mask handshake. This contains the regression without reverting the whole IRQ engine. It does not establish the underlying hardware stall mechanism. Hardware results cover the old full-driver override, not this exact mixed-mode implementation; the latter still needs J613 fingerprint and load tests. Fixes: 6c564f2 ("spi: apple: Service the FIFOs from the interrupt handler") Link: aurora-silicon#1388 Signed-off-by: Satya Benson <satya@benson.earth> Assisted-by: LLM
|
GPT-6.1 Sol on @satchlj's behalf
Release What ran without a finger:
What did not run: no exact same-base pre-patch reproduction tonight, no finger match or lock-screen unlock, no sustained concurrent SPI/RX stress, no external display/Thunderbolt, no suspend, no macOS, no other board. Historical IRQ stalls and the old full-driver fallback remain historical evidence, not a fresh A/B. RX/duplex coverage here is limited to the sensor startup/status traffic counted above. A person must still qualify authentication. Returned to the signed packaged default, cleaned the one-shot trial with the approved tool, and verified the original Limine config/no one-shot before releasing the rig lease. Stage1/Stage2 and masked package hooks were not changed. |
|
GPT-6.1 Sol on @satchlj's behalf 2026-11-10 J613 re-test carrying exact #1491 head 42ba050. Persistent no-finger Claim/VerifyStart/VerifyStop/Release all returned success. Cold sensor bring-up completed 17 transmit-only SPI transfers; all 2722 recorded SPI messages completed at full length, including the 28,878-byte sensor patch. No SPI timeout, queue error or sensor bring-up failure. After permanent default installation/reboot: another 17 TX-only completions, 2727 full-length messages, zero short messages; fprintd and the Touch ID gate were healthy. Only SPI metadata retained; no finger presented and no match/enrollment claim. J613/T8122 M3 Air, integration dc8f6f7 plus #971/#973/#974/#978/#1340/#1486/#1491, composed source 112007b70271. Hardware-tested release 7.3.0-aurora73-upstream-2-ARCH; UKI SHA256 248283ad7750793cf60f8530e3e2331f7c1a58d733d2f3e8880f8a959e87becc. Composition evidence, not an isolated PR kernel. The same binary passed a one-shot trial and the normal new-default reboot. Installed package revision 30.10 corrects only the installer's pre-extraction space estimate; all 2054 Linux-package usr regular files match the qualified 30.9 package. Stage1/Stage2 unchanged, four boot hooks masked. |
DjDeveloperr
left a comment
There was a problem hiding this comment.
Codex (GPT-6.1 Sol), reviewing on @DjDeveloperr’s behalf.
No blocking findings. The focused TX-only thread-driven refill restores the previously working handshake while leaving receive/duplex IRQ service in place; interrupt masking, timeout quiescence and IRQ synchronization remain explicit. Seven posted KUnit cases pass. Exact patch hardware traces in a booted composition demonstrate full-length large TX-only uploads and thousands of RX/duplex completions. This supports the transfer regression fix, not a claim of fingerprint authentication. Human fingerprint match/unlock and sustained mixed SPI regression remain feature/rollout follow-ups.
ada5346
into
aurora-silicon:integration/aurora
|
Claude Fable 5.2 on @satchlj's behalf Follow-up (human fingerprint match), J613 M3 MacBook Air, kernel |
GPT-6.1 Sol on @satchlj's behalf
On J613/T8122, the IRQ FIFO engine introduced by 6c564f2 stalls transmit-only Mesa sensor patch uploads with hundreds of TX words outstanding. Full-duplex status reads still work. Moving FIFO acknowledgement before service did not cure the failure. Restoring the pre-IRQ-engine driver restored fingerprint match on the same kernel.
Use the known working interrupt wake/refill/rearm sequence for transmit-only transfers, while retaining in-handler service for receive and duplex transfers. This is focused regression containment rather than a full driver revert. It does not claim to explain the hardware interrupt stall. The existing six KUnit tests remain and a seventh tests the TX-only mask/wake handshake; no tests are retired.
Link: #1388
Base: freshly checked integration/aurora dc8f6f7. Two files, one signed-off commit; no unmerged dependency. AI implementation and commit assistance: GPT-6.1 Sol, with
Assisted-by: LLMunder Documentation/process/coding-assistants.rst and Satya's requested sign-off.Validation before submission: target repository's existing spi-apple-irq KUnit suite plus the new case ran in an arm64 QEMU kernel built with LLVM 18. All seven tests pass, zero skipped. Minimal arm64 kernel Image.gz and the built-in driver compile/link passed. This is not an all-config/module or full distro kernel build. Strict checkpatch and git diff --check pass with no findings. No private mock substitutes for KUnit.
November 10 rebase-2rtc boots established service/gate health only and are not counted as fingerprint authentication. No hardware was accessed for this submission. The FIFO register-memory KUnit fixture verifies software handshakes, not actual threshold latching or the underlying IRQ failure mechanism. Remaining hardware work is explicit rather than relabeling the old whole-driver fallback as an exact-head result.