Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
#include <sys/ddifm.h>
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:
DDI_FM_OK
No errors were detected.
DDI_FM_FATAL
An error which is considered fatal to the operational state of the system was detected.
DDI_FM_NONFATAL
An error which is not considered fatal to the operational state of the system was detected.
DDI_FM_UNKNOWN
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:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Committed |
attributes(5), ddi_fm_acc_err_get(9F), ddi_fm_dma_err_get(9F), ddi_fm_handler_register(9F), ddi_peek(9F), ddi_poke(9F), pci_ereport_post(9F)
Writing Device Drivers