DDI_FM_EREPORT_POST(9F) Kernel Functions for Drivers
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
illumos DDI specific (illumos 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(8). 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(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
SEE ALSO
attributes(7),
fmd(8),
ddi_fm_service_impact(9F) May 14, 2007 DDI_FM_EREPORT_POST(9F)