T1: expand runtime-ephemeral mask — DIG IGI + IQK outputs#75
Merged
Conversation
Closes the remaining post-init canary divergence clusters that
aren't init drift:
- BB 0xc50 / 0xe50 / 0x1850 / 0x1a50 byte 0 — DIG IGI for
paths A/B/C/D. The kernel's phydm DIG watchdog walks the
IGI value continuously based on RX noise floor; devourer
writes the 0x1c floor once at init. Upper bits of the AGC
core word stay diffed.
- BB 0x8b0, 0xc10/0xc14/0xc90/0xc94 (+ path-B mirrors at
0xe10/0xe14/0xe90/0xe94) — IQK output coefficients. Both
sides run IQK but the tone sweep samples a noisy signal so
the per-bit output varies between runs even on the same
chip. Functional IQK correctness is checked by the on-air
RX/TX matrix, not by canary diff.
`--strict` still bypasses every mask for replay/bit-exact
debugging. Test suite grows from 13 to 17 cases covering the
new mask entries.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
Closes the remaining post-init canary divergence clusters that aren't init drift — DIG runtime updates and IQK calibration outputs — so a clean canary diff actually means "nothing is off."
New mask entries
DIG IGI — bits 7:0 of the path AGC core word
0x000000FFper registerThe kernel's phydm DIG watchdog walks the per-path IGI value continuously based on RX noise floor. Devourer writes the 0x1c floor once at init (
HalModule::phydm_SetIgiFloor_Jaguar) and leaves it. Upper bits of the AGC core word are static config and stay diffed.IQK output coefficients — full word
0xFFFFFFFFper registerBoth kernel and devourer run IQK after the port (
Iqk8812a/Iqk8821a), but the tone-calibration sweep samples a noisy signal so the per-bit output varies between runs even on the same chip. Functional IQK correctness is validated by the on-air RX/TX matrix intests/regress.py, not by bit-exact canary diff.Escape hatch
--strictcontinues to bypass every mask, so replay testing or bit-exact debugging can still opt in.Test plan
python3 -m pytest tests/test_canary_diff.py -v— 17 / 17 passing locally (was 13)test_dig_igi_byte0_masked,test_dig_igi_upper_bits_still_diffed,test_iqk_output_regs_masked,test_iqk_output_unmasked_under_strictCanary diff unit testsjob