Solaris DDI specific (Solaris DDI)
A ddi_fm_error_t structure contains common data necessary for I/O error handling. A pointer to a ddi_fm_error_t structure is passed to error handling callbacks where it can then be used in a call to pci_ereport_post(). The same structure is also returned to callers of ddi_fm_acc_err_get() and ddi_fm_dma_err_get().
int fme_version; uint64_t fme_ena; int fme_status; int fme_flag; ddi_acc_handle_t fme_acc_handle; ddi_dma_handle_t fme_dma_handle;
The fme_version is the current version of ddi_fm_error_t. Valid values for the version are: DDI_FME_VER0 and DDI_FME_VER1.
The fme_ena is the FMA event protocol Format 1 Error Numeric Association (ENA) for this error condition.
The fme_flag field is set to DDI_FM_ERR_EXPECTED if the error is the result of a DDI_ACC_CAUTIOUS protected operation. In this case, fme_acc_handle is valid and the driver should check for and report only errors not associated with the DDI_ACC_CAUTIOUS protected access operation. This field can also be set to DDI_FM_ERR_POKE or DDI_FM_ERR_PEEK if the error is the result of a ddi_peek(9F) or ddi_poke(9F) operation. The driver should handle these in a similar way to DDI_FM_ERR_EXPECTED. Otherwise, ddi_flag is set to DDI_FM_ERR_UNEXPECTED and the driver must perform the full range of error handling tasks.
The fme_status indicates current status of an error handler callback or resource handle:
No errors were detected.
An error which is considered fatal to the operational state of the system was detected.
An error which is not considered fatal to the operational state of the system was detected.
An error was detected, but the driver was unable to determine the impact of the error on the operational state of the system.
The fme_acc_handle is the valid access handle associated with the error that can be returned from pci_ereport_post()
The fme_dma_handle is the valid DMA handle associated with the error that can be returned from pci_ereport_post()
See attributes(5) for descriptions of the following attributes: