On Tue, 2006-01-03 at 01:03 +0100, Francois Romieu wrote: > Can you try and report two things: > - apply the patch below with your current config and carefully install/test; > - if it does not work better, enable CONFIG_SMP with/without CONFIG_PREEMPT.
Francois: Sorry it took me a while to get back to this, but I've now had a chance to test this against (now-released) 2.6.15 (final). Unfortunately, the bug seems to recur on all 12 combinations of patched & stock 2.6.15, SMP/no-SMP, and all three PREEMPT settings (yes, no, and CONFIG_PREEMPT_VOLUNTARY). (Just to remind everyone, this is a GA511 PCMCIA NIC that consistently gives a soft hang during bootup, without an ethernet cable inserted.) Since that generated quite a bit of testing output, I'm not attaching it here. Instead, I've made the entire matrix of information available at http://www.steinthal.us/r8169-testing. There I've included uname -a output, kernel config file, dmesg output, syslog output, and the r8169.ko for each configuration (as you requested last time). In case it helps anyone, I've also made available the home-built .deb packages I used for testing. If nothing else, all of this compiling put my dual Xeon server to good use building test packages. :) Thanks again for the help --- if you have any other ideas or things you'd like me to test, let me know. -Russell > diff --git a/include/linux/spinlock_api_up.h b/include/linux/spinlock_api_up.h > index cd81cee..94e243f 100644 > --- a/include/linux/spinlock_api_up.h > +++ b/include/linux/spinlock_api_up.h > @@ -37,16 +37,16 @@ > do { local_irq_save(flags); __LOCK(lock); } while (0) > > #define __UNLOCK(lock) \ > - do { preempt_enable(); __release(lock); (void)(lock); } while (0) > + do { __release(lock); preempt_enable(); (void)(lock); } while (0) > > #define __UNLOCK_BH(lock) \ > do { preempt_enable_no_resched(); local_bh_enable(); __release(lock); > (void)(lock); } while (0) > > #define __UNLOCK_IRQ(lock) \ > - do { local_irq_enable(); __UNLOCK(lock); } while (0) > + do { __UNLOCK(lock); local_irq_enable(); } while (0) > > #define __UNLOCK_IRQRESTORE(lock, flags) \ > - do { local_irq_restore(flags); __UNLOCK(lock); } while (0) > + do { __UNLOCK(lock); local_irq_restore(flags); } while (0) > > #define _spin_lock(lock) __LOCK(lock) > #define _read_lock(lock) __LOCK(lock) > -- Russell Steinthal <[EMAIL PROTECTED]> - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html