While working on a driver for z85230 based board I noticed what looks like it could be a problem. If the interrupt handler is handling an interrupt on port b and an interrupt comes in for port a, it seems to me that the port b handler would be called instead of the port a handler, and possibly hang the board until reset.
Attached is a patch to set the irq methods back to port a before attempting to call them.
Cheers, Tom.
--- linux-2.6.10/drivers/net/wan/z85230.c 2004-12-24 16:33:49.000000000 -0500 +++ /home/watsontj/z85230.c 2005-02-23 15:26:32.911085451 -0500 @@ -734,7 +734,7 @@ u8 intr; static volatile int locker=0; int work=0; - struct z8530_irqhandler *irqs=dev->chanA.irqs; + struct z8530_irqhandler *irqs; if(locker) { @@ -758,6 +758,8 @@ /* Now walk the chip and see what it is wanting - it may be an IRQ for someone else remember */ + irqs=dev->chanA.irqs; + if(intr & (CHARxIP|CHATxIP|CHAEXT)) { if(intr&CHARxIP)