Re: 2.6.24-rc1 fails with lockup - /sbin/ifconfig / inet_ioctl() / dev_close() / rtl8169_down()

Stephen Hemminger
2007-10-26T16:50:16Z

On Fri, 26 Oct 2007 08:37:33 +0200
Ingo Molnar <mingo@elte.hu> wrote:

>
> * Romano Giannetti <romanol@upcomillas.es> wrote:
>
> > > Does this help?
> >
> > I tried this, but although I have the D-state processes, I cannot see
> > any debug trace now. Results are at:
> >
> > http://www.dea.icai.upcomillas.es/romano/linux/info/2624rc1_3/
> >
> > Can I try anything more? This is quite a show-stopper for me... and
> > before trying to bisect 11Mbyte of patches...
>
> hm, from your log it appears that lockdep did not find anything, still
> the hang does trigger.
>
> it's /sbin/ifconfig and inet_ioctl() / dev_close() / rtl8169_down() that
> seems to be hanging. I've extracted the relevant backtrace below. I've
> Cc:-ed people who might have a better idea about what's going on.
>
> Ingo

Are you building with NAPI enabled or not. Looks like the following
might help the non-napi case.

--- a/drivers/net/r8169.c 2007-10-24 21:38:43.000000000 -0700
+++ b/drivers/net/r8169.c 2007-10-26 09:46:07.000000000 -0700
@@ -2989,13 +2989,16 @@ static void rtl8169_down(struct net_devi
{
struct rtl8169_private *tp = netdev_priv(dev);
void __iomem *ioaddr = tp->mmio_addr;
- unsigned int poll_locked = 0;
unsigned int intrmask;

rtl8169_delete_timer(dev);

netif_stop_queue(dev);

+#ifdef CONFIG_R8169_NAPI
+ napi_disable(&tp->napi);
+#endif
+
core_down:
spin_lock_irq(&tp->lock);

@@ -3009,11 +3012,6 @@ core_down:

synchronize_irq(dev->irq);

- if (!poll_locked) {
- napi_disable(&tp->napi);
- poll_locked++;
- }
-
/* Give a racing hard_start_xmit a few cycles to complete. */
synchronize_sched(); /* FIXME: should this be synchronize_irq()? */

--
Stephen Hemminger <shemminger@linux-foundation.org>