DDI_FM_INIT(9F) Kernel Functions for Drivers DDI_FM_INIT(9F)
ddi_fm_init, ddi_fm_fini, ddi_fm_capable - initialize and get the FM
capabilities for a device instance
#include <sys/ddifm.h>
void ddi_fm_init(dev_info_t *dip, int *fm_capability,
ddi_iblock_cookie_t *ibcp);
void ddi_fm_fini(dev_info_t *dip);
int ddi_fm_capable(dev_info_t *dip);
illumos DDI specific (illumos DDI)
ddi_fm_init()
dip
Pointer to the dev_info structure
fm_capability
Fault Management capability bit mask
ibcp
Pointer to where the interrupt block cookie should
be returned.
A device driver can declare its fault management capabilities to the
I/O Fault Management framework by calling ddi_fm_init(). The
ddi_fm_init() function allocates and initializes resources according
to the bitwise-inclusive-OR of the fault management capabilities,
described in the following and supported by the driver's immediate
nexus parent.
DDI_FM_NOT_CAPABLE
The driver does not support any FMA
features. This is the default value
assigned to device drivers.
DDI_FM_EREPORT_CAPABLE
The driver generates FMA protocol error
events (ereports) upon the detection of an
error condition.
DDI_FM_ACCCHK_CAPABLE
The driver checks for errors upon the
completion of one or more access I/O
transactions.
DDI_FM_DMACHK_CAPABLE
The driver checks for errors upon the
completion of one or more DMA I/O
transactions.
DDI_FM_ERRCB_CAPABLE
The driver is capable of error handler
callback registration.
If the parent nexus is not capable of supporting any one of the
requested capabilities, the associated bit will not be set and
returned as such to the driver. Before returning from ddi_fm_init(),
the I/O Fault Management framework creates a set of fault management
capability properties: fm-ereport-capable, fm-errcb-capable, fm-
accchk-capable, and fm-dmachk-capable. The current supported fault
management capability levels are observable via prtconf(8).
A driver can support the administrative selection of fault management
capabilities by exporting and setting a fault management capability
level property in its driver.conf(5) file to the values described
above. The fm_capable properties must be set and read prior to
calling ddi_fm_init() with the desired capability list.
ddi_fm_fini()
This function cleans up resources allocated to
support fault management for the dip structure.
ddi_fm_capable()
This function returns the capability bit mask
currently set for the dip structure.
These functions can be called from kernel context in a driver
attach(9E) or detach(9E) operation.
See attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
driver.conf(5), attributes(7), prtconf(8), attach(9E), detach(9E)
Writing Device Drivers
August 8, 2022 DDI_FM_INIT(9F)
NAME
ddi_fm_init, ddi_fm_fini, ddi_fm_capable - initialize and get the FM
capabilities for a device instance
SYNOPSIS
#include <sys/ddifm.h>
void ddi_fm_init(dev_info_t *dip, int *fm_capability,
ddi_iblock_cookie_t *ibcp);
void ddi_fm_fini(dev_info_t *dip);
int ddi_fm_capable(dev_info_t *dip);
INTERFACE LEVEL
illumos DDI specific (illumos DDI)
PARAMETERS
ddi_fm_init()
dip
Pointer to the dev_info structure
fm_capability
Fault Management capability bit mask
ibcp
Pointer to where the interrupt block cookie should
be returned.
DESCRIPTION
A device driver can declare its fault management capabilities to the
I/O Fault Management framework by calling ddi_fm_init(). The
ddi_fm_init() function allocates and initializes resources according
to the bitwise-inclusive-OR of the fault management capabilities,
described in the following and supported by the driver's immediate
nexus parent.
DDI_FM_NOT_CAPABLE
The driver does not support any FMA
features. This is the default value
assigned to device drivers.
DDI_FM_EREPORT_CAPABLE
The driver generates FMA protocol error
events (ereports) upon the detection of an
error condition.
DDI_FM_ACCCHK_CAPABLE
The driver checks for errors upon the
completion of one or more access I/O
transactions.
DDI_FM_DMACHK_CAPABLE
The driver checks for errors upon the
completion of one or more DMA I/O
transactions.
DDI_FM_ERRCB_CAPABLE
The driver is capable of error handler
callback registration.
If the parent nexus is not capable of supporting any one of the
requested capabilities, the associated bit will not be set and
returned as such to the driver. Before returning from ddi_fm_init(),
the I/O Fault Management framework creates a set of fault management
capability properties: fm-ereport-capable, fm-errcb-capable, fm-
accchk-capable, and fm-dmachk-capable. The current supported fault
management capability levels are observable via prtconf(8).
A driver can support the administrative selection of fault management
capabilities by exporting and setting a fault management capability
level property in its driver.conf(5) file to the values described
above. The fm_capable properties must be set and read prior to
calling ddi_fm_init() with the desired capability list.
ddi_fm_fini()
This function cleans up resources allocated to
support fault management for the dip structure.
ddi_fm_capable()
This function returns the capability bit mask
currently set for the dip structure.
CONTEXT
These functions can be called from kernel context in a driver
attach(9E) or detach(9E) operation.
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
SEE ALSO
driver.conf(5), attributes(7), prtconf(8), attach(9E), detach(9E)
Writing Device Drivers
August 8, 2022 DDI_FM_INIT(9F)