Skip to content

libdvi: halt in RAM instead of flash-resident panic() in DMA IRQ#1

Closed
mikeysklar wants to merge 1 commit into
circuitpython:circuitpythonfrom
mikeysklar:ram-safe-irq-halt
Closed

libdvi: halt in RAM instead of flash-resident panic() in DMA IRQ#1
mikeysklar wants to merge 1 commit into
circuitpython:circuitpythonfrom
mikeysklar:ram-safe-irq-halt

Conversation

@mikeysklar

Copy link
Copy Markdown

The "TMDS free queue full" error path called panic(), which lives in flash. The DVI IRQ handler runs on a core that may have flash access disabled (CircuitPython locks it out with an MPU region after dvi_start), so the panic would hard fault on the first instruction fetch and never print anything. Spin in RAM instead, matching the existing hang-on-bug idiom in core1_main.

Found by the core1 flash-call checker from adafruit/circuitpython#11115.

🤖 Generated with Claude Code

The "TMDS free queue full" error path called panic(), which lives in
flash. The DVI IRQ handler runs on a core that may have flash access
disabled (CircuitPython locks it out with an MPU region), so the panic
would hard fault on the first instruction fetch and never print. Spin
in RAM instead, matching the existing hang-on-bug idiom in this code.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mikeysklar

Copy link
Copy Markdown
Author

Withdrawing per review discussion on adafruit/circuitpython#11115: RAM-only core1 is a CircuitPython requirement, so it'll be handled on the CircuitPython side by placing panic() itself in RAM via the linker script.

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