Skip to content

T1: per-chip canary sets — skip irrelevant paths on 1T1R / 8814#73

Merged
josephnef merged 1 commit into
masterfrom
t1-per-chip-canary
Jun 2, 2026
Merged

T1: per-chip canary sets — skip irrelevant paths on 1T1R / 8814#73
josephnef merged 1 commit into
masterfrom
t1-per-chip-canary

Conversation

@josephnef
Copy link
Copy Markdown
Collaborator

Summary

Refactors the canary oracle from one fixed register list shared by all chips into per-path register groups with chip-dependent path masks.

Problem

  • 8821AU is 1T1R: path-B BB-AGC mirror (0xe20-0xe40) and RF[B] reads come back as BB-init defaults or sentinel zeros. Including them in the dump cluttered the diff with always-divergent noise rows.
  • 8814AU additions (last PR) bolted path-C/D BB regs onto the end as a conditional block instead of integrating into a proper chip-aware schema.

Refactor

Register groups: bb_anchors, bb_pathA, bb_pathB, bb_pathC, bb_pathD, mac_canary, rf_canary.

Per-chip path masks:

  • CHIP_8821: path-A only — both BB path-B mirror and RF[B] skipped.
  • CHIP_8812: paths A + B (unchanged from prior behaviour).
  • CHIP_8814A: paths A + B + C + D BB-table; RF still A + B only (paths C/D are HW write-only).

tools/canary_kernel_dump.sh accepts 8812 / 8821 / 8814 for the chip arg and emits the matching path subset so kernel + devourer dumps still diff line-by-line.

Per-chip line counts (clean ch6 capture)

Chip Before After Δ
8821AU 68 52 -16 (sentinel/no-op rows dropped)
8812AU 68 68 unchanged
8814AU 90 90+ unchanged (path-C/D from prior PR)

Test plan

  • 8821AU dump no longer contains RF[B] lines or BB 0xe** lines.
  • 8812AU dump output identical to prior (paths A + B).
  • 8814AU dump output includes paths A + B + C + D BB regs.
  • No functional behaviour change (canary is diagnostic-only).

🤖 Generated with Claude Code

Before: `DEVOURER_DUMP_CANARY` emitted one fixed register list for
every Jaguar chip and `canary_kernel_dump.sh` mirrored that list.
Two problems:
- 8821AU is 1T1R: path-B BB-AGC mirror (`0xe20-0xe40`) and RF[B]
  reads come back as BB-init defaults or sentinel zeros. Including
  them in the dump cluttered the diff with ~16 always-divergent
  noise rows (16 lines on 8821, of which 12 were path-B BB regs
  and 6 were RF[B] sentinels).
- 8814AU additions (PR #72) bolted path-C/D BB regs onto the
  end as a conditional block instead of integrating them into a
  proper chip-aware schema.

This PR refactors into per-path register groups (`bb_anchors`,
`bb_pathA`, `bb_pathB`, `bb_pathC`, `bb_pathD`, `mac_canary`,
`rf_canary`) with chip-dependent path masks:

- `CHIP_8821`: path-A only — both BB path-B mirror and RF[B] skipped.
- `CHIP_8812`: paths A + B (unchanged from prior behaviour).
- `CHIP_8814A`: paths A + B + C + D BB-table; RF still A + B only
  (paths C/D are HW write-only).

Per-chip line counts on a clean fresh capture at ch6:
- 8821AU:  52 lines (was 68; -16 sentinel/no-op rows)
- 8812AU:  68 lines (unchanged)
- 8814AU:  90+ lines (full path-A/B/C/D coverage)

`tools/canary_kernel_dump.sh` accepts `8812` / `8821` / `8814` for
the chip arg and emits the matching path subset so kernel + devourer
dumps still diff line-by-line.

No functional behaviour change — purely diagnostic output shape.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@josephnef josephnef merged commit a50cf96 into master Jun 2, 2026
5 checks passed
@josephnef josephnef deleted the t1-per-chip-canary branch June 2, 2026 18:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant