Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ envmon(7) — Motorola System V 88k Release 4 Version 4.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

envctl(1M)

envdiag(1M)

envmon(1M)

prtconf(1M)

intro(2)

poll(2)

select(2)

sysm88k(2)

envmon(7)  —  SPECIAL FILES AND DEVICES

NAME

envmon − Environment Monitor Board driver

DESCRIPTION

The envmon driver provides a character-device interface to the Environment Monitor Board (ENVMON) on both Series 8000 (Delta) and Series 900 chassis.  Sometimes this board is also referred to as the EMB.  The functionality on the Series 900 chassis is different from the Series 8000, but the interface remains the same between the two.  Information passed between the driver and a user process varies according to the functionality of the particular ENVMON board.  UPSs communicate with the system either with a special interface available with certain UPSs or through a serial interface.  The ENVMON board communicates directly with the UPS through the special interface and controls the UPS with power-off commands.  These commands are not available on any system that uses a serial interface between the UPS and the system.  The ENVMON driver does not do serial communication with any UPS system.  This responsibility lies with user processes. The ENVMON board itself is responsible for the following:

—Monitoring and controlling the state of an external Uninterruptable Power Supply (UPS).  Monitoring of AC-FAIL and Low-Battery conditions is provided, along with control of AC output from the UPS.  (Series 8000 only)

—Monitoring and controlling the state of one to four External Chassis (typically 3 plus a UPS).  (Series 8000 only) Monitoring of AC-FAIL and Over-Temperature is provided, along with control of external chassis DC-power. 

—Monitoring the state of up to four Internal Chassis temperature sensors. 

—Monitoring and controlling the state of the Internal Power Supply (low-voltage, enable/disable). 

—Host notification, via VME Interrupt and VME-accessible status registers, of any AC-FAIL, Over-Temperature, or UPS Low-battery conditions. 

—System reset, system power-off, or UPS and external chassis power-off under host program control.  (UPS power-off on Series 8000 only)

—Automatic power-off of the system and/or UPS and external chassis, upon persistent Over Temperature condition.  The Series 900 powers off after the temperature reaches a second trip point.  The Series 8000 sets a 14 minute timer before removing power.  The UPS is powered off only on Series 8000 systems with an ENVMON interface. 

—Transition-module push-buttons and remotable contacts for system Reset and Abort interrupt. 

The envmon driver provides the following:

—Access (via ioctl(2)) to the ENVMON current status.  Board registers are not directly accessible, but all information is available. 

—Indirect or direct write access (via ioctl) to the ENVMON control register, for generating test interrupts, generating VME SYSRESET, signalling all external units (including UPSes (Series 8000 only)) to turn off their power, or latching off internal and external power. 

—Synchronous notification (via select(2) and poll(2)) of exception conditions such as high temperature. 

—Interface from uadmin(2) system call to ENVMON control register, that controls system shutdown behavior. 

—Immediate power off if high temperature is detected during boot time. 

—Handling of orderly system shutdown when the front panel power switch is turned off. 

—Handling of ENVMON Abort switch interrupts by trapping to the configured debugger (ROM or kdb). 

SYSTEM CALL INTERFACES

The following system calls and semantics are defined for the envmon interface:

Open/Close
Opening the device allows I/O from/to the resultant file descriptor. Only the super-user may open for write. File permissions on the device node may further restrict access.

Upon success, open(2) returns a file descriptor.  On error, -1 is returned, and errno is set to indicate the error. 

[ENXIO]
No envmon board is installed on the system or the transition board is not properly connected. 

[EPERM]
Attempt to open for write by non super-user.

Issuing a close has no effect on the driver or the ENVMON other than to disassociate the driver from the passed file descriptor. 

Read/Write
There is no direct read/write access provided by the driver. Such calls will return -1, with errno set to [ENODEV]. 

Ioctl

#include <sys/types.h>
#include <sys/envmon.h>
int ioctl (s, request, arg)
int s, request;
int arg;
or
int ∗arg;
or
ushort ∗arg;
or
struct emb_stat ∗arg;

The following table shows the ioctl requests defined for the envmon driver; a description for each follows the table. 

