>> Beautiful. The patch works! I now get DHCP replies. >> >> Is this the patch you will put into the official tree, or do you still >> need to do more? >> >> > > One thing, could you confirm that your network card relies on edge interrupts > (and not level)? > > Aside of that, it should be ok. It's the same IRQ lock out issue fixed in the > ppc/ branch recently. > > Sorry for the delay in getting back to you - vacation. The ethernet interrupts on the PPC440 are level-sensitive. I gather that is not what you were expecting, so I wonder what the implications are. After looking at it more closely, I don't really understand this fix. uic_mask_ack_irq() is just uic_mask_irq() followed by uic_ack_irq(). So, why do you remove the ipipe_irq_lock() from uic_mask_ack_irq() and not from uic_mask_irq()? Also, since uic_unmask_irq() always calls ipipe_irq_unlock(), doesn't that mean you can wind up with more unlocks than locks (since uic_mask_ack_irq/uic_unmask_irq are no longer balanced)? >> Also, please include my compile-time patch, if that is acceptible. >> >> > > I recently committed a different fix for the same issue after you reported it. > This should work without requiring additional #ifdef'ing as well. Thanks for the > heads up. > > --- a/include/asm-powerpc/ipipe.h > +++ b/include/asm-powerpc/ipipe.h > @@ -62,8 +62,6 @@ > local_irq_enable_hw(); x; \ > } ) > > -#define ipipe_update_tick_evtdev(evtdev) do { } while (0) > - > struct ipipe_domain; > > struct ipipe_sysinfo { > @@ -209,4 +207,6 @@ do { \ > > #endif /* CONFIG_IPIPE */ > > +#define ipipe_update_tick_evtdev(evtdev) do { } while (0) > + > #endif /* !__ASM_POWERPC_IPIPE_H */ > Ok - thanks. I'll apply that fix instead. Steve