You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Shared GIO interrupt bits have no wired-OR between heads/slots #262
Two graphics heads (or GIO slots) that share an IOC status bit overwrite each other's level: there is no wired-OR between them.
Ioc::set_interrupt sets or clears the L0/L1 bit straight from the caller's level. On the Indy, head 1's FIFO interrupt also uses FifoFull; on the Indigo2, every slot's GioSg*/GioS0*/GioS1* variant sets the same shared GRAPHICS / FIFO_FULL / VERTICAL_RETRACE bit. So when one head deasserts while the other still asserts, the shared bit drops and the second head's interrupt is lost until it is raised again.
A fix would keep each source's level and OR them per status bit (the EXT_IO per-slot bits already tell the slots apart). Found while moving the IOC onto InterruptController (#261), which keeps today's behaviour.
the 2nd head on indy needs to use different interrupts but we have to experiment with that to figure out which interrupts 2nd head should use. docs are not super clear on that.
as for indigo2 yes, they set these ints by design together and irix acks them together afaik, but they should be multiplexed by ext io.
if not we should fix it and test multihead.
so we need a brave soul to run indy and indigo2 multihead and figure out exact interrupt mappings for both.
the last time i researched this docs/interrupt_map.md
Activity
techomancer commentedon Oct 22, 2026
the 2nd head on indy needs to use different interrupts but we have to experiment with that to figure out which interrupts 2nd head should use. docs are not super clear on that.
as for indigo2 yes, they set these ints by design together and irix acks them together afaik, but they should be multiplexed by ext io.
if not we should fix it and test multihead.
so we need a brave soul to run indy and indigo2 multihead and figure out exact interrupt mappings for both.
the last time i researched this docs/interrupt_map.md