Request Arg Action
EMBGETSTAT struct emb_stat ∗ Get current ENVMON board status
EMBXTUOFF NULL Power off all externally connected units
EMBPWRDOWN NULL Latch internal and external power off
EMBTESTINT NULL Generate ENVMON test interrupt
EMBSYSRESET NULL Generate VME SYSRESET
EMBARM int ∗ Set up ENVMON interface to uadmin(2)
EMBDISARM NULL Reset ENVMON interface to uadmin(2)
EMBWRTCMD ushort ∗ Write arbitrary value to Command Register
EMBMSGDISP int Set up to display hitemp console messages
EMBPWROFFOPTION int Set power switch off option
EMBPWROFFTIMO int Set power switch off timeout

The device must be open for reading to use the EMBGETSTAT command.  For all other commands, the device must be open for writing. 

EMBGETSTAT
This request retrieves all current status that is available and stores it into the emb_stat structure pointed to by arg.  The emb_stat structure varies according to the ENVMON board type.  The driver reads all board registers twice before retrieving the information, so any previously latched, but no longer existent failure bits are not presented.  Macros are provided, in envmon.h, to decode the information in the emb_stat structure.  The macros may be used as booleans, to determine the existence and nature of any failure conditions present, and/or to identify which devices are affected.  Conditions in the emb_stat structure are represented by bitfields and masks.  Bits set in the mask define which units exist in the system.  Units in the mask begin from the least significant bit.  Unit 1 corresponds to the least significant bit in the mask.  Bits set in the bitfield inform that the condition exists for that unit.  Bits in the bitfield are undefined if the corresponding bit in the mask is not set.  The Series 900 may show that a SCSI power fail condition exists when it doesn’t.  The value in the status structure is taken from an ENVMON board register that is not reset when the system is powered up.  The only action that resets the register is an ENVMON reset.  A normal SYSRESET does not reset the register.  Due to this behavior, caution is advised when using the S900U_SCSI_PWR_FAIL macro.  The macro may show that a SCSI power fail has occurred when it hasn’t.

EMBXTUOFF
This request causes the ENVMON to send the power-off signal to all attached external units.  On a Series 900 chassis, the main CPU chassis is also powered off.  If a UPS is attached to a Series 8000 chassis, this should cause it to disengage its inverter and cease running on batteries, thus powering off the system and any other devices attached to the UPS.  UPSs that communicate via a serial interface are not affected by the power-off signal. There may be no return from this operation.  It should only be used on a quiescent system.  It is recommended that this command be issued indirectly, via the EMBARM interface.  If an attached UPS is not running on batteries, the result of this command on the UPS is UPS-specific.  It may continue to run, until AC power is actually interrupted, at which time it would likely remove power to the system immediately.

EMBPWRDOWN
This request causes the ENVMON to turn off the system internal power supply, and also send the power-off signal to all attached external units.  The board latches itself in this state until physically reset by an operator. There is no return from this operation.  It should only be used on a quiescent system.  It is recommended that this command be issued indirectly, via the EMBARM interface.  See the CAVEATS section for other concerns regarding EMBPWRDOWN. 

EMBTESTINT
This request causes the ENVMON to generate a test interrupt to the system.  This should, in turn, cause one selecting or polling process to be awoken.  Only one process is woken for the test interrupt unless other exception conditions exist at that time.  Subsequent EMBGETSTAT calls do not show that the test interrupt bit is set, as it will have been cleared by the interrupt service routine. 

EMBSYSRESET
This request causes the ENVMON to generate a VME SYSRESET signal on the VME bus. There is no return from this operation.  It should only be used in emergencies on a quiescent system. 

EMBARM
This request exploits a hook in the uadmin(2) interface in the kernel, causing it to call the ENVMON driver with the integer request pointed to by arg, just prior to entering its infinite loop.  This loop is normally entered when a system halt is requested with an invocation of the command:

uadmin  x  0
(or the equivalent system call uadmin(x, AD_HALT)).

