Re: [PATCH] macb: Add support of the netpoll API

David Miller
2009-04-17T08:34:58Z

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Thu, 16 Apr 2009 11:24:35 +0200

> Le Thu, 16 Apr 2009 11:07:53 +0200,
> Haavard Skinnemoen <haavard.skinnemoen@atmel.com> a écrit :
>
>> Hmm...is this safe? What if printk() is called from the macb interrupt
>> handler?
>
> I'm not sure, but that strategy is used in most drivers supporting the
> netpoll API (3c509.c, 8139cp.c, 8139too.c, b44.c, bfin_mac.c,
> bnx2x_main.c, etc.). It also seems to be the way suggested by netpoll
> author, http://oss.sgi.com/archives/netdev/2003-10/msg00800.html.
>
> disable_irq() only disables the macb IRQ line. Is that an issue for
> printk() execution ?

And in response to this Haavard explained the potential deadlock
(sorry I deleted that email) and suggested to use local_irq_save()

But that won't work either, because it doesn't prevent the interrupt
handler from running on other cpus, it only prevents that on the
local cpu.

But I do wonder, because a lot of drivers do in fact use that
disable_irq() scheme to implement ->poll_controller().

I suppose one just needs to be careful about using printk from
the interrupt handler when supporting netpoll.