在 2010-01-21四的 01:51 -0500,Mike Frysinger写道:
> On Wed, Jan 20, 2010 at 23:40, graff.yang wrote:
> > 在 2010-01-21四的 11:57 +0800,Li Yi写道:
> >> On Wed, 2010-01-20 at 05:56 -0500, [email protected] wrote:
> > There is some difference in implementing nmi watchdog on bf561 compare
> > to x86.
> > On x86, the touch_nmi_watchdog() only set a per-cpu variable named
> > touched.
> > The nmi handler, do_nmi(), will periodical(5 sec) check this variable
> > and reset the watchdog.
> > On bf561, all above work is done by check_nmi_watchdog(). The do_nmi()
> > will never be called until there is a lockup.
> > Currently, the nmi handler need to save/restore all core registers, turn
> > off/on D-cache, (I-cache seems not necessary), so I think its a heavy
> > overhead.
> > If every one think its acceptable to do_nmi() every 5 seconds, I will
> > change this behavior.
> 
> the less often NMI is executed, the better.  there are anomaly
> workarounds that involve turning off interrupts so that the sequence
> is not interrupted, but a random NMI will break that.  if that means
> more overhead at runtime, well so be it.
> -mike
Another problem of the nmi handler is that, for smp, we are lack of
scratch reg for temporary save the SP. The exceptions have to use RETE,
when nmi is enabled, so nmi handler have to use cycles/cycles2, which
may be using by user. So after discussed with Sonic, and YiLi, the nmi
handler will not return once detected a lockup.
In order to lower the tick timer's workload, we need setup a timer to
periodically call check_nmi_watchdog().
-Graff


_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to