If x is A_SHUTDOWN [2], all processes are killed, and the root filesystem unmounted before the ENVMON request is executed.  This indirect method of executing the EMBXTUOFF, EMBPWRDOWN, or EMBSYSRESET commands should be used to ensure that root is unmounted prior to system power-down or reset.  It is primarily designed to be used after an automatic shutdown due to an over-temperature condition, or an AC power failure (when attached to a UPS).  If uadmin issues the EMBXTUOFF command when a UPS is attached on a Series 8000 chassis (as indicated in emb_ups_mask), it waits 10 seconds and then issues an EMBSYSRESET.  This is done in the event that an attached UPS ignores the power-off signal if AC power has returned.  By default, uadmin is not armed to execute any ENVMON command after an AD_HALT request, unless the emb_halt_pwrdown master.d parameter has been set (see the MASTER.D PARAMETERS section).  The EMBARM request has no effect on the uadmin behavior after an AD_BOOT or AD_IBOOT request.  This is controlled by the emb_boot_reset master.d parameter (see the MASTER.D PARAMETERS section). 

EMBDISARM
arg is unused and should be NULL.  This request causes uadmin to revert to the default response to an AD_HALT request, which is controlled by the emb_halt_pwrdown master.d parameter (see the MASTER.D PARAMETERS section). 

EMBMSGDISP
This request causes the ENVMON driver to issue console messages when high temperature conditions exists.  The messages are issued whenever an interrupt is taken and the high temperature condition exists.  Note that this occurs no more frequently than every 10 seconds because of the interrupt debounce. Once a high temperature condition occurs and stays set, additional high temperature conditions may not generate an interrupt.  The hardware only generates an interrupt when it sees a change in the status registers.  Thus, console messages may not be issued for additional high temperature conditions due to the absence of the interrupt.  The user may poll for status every few seconds using EMBGETSTAT to see the current state of the high temperature condition and any new high temperature conditions that may appear.  The integer argument defines the disposition of console high temperature messages.  This value can be either EMB_NO_HITEMP_MSGS or EMB_DISPLAY_HITEMP_MSGS, both of which are defined in envmon.h.  The default setting, controlled by the emb_hitemp_msg_disp master file parameter, is EMB_DISPLAY_HITEMP_MSGS. 

EMBPWROFFOPTION
This request causes the ENVMON driver to enable or disable the power switch off option. The integer argument determines the configuration requested. The default setting, controlled by the emb_orderly_pwroff master file parameter, is EMB_PWROFF_NONE. 

EMB_PWROFF_NONE
This request causes the power switch off option to be disabled. Turning the power switch off in this configuration leads to the abrupt removal of power.

EMB_PWROFF_KERNEL
This request causes the kernel to initiate an orderly shutdown when the power switch is turned off.  The kernel maintains control of the shutdown during its entire process and ensures that the system is powered off.  All processes are signalled with SIGPWR. A timer is started that removes power at some future time regardless of the state of the system.  The timer length is controlled by the emb_pwr_off_timeout master.d parameter (see the MASTER.D PARAMETERS section). 

EMB_PWROFF_TIMER_ONLY
This request causes the kernel to start the same shutdown timer that is started when EMB_PWROFF_KERNEL is configured.  The kernel does not initiate any system shutdown.  It merely starts the timer.  The system shutdown is entirely the responsibility of a user process.  Since all processes are signalled with SIGPWR, the process can catch the SIGPWR signal and examine the ENVMON status to determine that the power switch really has been turned off before initiating the system shutdown. 

Once an orderly shutdown has commenced, turning the power switch on, and then off again, causes an immediate removal of power.  No messages are issued.  This is intended to be used in extreme emergencies. 

EMBPWROFFTIMO
This request causes the ENVMON driver to change the timeout value for the shutdown timer.  The integer argument is the timeout value in seconds. The shutdown timer is started whenever the user turns off the power switch.  If the system has not shut down within that period of time, the shutdown timer removes power regardless of the current state of the system.  A shutdown timer value should be chosen to allow for a complete system shutdown to complete. The default value, controlled by the emb_pwr_off_timeout master file parameter, is 600 seconds (10 minutes).  The maximum value of the timer is 2147 seconds (35 minutes). 

EMBWRTCMD
arg should be a pointer of type ushort.  This request writes the value pointed to by arg to the Command register of the ENVMON. 

The value written must include the EMBENACMD bit if ENVMON interrupts are to be enabled. 

The use of this command should be strictly avoided.  It may disappear in future releases. 

