solution to printk() blocking interrupts?

Jon Smirl jonsmirl at gmail.com
Mon Sep 22 23:45:21 EST 2008


On Mon, Sep 22, 2008 at 7:21 AM, Sergei Shtylyov
<sshtylyov at ru.mvista.com> wrote:
> Hello.
>
> Jon Smirl wrote:
>
>>> Does anyone have a solution to the problem of printk() to a serial
>>> console blocking interrupts for too long? I'm losing interrupts I need
>>> because my hardware is getting overrun.
>>>
>
>  It's a strange piece of hardware that loses interrupts on getting overrun.
> :-)

The 4 second pause slows down the debug/test cycle a lot. I'm using a
net booted monolithic kernel on the hardware and using the reset
button every time I make a change.

When you boot there are two classes of output, printk() output and
users space generated output. Right now I'm getting the printk()
output. Is there some way to see the user space output so that I can
tell if a user space server failed to start?

I changed poll to this code, but I don't know how network drivers
work. I can make changes and test them if you tell me what needs to be
fixed.


#ifdef CONFIG_NET_POLL_CONTROLLER
static void mpc52xx_fec_poll_controller(struct net_device *dev)
{
	struct mpc52xx_fec_priv *priv = netdev_priv(dev);

	disable_irq(priv->t_irq);
	mpc52xx_fec_tx_interrupt(priv->t_irq, dev);
	enable_irq(priv->t_irq);
	disable_irq(priv->r_irq);
	mpc52xx_fec_rx_interrupt(priv->r_irq, dev);
	enable_irq(priv->r_irq);
}
#endif






-- 
Jon Smirl
jonsmirl at gmail.com



More information about the Linuxppc-dev mailing list