Subject: Re: mysterious interrupt during boot()
To: None <port-i386@NetBSD.ORG, tech-kern@NetBSD.ORG>
From: Matthias Drochner <drochner@zelux6.zel.kfa-juelich.de>
List: port-i386
Date: 02/11/1997 14:05:27
Excerpts from netbsd: 7-Feb-97 mysterious interrupt during.. Matthias
Drochner@??? (2654)

(followup to my own mail)

> But the "failure" message comes from the elink3 interrupt routine,
> and as I understand it, there should not be an interrupt at this time.
> boot() calls a splhigh() before the shutdownhooks.

It should (and doshutdownhooks(9) claims so), but under some
circumstances it does not:
In configure(), interrupts are enabled after device autoconfiguration.
Then setroot() etc are called. At the end, the global "cold" is set to 0.
boot() uses "cold" to decide if the interrupts have to be disabled. If
"cold" is still 1 but interrupts are already enabled, doshutdownhooks()
will be called with interrupts enabled.
This is what happens if one types "halt" at the "boot device" prompt.
(and what made my system hang forever)
So things are less mysterious then they appeared in my first mail.

This is obviously a bug, and I just sent a pr. I used category i386,
but from a look at the sources, other ports seem to have the same
problem.

best regards
Matthias Drochner