Upon success, ioctl(2) returns 0.  On error, -1 is returned, and errno is set to indicate the error. 

[EBADF]
A request other than EMBGETSTAT was made, but the device is not open for writing. 

[EFAULT]
An argument points to an invalid or protected part of the process address space.

[EINVAL]
Either an illegal ioctl command was given, or an illegal argument was given. 

[EPOWERFAIL]
A request was made while the system was performing an orderly shutdown resulting from the power switch being turned off. The EMBPWROFFOPTION, EMBARM, and EMBDISARM commands all fail in this situation. 

Select
It is possible to select on an envmon file descriptor for exception conditions.  As long as no exception condition exists, select will sleep (the length is controlled by the timeout argument; see select(2)).  When the ENVMON interrupts due to a power, temperature, or test interrupt, select returns an FD_SET indicating that the envmon file descriptor has an exception condition pending, the nature of which can be read with the EMBGETSTAT ioctl request.  select returns immediately if any exception condition exists.  Thus, select cannot be used to wait for new exception conditions.  Also, select cannot be used to wait for an exception condition to be cleared.  Once an exception condition has been raised, it is necessary to poll for status changes using EMBGETSTAT.  See EMBMSGDISP above for further information on this situation.  NOTE:  On temperature-sensor conditions, the ENVMON can interrupt thousands of times while a sensor crosses through or hovers near its threshold temperature.  The driver attempts to de-bounce this effect by disabling ENVMON interrupts for 10 seconds whenever an interrupt is received.  It is possible, however, for a select to return an FD_SET indicating an exception condition, but for that condition to not exist when an EMBGETSTAT is performed, or to exist for random EMBGETSTAT requests.  This may continue indefinitely until the temperature rises sufficiently above the threshold value to stabilize the condition. 

Poll
It is also possible to poll an envmon file descriptor for out-of-band data similar to using select for exception conditions.  Use POLLRDBAND as the requested event. 

Driverinfo
The ENVMON driver includes driverinfo(D2DK) routines that implement the DXGETEDT and D_FRU_STATUS commands.  Although, strictly speaking, the ENVMON driver does not support subdevices, it reports extended EDT information about devices connected to it, such as external SCSI chassis (Series 8000) and VME expansion chassis (Series 900).  The DXGETEDT request returns information in the following manner.  The "devices" associated with a Series 8000 are numbered 1 through 4 corresponding to the connector numbers on the transition module.  The device types are determined by the state of pins 3 and 4 of the connectors.  If pin 3 is grounded then "external-scsi-chassis" is returned in the xedt structure; if pin 4 is grounded then "ups" is returned.  If both pins 3 and 4 are grounded then "problem-with-device" is returned.  The number of extended EDT entries is equal to the number of connected devices that either indicate "external-scsi-chassis", "ups", or "problem-with-device" based on the state of pins 3, 4, and 5.  The "devices" associated with a Series 900 are numbered 1 through 3 corresponding to the VME expansion chassis.  If the expansion chassis is present, then "vme-expansion-chassis" is returned.  The D_FRU_STATUS request returns information in the following manner.  The following fields in the dinfo_fru_status structure are filled: fru_present, fru_revision, fru_online, fru_self_test, and fru_location.  All fields are filled according to the rules specified in the driverinfo(D2DK) man page.  fru_revision is always "unknown", since the ENVMON board does not expose any software accessible revision information.  fru_location specifies the "address" at which the board registers may be accessed and the type of "chassis" that the ENVMON board is running in: "series900" or "delta".  fru_location for subdevices is filled differently.  The address is given in like manner, but instead of a "chassis" type, a "unit" number is given instead.  Series 8000 chassis report about external SCSI chassis and UPS units.  Series 900 chassis report about VME expansion chassis units. 

Upon success, the driverinfo(D2DK) routines return 0.  On error, the following errors are returned.  sysm88k(2) sets errno appropriately. 

[ENXIO]
No envmon board is installed on the system or the transition board is not properly connected. 

[EINVAL]
The length argument given is insufficient to hold all of the information that must be returned.

[EFAULT]
An argument points to an invalid or protected part of the process address space.

MASTER.D PARAMETERS

The following may be set in the /etc/master.d/envmon file. 

