mpc83xx_restart() uses ioremap(), which doesn't like
beeing called while in IRQ context.
Calling mpc83xx_restart() in IRQ context yields OOPS
which calls mpc83xx_restart() again and the loop never
termintes.
Jocke
On Dec 27, 2006, at 6:45 PM, Tjernlund wrote:
mpc83xx_restart() uses ioremap(), which doesn't like
beeing called while in IRQ context.
Calling mpc83xx_restart() in IRQ context yields OOPS
which calls mpc83xx_restart() again and the loop never
termintes.
This is interesting, I know I've seen restart work properly w/o an
oops. How are you causing the restart?
- k
Kumar Gala wrote:
On Dec 27, 2006, at 6:45 PM, Tjernlund wrote:
quoted
mpc83xx_restart() uses ioremap(), which doesn't like
beeing called while in IRQ context.
Calling mpc83xx_restart() in IRQ context yields OOPS
which calls mpc83xx_restart() again and the loop never
termintes.
This is interesting, I know I've seen restart work properly w/o an
oops. How are you causing the restart?
sysrq-b triggers it, as probably does crashing from an interrupt handler
with panic_timeout nonzero. You'll need CONFIG_DEBUG_SPINLOCK_SLEEP
turned on, of course.
-Scott
-----Original Message-----
From:
linuxppc-dev-bounces+joakim.tjernlund=transmode.se@ozlabs.org
[mailto:linuxppc-dev-bounces+joakim.tjernlund=transmode.se@ozl
abs.org] On Behalf Of Scott Wood
Sent: den 30 december 2006 00:04
To: Kumar Gala
Cc: Tjernlund; 'linuxppc-dev'
Subject: Re: mpc83xx_restart() buggy
Kumar Gala wrote:
quoted
On Dec 27, 2006, at 6:45 PM, Tjernlund wrote:
quoted
mpc83xx_restart() uses ioremap(), which doesn't like
beeing called while in IRQ context.
Calling mpc83xx_restart() in IRQ context yields OOPS
which calls mpc83xx_restart() again and the loop never
termintes.
This is interesting, I know I've seen restart work properly w/o an
oops. How are you causing the restart?
sysrq-b triggers it, as probably does crashing from an
interrupt handler
with panic_timeout nonzero. You'll need CONFIG_DEBUG_SPINLOCK_SLEEP
turned on, of course.
For me it was http://ozlabs.org/pipermail/linuxppc-dev/2006-December/029414.html
ucc_geth_timeout() is buggy and so is ucc_geth_start_xmit(), needs to
return NETDEV_TX_BUSY or NETDEV_TX_OK.
Jocke