DDI_FM_EREPORT_POST(9F) Kernel Functions for Drivers DDI_FM_EREPORT_POST(9F)


NAME


ddi_fm_ereport_post - post an FMA Protocol Error Report Event

SYNOPSIS


#include <sys/ddifm.h>

void ddi_fm_ereport_post(dev_info_t *dip, char *ereport_class,
uint64_t ena, int *sflag, ... /* name-value pair args */);


INTERFACE LEVEL


Solaris DDI specific (Solaris DDI)

PARAMETERS


dip
Pointer to the dev_info structure


ereport_class
FMA Event Protocol error class


ena
Error Numeric Association


sflag
Determines whether caller can sleep for memory or other
event resources.


DESCRIPTION


The ddi_fm_ereport_post() function causes an encoded fault management
error report name-value pair list to be queued for delivery to the Fault
Manager daemon, fmd(1M). The sflag parameter indicates whether or not the
caller is willing to wait for system memory and event channel resources
to become available.


The following ereport_class strings are available for use by any leaf
device driver:

device.inval_state
A leaf driver discovers that the device is in an
invalid or inconsistent state. For example, the
driver might detect that receive or send ring
descriptor indices are corrupted. It might also
find an invalid value in a register or a driver-
to-device protocol violation.


device.no_response
A leaf driver times out waiting for a response
from the device. For example, timeouts can occur
when no confirmation is seen after resetting,
enabling, or disabling part of the device.


device.badint_limit
A leaf device sends too many consecutive
interrupts with no work to do.


device.intern_corr
A leaf device reports to the driver that it has
itself detected an internal correctable error.


device.intern_uncorr
A leaf device reports to the driver that it has
itself detected an internal uncorrectable error.


device.stall
A leaf driver determines that data transmission
has stalled indefinitely.


The ena indicates the Format 1 Error Numeric Association for this error
report. It might have already been initialized by another error-detecting
software module. For example, if ddi_fm_ereport_post() is called from an
error handler callback function, the fme_ena field from the passed-in
ddi_fm_error argument should be used. Otherwise it should be set to 0 and
will be initialized by ddi_fm_ereport_post().


The name-value pair args variable argument list contains one or more
(names, type, value pointer) nvpair tuples for non-array data_type_t
types or one or more (name, type, number of elements, value pointer)
tuples for data_type_t array types. There is one mandatory tuple to
describe the ereport version. This should contain the following values:

o name - FM_VERSION

o type - DATA_TYPE_UINT8

o value - FM_EREPORT_VERS0


Additional nvpair tuples can describe error conditions for logging
purposes, but are not interpreted by the I/O framework or fault manager.
The end of the argument list is specified by NULL.

CONTEXT


The ddi_fm_ereport_post() function can be called from user, kernel, or
high-level interrupt context.

ATTRIBUTES


See attributes(5) for descriptions of the following attributes:


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+

SEE ALSO


fmd(1M), attributes(5), ddi_fm_service_impact(9F)


May 14, 2007 DDI_FM_EREPORT_POST(9F)