emb_boot_reset
When set to 1, the EMBSYSRESET command is sent to the ENVMON whenever uadmin(1M) or uadmin(2) is invoked to do the BOOT or IBOOT function.  This parameter is set to 1 by default. 

emb_halt_pwrdown
When set to 1, the EMBPWRDOWN command is sent to the ENVMON whenever uadmin(1M) or uadmin(2) is invoked to do the HALT function.  When set to 0, the ENVMON is not, by default, sent any command in response to the HALT request. This parameter is set to 0 by default.  The default behavior is overidden by invoking the EMBARM ioctl to specify the ENVMON command to be sent.  Invoking the EMBDISARM ioctl reverts to the default behavior as controlled by emb_halt_pwrdown. 

emb_hitemp_boottst
When set to 1, the ENVMON board initialization sequence tests for high temperature conditions.  If such a condition is found, then the system automatically powers off after printing a console message describing the offending high temperature condition. There is no override during the initialization sequence once a high temperature condition is found. When set to 0, no high temperature conditions are checked during initialization. This parameter is set to 0 by default.

emb_hitemp_msg_disp
When set to 1, console messages are issued when high temperature conditions are detected. When set to 0, no console messages are ever issued by the kernel.  A user process may obtain status via the EMBGETSTAT ioctl and perform whatever console notification is necessary.  This parameter is set to 1 by default. 

emb_orderly_pwroff
When set to 0, the system abruptly removes power when the power switch is turned off.  This is the default setting.

When set to 1, the system attempts to bring the system down in an orderly manner when the front panel power switch is turned off.  Systems that are up multiuser begin an immediate

init  0
Systems that are in single user mode begin an immediate

uadmin  2  0
When the system is down, power is removed.  Note that any arrangements made with the EMBARM ioctl are still honored prior to removing power.  The EMBARM requested command may itself remove power.  When set to 2, the system starts a shutdown timer for emb_pwr_off_timeout seconds and lets a user process initiate system shutdown. The orderly power off functionality is not available on 12 slot Series 8000 chassis.  Turning off the power switch on one of these chassis results in an immediate removal of power.

emb_pwr_off_timeout
This variable controls the length of time from the power switch being turned off to the final, irrevocable removal of power.  In the event that the system does not power off (due to system panic or hang), power is removed after the delay specified by this variable.  The variable specifies time in seconds. The maximum value is 2147 seconds (35 minutes). The default value of this parameter is 600 seconds (10 minutes).

emb_bad_init_system_halt
This variable controls whether the system’s behavior during initialization if the ENVMON board fails to initialize correctly.

When set to 1, the system halts.  The failure that caused the halt is printed to the console prior to the halt.  On the Series 8000, an improperly connected transition board causes a system halt if this variable is set. 

When set to 0, the system continues to boot, but no ENVMON services are available.  The default value for this variable is 0. 

MESSAGES

ENVMON: Series 900 chassis found
The ENVMON board initialization routine found a Series 900 chassis.

ENVMON: Series 8000 (Delta) chassis found
The ENVMON board initialization routine found a Series 8000 (Delta) chassis.

ENVMON: Asserting VME SYSRESET.
This message is printed when the EMBSYSRESET command is sent to the ENVMON. 

ENVMON: Shutting off external devices.
This message is printed when the EMBXTUOFF command is sent to the ENVMON. 

ENVMON: Shutting off internal power.
This message is printed when the EMBPWRDOWN command is sent to the ENVMON. 

ENVMON: hitemp condition detected in (Main VME Chassis)
This message is printed on a Series 900 chassis when the main VME chassis registers a high temperature condition.

ENVMON: hitemp condition detected in (VME Expansion Chassis 1)
This message is printed on a Series 900 chassis when VME expansion chassis #1 registers a high temperature condition.

ENVMON: hitemp condition detected in (VME Expansion Chassis 2)
This message is printed on a Series 900 chassis when VME expansion chassis #2 registers a high temperature condition.

ENVMON: hitemp condition detected in (VME Expansion Chassis 3)
This message is printed on a Series 900 chassis when VME expansion chassis #3 registers a high temperature condition.

ENVMON: hitemp condition detected in (SCSI Enclosure)
This message is printed on a Series 900 chassis when any SCSI enclosure registers a high temperature condition.

