DDI_FM_INIT(9F)         Kernel Functions for Drivers         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)