On Sat, 13 Jan 2007, Finn Thain wrote:
On Fri, 12 Jan 2007, Michael Schmitz wrote:
And it would appear that IDE used to be polled from the VIA1 IRQ
handler (I guess the F108 chip is another of Apple's mysteries...)
I think we found out the interrupt source for IDE? That polling would
then be leftover crud and should be killed.
Yeah, the polling code is #if 0. Which is fine by me.
I'm guessing that possibly the interrupt is not being ack'd correctly
(perhaps the act of testing it clears it)... or maybe slot F doesn't get
latched like the others (perhaps because it is effectively cascaded 3
deep). I need to do more experimentation.
I've finally fixed it! (I started on these irq patches in 2005...)
There's nothing wrong with the IDE driver. But nubus is another story
altogether... basically, the fix is,
1. Don't exit the nubus interrupt handler until there's no irq flagged.
2. On VIA2-based macs, don't attempt to disable nubus slots by making the
IRQ lines outputs and then driving them high (!)
3. Since there's no slot irq mask on these macs, don't attempt to disable
nubus slots individually -- just mask the VIA2 CA1 interrupt. That way
no nubus interrupts go missing.
4. When using the A/UX irq scheme, install sonic irq handlers on BOTH slot
9 and auto vector 3 -- otherwise, the 1-in-100000 slot 9 interrupt
kills us.
Here's the diff's (comments welcome):
http://www.telegraphics.com.au/~fthain/patches/quilt/irq-prep
http://www.telegraphics.com.au/~fthain/patches/quilt/irq-plan-c
http://www.telegraphics.com.au/~fthain/patches/quilt/macsonic-via-alt-mapping
This also fixes the same bug on my Q650 -- onboard sonic (with A/UX irq
scheme) and a nubus card as well (ethernet NIC instead of IDE) :-)
-f
-
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html