ENVMON: hitemp condition detected in (Internal Chassis)
This message is printed on a Delta chassis when the internal chassis registers a high temperature condition.

ENVMON: hitemp condition detected in (External SCSI Chassis 1)
This message is printed on a Delta chassis when external SCSI chassis #1 registers a high temperature condition.

ENVMON: hitemp condition detected in (External SCSI Chassis 2)
This message is printed on a Delta chassis when external SCSI chassis #2 registers a high temperature condition.

ENVMON: hitemp condition detected in (External SCSI Chassis 3)
This message is printed on a Delta chassis when external SCSI chassis #3 registers a high temperature condition.

ENVMON: hitemp condition detected in (External SCSI Chassis 4)
This message is printed on a Delta chassis when external SCSI chassis #4 registers a high temperature condition.

ENVMON: embinit: old reset function at 0x%x was replaced.
The ENVMON board initialization routine replaced the reset function using the DKDI routine, set_reset_func.  Another driver had already initialized the reset function.  This conflict should be resolved.

ENVMON: embinit: reset now handled by envmon driver.
The ENVMON board initialization routine replaced the reset function using the DKDI routine, set_reset_func.  Another driver had already initialized the reset function.  This conflict should be resolved.

ENVMON: embinit: old powerdown function at 0x%x was replaced.
The ENVMON board initialization routine replaced the power down function using the DKDI routine, set_pwrdn_func.  Another driver had already initialized the power down function.  This conflict should be resolved.

ENVMON: embinit: powerdown now handled by envmon driver.
The ENVMON board initialization routine replaced the power down function using the DKDI routine, set_pwrdn_func.  Another driver had already initialized the power down function.  This conflict should be resolved.

ENVMON: ENVMON: Immediate power down.
The user initiated a power down sequence by turning off the power switch.  During the orderly shutdown, the user turned the power switch back on, and then off.  The machine immediately powers down.

ERROR MESSAGES

ENVMON: hitemp test failed (Main VME Chassis)
This message is printed during boot time on a Series 900 chassis when the main VME chassis registers a high temperature condition.

ENVMON: hitemp test failed (VME Expansion Chassis 1)
This message is printed during boot time on a Series 900 chassis when VME expansion chassis #1 registers a high temperature condition.

ENVMON: hitemp test failed (VME Expansion Chassis 2)
This message is printed during boot time on a Series 900 chassis when VME expansion chassis #2 registers a high temperature condition.

ENVMON: hitemp test failed (VME Expansion Chassis 3)
This message is printed during boot time on a Series 900 chassis when VME expansion chassis #3 registers a high temperature condition.

ENVMON: hitemp test failed (SCSI Enclosure)
This message is printed during boot time on a Series 900 chassis when any SCSI enclosure registers a high temperature condition.

ENVMON: hitemp test failed (Internal Chassis)
This message is printed during boot time on a Delta chassis when the internal chassis registers a high temperature condition.

ENVMON: hitemp test failed (External SCSI Chassis 1)
This message is printed during boot time on a Delta chassis when external SCSI chassis #1 registers a high temperature condition.

ENVMON: hitemp test failed (External SCSI Chassis 2)
This message is printed during boot time on a Delta chassis when external SCSI chassis #2 registers a high temperature condition.

ENVMON: hitemp test failed (External SCSI Chassis 3)
This message is printed during boot time on a Delta chassis when external SCSI chassis #3 registers a high temperature condition.

ENVMON: hitemp test failed (External SCSI Chassis 4)
This message is printed during boot time on a Delta chassis when external SCSI chassis #4 registers a high temperature condition.

ENVMON: board initialization failed
Some part of the board initialization failed.  The specific reason for failure should have been printed just prior to this message.  When this message appears, none of the ENVMON functionality is available. The ENVMON board is unusable.

ENVMON: board existence test failed: board faulted
The kernel failed to read the board STATA register. The ENVMON board is unusable.

ENVMON: I/O address mapin failed:  addr=0x%x, len=0x%x
The ENVMON board initialization routine failed to virtually map the board addresses. There is a serious problem with the kernel that prevents mapping a virtual memory address.

