Re: nmi_watchdog suspicious

Cyrill Gorcunov
2008-06-18T16:39:54Z

[Maciej W. Rozycki - Wed, Jun 18, 2008 at 05:06:29PM +0100]
| On Tue, 17 Jun 2008, Cyrill Gorcunov wrote:
|
| > Thanks a lot Maciej for comments! I've marked them. I'm not sure but it seems
| > I wrote a bit unclear /my english bad indeed/ ;) I mean - this say 'slipping'
| > (ie useless code executions) _was_ before the patch applied. Now it doesn't
| > slip on this since we do mention explicitly in which case there should be
| > alert counters reset. Other then that - will try to handle your notes. Thanks!
|
| It will happen regardless if touch_nmi_watchdog() is called before the
| NMI watchdog has been set up in setup_nmi() or lapic_watchdog_init(). It
| may also happen during that window if an NMI is signalled without any NMI
| status bits set in the Port B register at 0x61 -- in theory that should
| not happen except for a broken configuration, but reality out there seems
| to be quite creative about breakage.
|
| Maciej
|

Maciej, it seems we are talking about different code snippets ;)
I'm talking only about touch_nmi_watchdog(). By now (in -tip tree
we have)

void touch_nmi_watchdog(void)
{
if (nmi_watchdog == NMI_LOCAL_APIC ||
nmi_watchdog == NMI_IO_APIC) {
unsigned cpu;
...

so we check explicitly the values (so if touch_nmi_watchdog
was called when nmi_watchdog = 0 or -1U this code will not
be executed anyway). So I think I'm a bit lost, Maciej... I just
can't figure out what is wrong with this code, so please help
me ;). If you're talking about apic code in _general_ design
then...well, I think I need some time to _understand_ the code
say byte-by-byte first.

- Cyrill -