ENVMON: I/O pollhead allocation failed
The ENVMON board initialization routine failed to allocate memory for the pollhead structure. There is a serious problem with the kernel that prevents allocating a small amount of memory.

ENVMON: cmd register initialization failed: can’t read cmd reg
The ENVMON board initialization routine failed to read the ENVMON command register. The ENVMON board is unusable.

ENVMON: cmd register initialization failed: can’t write cmd reg
The ENVMON board initialization routine failed to write the ENVMON command register. The ENVMON board is unusable.

ENVMON: latched data (STATA) clearing failed
The ENVMON board initialization routine failed to write the ENVMON STATA register. The ENVMON board is unusable.

ENVMON: transition board not connected
The transition board on a Delta chassis is not properly connected.  The board has significantly reduced functionality in the case and the driver does not successfully initialize.  In order to remove power to connect the transition board, you must remove the power cable from the system.  Turning off the power switch is not guaranteed to remove power from the system. The ENVMON board is unusable.

ENVMON: latched data (STATB) clearing failed
The ENVMON board initialization routine failed to write the ENVMON STATB register. The ENVMON board is unusable.

ENVMON: latched data (STATC) clearing failed
The ENVMON board initialization routine failed to write the ENVMON STATC register.  This message can only be seen on a Series 900 chassis. The ENVMON board is unusable.

ENVMON: vector reg initialization failed
The ENVMON board initialization routine failed to write the vector register. The ENVMON board is unusable.

ENVMON: test interrupt failed: cannot read cmd reg
The ENVMON board initialization routine failed to read the ENVMON command register while issuing a test interrupt. The ENVMON board is unusable.

ENVMON: test interrupt failed: cannot write cmd reg
The ENVMON board initialization routine failed to write the ENVMON command register while issuing a test interrupt. The ENVMON board is unusable.

ENVMON: test interrupt failed: didn’t receive intr
The ENVMON board initialization routine failed to receive a test interrupt. The ENVMON board is unusable.

ENVMON: ENVMON: failed to power down after hitemp.
The ENVMON board initialization routine detected a high temperature condition and attempted to power down, but the attempt was unsuccessful and the machine panicked.

CAVEATS

The driver disables ENVMON interrupts for 10 seconds following any interrupt (except ABORT).  During this 10 second interval all ENVMON interrupts are disabled, including ABORT.  The purpose of this delay is to compensate for the lack of any hysteresis in the temperature sensors. 

When executing an EMBPWRDOWN request, the ENVMON logic expects power to be removed; therefore it also asserts the VME AC-FAIL and SYSRESET lines.  Thus, this command effects a system reset even if the ENVMON is not connected to the internal power-supply or any external units.  This command should not be executed unless the ENVMON is properly connected to the internal power supply.  Otherwise, the system will reboot automatically with the external power-off signal asserted (and latched), and any connected SCSI chassis would be inhibited from powering up.  Also, if a UPS were attached which ignored this signal while AC was present, it would remove system power immediately when an AC failure occurred. 

Once a UPS, Power-Fail, or Over-Temperature condition is raised, there is a finite amount of time available before the UPS or ENVMON removes power from the system.  In the case of an AC-failure, the UPS powers down the system when its batteries are exhausted, or possibly earlier if so programmed.  Similarly, the ENVMON in a Series 8000 cuts power after a fixed timeout when Over-Temperature occurs.  There is no timeout on a Series 900 chassis.  Instead, a second, higher temperature trip point causes immediate power removal. 

The AC-fail or Over-Temperature conditions may occur in any order, so user programs that detect one condition and set a grace-period timer must monitor ENVMON status during the timing interval, since the Over-Temp and battery life time constants may differ.  If the condition with the smaller timeout occurs second, the UPS or ENVMON could unexpectedly and ungracefully cause a power-down. 

FILES

/dev/envmon_c0
/etc/master.d/envmon
/usr/include/sys/envmon.h

SEE ALSO

envctl(1M), envdiag(1M), envmon(1M), prtconf(1M), intro(2), poll(2), select(2), sysm88k(2), driverinfo(D2DK)

Delta chassis: Environment Monitor Board Set User Guide (ENVMON/D1)
Series 900 chassis: Series 900 Reference Guide (S900RF/D2)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026