FreeBSD kernel pms device code
saint.c File Reference

The file implements the functions to handle/enable/disable interrupt. More...

#include <sys/cdefs.h>
#include <dev/pms/config.h>
#include <dev/pms/RefTisa/sallsdk/spc/saglobal.h>
Include dependency graph for saint.c:

Go to the source code of this file.

Macros

#define SA_CLEAR_ODCR_IN_INTERRUPT
 

Functions

 __FBSDID ("$FreeBSD$")
 
LOCAL FORCEINLINE bit32 siProcessOBMsg (agsaRoot_t *agRoot, bit32 count, bit32 queueNum)
 Routine to handle Outbound Message. More...
 
LOCAL bit32 siFatalInterruptHandler (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 
GLOBAL bit32 saFatalInterruptHandler (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 
FORCEINLINE bit32 saInterruptHandler (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process the interrupts. More...
 
GLOBAL void siDisableMSIXInterrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to disable MSIX interrupts. More...
 
void siDisableMSIX_V_Interrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to disable MSIX V interrupts. More...
 
GLOBAL void siDisableMSIInterrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to disable MSI interrupts. More...
 
GLOBAL void siDisableMSI_V_Interrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to disable MSI V interrupts. More...
 
GLOBAL void siDisableLegacyInterrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process Legacy interrupts. More...
 
GLOBAL void siDisableLegacy_V_Interrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process Legacy V interrupts. More...
 
GLOBAL bit32 siOurMSIXInterrupt (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process MSIX interrupts. More...
 
GLOBAL bit32 siOurMSIX_V_Interrupt (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process MSIX V interrupts. More...
 
bit32 siOurMSIInterrupt (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process MSI interrupts. More...
 
bit32 siOurMSI_V_Interrupt (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process MSI V interrupts. More...
 
bit32 siOurLegacyInterrupt (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process Legacy interrupts. More...
 
bit32 siOurLegacy_V_Interrupt (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to process Legacy V interrupts. More...
 
FORCEINLINE bit32 saDelayedInterruptHandler (agsaRoot_t *agRoot, bit32 interruptVectorIndex, bit32 count)
 Function to process the cause of interrupt. More...
 
void siReenableMSIXInterrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to reenable MSIX interrupts. More...
 
void siReenableMSIX_V_Interrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to reenable MSIX interrupts. More...
 
GLOBAL void siReenableMSIInterrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to reenable MSI interrupts. More...
 
GLOBAL void siReenableMSI_V_Interrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to reenable MSI V interrupts. More...
 
GLOBAL void siReenableLegacyInterrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to reenable Legacy interrupts. More...
 
GLOBAL void siReenableLegacy_V_Interrupts (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to reenable Legacy V interrupts. More...
 
GLOBAL FORCEINLINE void saSystemInterruptsEnable (agsaRoot_t *agRoot, bit32 interruptVectorIndex)
 Function to enable a single interrupt vector. More...
 
GLOBAL void saSystemInterruptsActive (agsaRoot_t *agRoot, agBOOLEAN sysIntsActive)
 Function to enable/disable interrupts. More...
 
GLOBAL void siEventSSPResponseWtDataRcvd (agsaRoot_t *agRoot, agsaIORequestDesc_t *pRequest, agsaSSPResponseInfoUnit_t *pRespIU, bit32 param, bit32 sspTag)
 Routine to handle for received SAS with data payload event. More...
 
GLOBAL FORCEINLINE void siIODone (agsaRoot_t *agRoot, agsaIORequestDesc_t *pRequest, bit32 status, bit32 sspTag)
 Routine to handle successfully completed IO event. More...
 
GLOBAL void siAbnormal (agsaRoot_t *agRoot, agsaIORequestDesc_t *pRequest, bit32 status, bit32 param, bit32 sspTag)
 Routine to handle abnormal completed IO/SMP event. More...
 
GLOBAL void siDifAbnormal (agsaRoot_t *agRoot, agsaIORequestDesc_t *pRequest, bit32 status, bit32 param, bit32 sspTag, bit32 *pMsg1)
 Routine to handle abnormal DIF completed IO/SMP event. More...
 
GLOBAL void siSMPRespRcvd (agsaRoot_t *agRoot, agsaSMPCompletionRsp_t *pIomb, bit32 payloadSize, bit32 tag)
 Routine to handle for received SMP response event. More...
 
GLOBAL void siEventPhyUpRcvd (agsaRoot_t *agRoot, bit32 phyId, agsaSASIdentify_t *agSASIdentify, bit32 portId, bit32 npipps, bit8 linkRate)
 Routine to handle for received Phy Up event. More...
 
GLOBAL void siEventSATASignatureRcvd (agsaRoot_t *agRoot, bit32 phyId, void *pMsg, bit32 portId, bit32 npipps, bit8 linkRate)
 Routine to handle for received SATA signature event. More...
 
GLOBAL bit32 mpiParseOBIomb (agsaRoot_t *agRoot, bit32 *pMsg1, mpiMsgCategory_t category, bit16 opcode)
 Process Outbound IOMB Message. More...
 
GLOBAL FORCEINLINE bit32 mpiSATACompletion (agsaRoot_t *agRoot, bit32 *pIomb1)
 SPC MPI SATA Completion. More...
 
GLOBAL FORCEINLINE bit32 mpiSSPCompletion (agsaRoot_t *agRoot, bit32 *pIomb1)
 SPC MPI SSP Completion. More...
 

Detailed Description

The file implements the functions to handle/enable/disable interrupt.

Definition in file saint.c.

Macro Definition Documentation

◆ SA_CLEAR_ODCR_IN_INTERRUPT

#define SA_CLEAR_ODCR_IN_INTERRUPT

Definition at line 33 of file saint.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ mpiParseOBIomb()

GLOBAL bit32 mpiParseOBIomb ( agsaRoot_t agRoot,
bit32 pMsg1,
mpiMsgCategory_t  category,
bit16  opcode 
)

Process Outbound IOMB Message.

Process Outbound IOMB from SPC

Parameters
agRootHandles for this instance of SAS/SATA LL Layer
pMsg1Pointer of Response IOMB message 1
categorycategory of outbpond IOMB header
opcodeOpcode of Outbound IOMB header
bcbuffer count of IOMB header
Returns
success or fail

Definition at line 2356 of file saint.c.

References agNULL, AGSA_RC_FAILURE, AGSA_RC_SUCCESS, agsaSSPCoalescedCompletionRsp_s::coalescedCount, agsaSATACoalescedCompletionRsp_s::coalescedCount, hpDBG_VERY_LOUD, agsaLLRoot_s::IOMap, agsaIOMap_s::IORequest, mpiBistRsp(), mpiDekManagementRsp(), mpiDeregDevHandleRsp(), mpiDeviceHandleArrived(), mpiDeviceHandleRemoval(), mpiDeviceRegRsp(), mpiDifEncOffloadRsp(), mpiEchoRsp(), mpiFwExtFlashUpdateRsp(), mpiFwFlashUpdateRsp(), mpiGeneralEventRsp(), mpiGetControllerConfigRsp(), mpiGetDevHandleRsp(), mpiGetDeviceStateRsp(), mpiGetDevInfoRsp(), mpiGetDevInfoRspSpc(), mpiGetDFEDataRsp(), mpiGetNVMDataRsp(), mpiGetOperatorRsp(), mpiGetPhyProfileRsp(), mpiGetTimeStampRsp(), mpiGetVHistRsp(), mpiGPIOEventRsp(), mpiGPIORsp(), mpiHWevent(), mpiKekManagementRsp(), mpiOperatorManagementRsp(), mpiPCIeDiagExecuteRsp(), mpiPhyCntrlRsp(), mpiPhyStartEvent(), mpiPhyStopEvent(), mpiPortControlRsp(), mpiSASDiagExecuteRsp(), mpiSASDiagStartEndRsp(), mpiSASHwEventAckRsp(), mpiSasReInitializeRsp(), mpiSATAAbortRsp(), mpiSATACompletion(), mpiSATAEvent(), mpiSetControllerConfigRsp(), mpiSetDeviceStateRsp(), mpiSetDevInfoRsp(), mpiSetNVMDataRsp(), mpiSetOperatorRsp(), mpiSetPhyProfileRsp(), mpiSGpioRsp(), mpiSMPAbortRsp(), mpiSMPCompletion(), mpiSSPAbortRsp(), mpiSSPCompletion(), mpiSSPEvent(), mpiSSPReqReceivedNotify(), OPC_OUB_COMBINED_SATA_COMP, OPC_OUB_COMBINED_SSP_COMP, OPC_OUB_DEK_MANAGEMENT, OPC_OUB_DEREG_DEV, OPC_OUB_DEV_HANDLE_ARRIV, OPC_OUB_DEV_INFO, OPC_OUB_DEV_REGIST, OPC_OUB_DEVICE_HANDLE_REMOVAL, OPC_OUB_DIF_ENC_OFFLOAD_RSP, OPC_OUB_ECHO, OPC_OUB_ENC_TEST_EXECUTE, OPC_OUB_FLASH_OP_EXT_RSP, OPC_OUB_FW_FLASH_UPDATE, OPC_OUB_FW_PROFILE, OPC_OUB_GENERAL_EVENT, OPC_OUB_GET_CONTROLLER_CONFIG, OPC_OUB_GET_DEV_HANDLE, OPC_OUB_GET_DEVICE_STATE, OPC_OUB_GET_NVMD_DATA, OPC_OUB_GET_OPERATOR, OPC_OUB_GET_PHY_PROFILE_RSP, OPC_OUB_GET_TIME_STAMP, OPC_OUB_GET_VIST_CAP_RSP, OPC_OUB_GPIO_EVENT, OPC_OUB_GPIO_RESPONSE, OPC_OUB_HW_EVENT, OPC_OUB_KEK_MANAGEMENT, OPC_OUB_LOCAL_PHY_CNTRL, OPC_OUB_OPR_MGMT, OPC_OUB_PCIE_DIAG_EXECUTE, OPC_OUB_PHY_START_RESPONSE, OPC_OUB_PHY_STOP_RESPONSE, OPC_OUB_PORT_CONTROL, OPC_OUB_SAS_DIAG_EXECUTE, OPC_OUB_SAS_DIAG_MODE_START_END, OPC_OUB_SAS_HW_EVENT_ACK, OPC_OUB_SAS_RE_INITIALIZE, OPC_OUB_SATA_ABORT_RSP, OPC_OUB_SATA_COMP, OPC_OUB_SATA_EVENT, OPC_OUB_SET_CONTROLLER_CONFIG, OPC_OUB_SET_DEV_INFO, OPC_OUB_SET_DEVICE_STATE, OPC_OUB_SET_NVMD_DATA, OPC_OUB_SET_OPERATOR, OPC_OUB_SET_PHY_PROFILE_RSP, OPC_OUB_SGPIO_RESPONSE, OPC_OUB_SMP_ABORT_RSP, OPC_OUB_SMP_COMP, OPC_OUB_SPC_DEV_HANDLE_ARRIV, OPC_OUB_SPC_DEV_INFO, OPC_OUB_SPC_DEV_REGIST, OPC_OUB_SPC_HW_EVENT, OPC_OUB_SPC_SAS_HW_EVENT_ACK, OPC_OUB_SSP_ABORT_RSP, OPC_OUB_SSP_COMP, OPC_OUB_SSP_EVENT, OPC_OUB_SSP_RECV_EVENT, OSSA_IO_SUCCESS, PCI_TRIGGER_COAL_INVALID, PCI_TRIGGER_COAL_IOMB_ERROR, SA_ASSERT, SA_DBG1, SA_DBG2, SA_DBG3, agsaContext_s::sdkData, siIODone(), siPCITriger(), smIS_SPC(), smIS_SPC12V(), smIS_SPC6V(), smIS_SPCV(), smTraceFuncEnter, smTraceFuncExit, agsaSSPCoalescedCompletionRsp_s::sspComplCxt, agsaCoalSspComplCxt_s::SSPTag, agsaSATACoalescedCompletionRsp_s::stpComplCxt, agsaLLRoot_s::swConfig, agsaCoalSspComplCxt_s::tag, agsaCoalStpComplCxt_s::tag, and agsaIORequestDesc_s::valid.

Referenced by siProcessOBMsg().

Here is the caller graph for this function:

◆ mpiSATACompletion()

GLOBAL FORCEINLINE bit32 mpiSATACompletion ( agsaRoot_t agRoot,
bit32 pIomb1 
)

SPC MPI SATA Completion.

This function handles the SATA completion.

Parameters
agRootHandles for this instance of SAS/SATA LLL
pIomb1Pointer of Message1
bcbuffer count
Returns
The read value

Definition at line 2963 of file saint.c.

References agNULL, agsaIOErrorEventStats_s::agOSSA_IO_ABORT_DELAYED, agsaIOErrorEventStats_s::agOSSA_IO_ABORT_IN_PROGRESS, agsaIOErrorEventStats_s::agOSSA_IO_ABORTED, agsaIOErrorEventStats_s::agOSSA_IO_COMPLETED_ERROR_SCSI_STATUS, agsaIOErrorEventStats_s::agOSSA_IO_DS_IN_ERROR, agsaIOErrorEventStats_s::agOSSA_IO_DS_IN_RECOVERY, agsaIOErrorEventStats_s::agOSSA_IO_DS_INVALID, agsaIOErrorEventStats_s::agOSSA_IO_DS_NON_OPERATIONAL, agsaIOErrorEventStats_s::agOSSA_IO_NO_DEVICE, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_BAD_DESTINATION, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_BREAK, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY_ALT, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_NO_DEST, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_COLLIDE, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_RETRY_BACKOFF_THRESHOLD_REACHED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_TMO, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_PATHWAY_BLOCKED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_OPEN_PREEMPTED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_STP_RESOURCES_BUSY, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_WRONG_DESTINATION, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_ZONE_VIOLATION, agsaIOErrorEventStats_s::agOSSA_IO_PORT_IN_RESET, agsaIOErrorEventStats_s::agOSSA_IO_UNDERFLOW, agsaIOErrorEventStats_s::agOSSA_IO_UNKNOWN_ERROR, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERR_EOB_DATA_OVERRUN, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERR_LAST_PIO_DATAIN_CRC_ERR, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_BREAK, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_DMA, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_NAK_RECEIVED, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_PHY_NOT_READY, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_REJECTED_NCQ_MODE, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_SATA_LINK_TIMEOUT, agsaIOErrorEventStats_s::agOSSA_IO_XFER_OPEN_RETRY_TIMEOUT, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_INDEX_OUT_OF_BOUNDS, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_IV_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_KEY_CACHE_MISS, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_KEY_TAG_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_RAM_INTERFACE_ERROR, agsaIOErrorEventStats_s::agOSSA_MPI_ERR_ATAPI_DEVICE_BUSY, agsaIOErrorEventStats_s::agOSSA_MPI_ERR_IO_RESOURCE_UNAVAILABLE, agsaIOErrorEventStats_s::agOSSA_MPI_IO_RQE_BUSY_FULL, AGSA_RC_FAILURE, AGSA_RC_SUCCESS, agsaDeviceDesc_s::DeviceMapIndex, hpDBG_VERY_LOUD, agsaIORequestDesc_s::HTag, agsaLLRoot_s::IoErrorCount, agsaLLRoot_s::IOMap, agsaIOMap_s::IORequest, OSSA_IO_ABORT_DELAYED, OSSA_IO_ABORT_IN_PROGRESS, OSSA_IO_ABORTED, OSSA_IO_DS_IN_ERROR, OSSA_IO_DS_IN_RECOVERY, OSSA_IO_DS_INVALID, OSSA_IO_DS_NON_OPERATIONAL, OSSA_IO_NO_DEVICE, OSSA_IO_OPEN_CNX_ERROR_BAD_DESTINATION, OSSA_IO_OPEN_CNX_ERROR_BREAK, OSSA_IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED, OSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY, OSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY_ALT, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_NO_DEST, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_COLLIDE, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_RETRY_BACKOFF_THRESHOLD_REACHED, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_TMO, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_PATHWAY_BLOCKED, OSSA_IO_OPEN_CNX_ERROR_OPEN_PREEMPTED, OSSA_IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED, OSSA_IO_OPEN_CNX_ERROR_STP_RESOURCES_BUSY, OSSA_IO_OPEN_CNX_ERROR_WRONG_DESTINATION, OSSA_IO_OPEN_CNX_ERROR_ZONE_VIOLATION, OSSA_IO_PORT_IN_RESET, OSSA_IO_SUCCESS, OSSA_IO_UNDERFLOW, OSSA_IO_XFER_ERR_EOB_DATA_OVERRUN, OSSA_IO_XFER_ERR_LAST_PIO_DATAIN_CRC_ERR, OSSA_IO_XFER_ERROR_BREAK, OSSA_IO_XFER_ERROR_DMA, OSSA_IO_XFER_ERROR_NAK_RECEIVED, OSSA_IO_XFER_ERROR_PHY_NOT_READY, OSSA_IO_XFER_ERROR_REJECTED_NCQ_MODE, OSSA_IO_XFER_ERROR_SATA_LINK_TIMEOUT, OSSA_IO_XFER_OPEN_RETRY_TIMEOUT, OSSA_IO_XFR_ERROR_CIPHER_MODE_INVALID, OSSA_IO_XFR_ERROR_DEK_ILLEGAL_TABLE, OSSA_IO_XFR_ERROR_DEK_INDEX_OUT_OF_BOUNDS, OSSA_IO_XFR_ERROR_DEK_IV_MISMATCH, OSSA_IO_XFR_ERROR_DEK_KEY_CACHE_MISS, OSSA_IO_XFR_ERROR_DEK_KEY_TAG_MISMATCH, OSSA_IO_XFR_ERROR_DEK_RAM_INTERFACE_ERROR, OSSA_MPI_ERR_ATAPI_DEVICE_BUSY, OSSA_MPI_ERR_IO_RESOURCE_UNAVAILABLE, OSSA_MPI_IO_RQE_BUSY_FULL, OSSA_OFFSET_OF, agsaIORequestDesc_s::pDevice, SA_ASSERT, SA_DBG1, SA_DBG2, SA_DBG3, agsaContext_s::sdkData, siAbnormal(), siEventSATAResponseWtDataRcvd(), siIODone(), smTraceFuncEnter, smTraceFuncExit, status, and agsaIORequestDesc_s::valid.

Referenced by mpiParseOBIomb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mpiSSPCompletion()

GLOBAL FORCEINLINE bit32 mpiSSPCompletion ( agsaRoot_t agRoot,
bit32 pIomb1 
)

SPC MPI SSP Completion.

This function handles the SSP completion.

Parameters
agRootHandles for this instance of SAS/SATA LLL
pIomb1Pointer of Message1
bcbuffer count
Returns
The read value

Definition at line 3383 of file saint.c.

References agNULL, agsaIOErrorEventStats_s::agOSSA_IO_ABORT_DELAYED, agsaIOErrorEventStats_s::agOSSA_IO_ABORT_IN_PROGRESS, agsaIOErrorEventStats_s::agOSSA_IO_ABORTED, agsaIOErrorEventStats_s::agOSSA_IO_COMPLETED_ERROR_SCSI_STATUS, agsaIOErrorEventStats_s::agOSSA_IO_DS_IN_ERROR, agsaIOErrorEventStats_s::agOSSA_IO_DS_IN_RECOVERY, agsaIOErrorEventStats_s::agOSSA_IO_DS_INVALID, agsaIOErrorEventStats_s::agOSSA_IO_DS_NON_OPERATIONAL, agsaIOErrorEventStats_s::agOSSA_IO_INVALID_LENGTH, agsaIOErrorEventStats_s::agOSSA_IO_NO_DEVICE, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_BAD_DESTINATION, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_BREAK, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY_ALT, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_NO_DEST, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_COLLIDE, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_RETRY_BACKOFF_THRESHOLD_REACHED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_TMO, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_PATHWAY_BLOCKED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_OPEN_PREEMPTED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_WRONG_DESTINATION, agsaIOErrorEventStats_s::agOSSA_IO_OPEN_CNX_ERROR_ZONE_VIOLATION, agsaIOErrorEventStats_s::agOSSA_IO_PORT_IN_RESET, agsaIOErrorEventStats_s::agOSSA_IO_SSP_EXT_IU_ZERO_LEN_ERROR, agsaIOErrorEventStats_s::agOSSA_IO_TM_TAG_NOT_FOUND, agsaIOErrorEventStats_s::agOSSA_IO_UNKNOWN_ERROR, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERR_EOB_DATA_OVERRUN, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_ACK_NAK_TIMEOUT, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_BREAK, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_DIF_INTERNAL_ERROR, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_DMA, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_NAK_RECEIVED, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_OFFSET_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_PHY_NOT_READY, agsaIOErrorEventStats_s::agOSSA_IO_XFER_ERROR_UNEXPECTED_PHASE, agsaIOErrorEventStats_s::agOSSA_IO_XFER_OPEN_RETRY_TIMEOUT, agsaIOErrorEventStats_s::agOSSA_IO_XFER_PIO_SETUP_ERROR, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_CIPHER_MODE_INVALID, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_ILLEGAL_TABLE, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_INDEX_OUT_OF_BOUNDS, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_IV_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_KEY_CACHE_MISS, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_KEY_TAG_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DEK_RAM_INTERFACE_ERROR, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DIF_APPLICATION_TAG_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DIF_CRC_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DIF_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_DIF_REFERENCE_TAG_MISMATCH, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_INTERNAL_RAM, agsaIOErrorEventStats_s::agOSSA_IO_XFR_ERROR_INVALID_SSP_RSP_FRAME, agsaIOErrorEventStats_s::agOSSA_MPI_ERR_IO_RESOURCE_UNAVAILABLE, agsaIOErrorEventStats_s::agOSSA_MPI_IO_RQE_BUSY_FULL, AGSA_RC_FAILURE, AGSA_RC_SUCCESS, agsaDeviceDesc_s::DeviceMapIndex, hpDBG_VERY_LOUD, agsaLLRoot_s::IoErrorCount, agsaLLRoot_s::IOMap, agsaIOMap_s::IORequest, OSSA_IO_ABORT_DELAYED, OSSA_IO_ABORT_IN_PROGRESS, OSSA_IO_ABORTED, OSSA_IO_DS_IN_ERROR, OSSA_IO_DS_IN_RECOVERY, OSSA_IO_DS_INVALID, OSSA_IO_DS_NON_OPERATIONAL, OSSA_IO_FAILED, OSSA_IO_INVALID_LENGTH, OSSA_IO_NO_DEVICE, OSSA_IO_OPEN_CNX_ERROR_BAD_DESTINATION, OSSA_IO_OPEN_CNX_ERROR_BREAK, OSSA_IO_OPEN_CNX_ERROR_CONNECTION_RATE_NOT_SUPPORTED, OSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY, OSSA_IO_OPEN_CNX_ERROR_HW_RESOURCE_BUSY_ALT, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_NO_DEST, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_COLLIDE, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_RETRY_BACKOFF_THRESHOLD_REACHED, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_TMO, OSSA_IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_PATHWAY_BLOCKED, OSSA_IO_OPEN_CNX_ERROR_OPEN_PREEMPTED, OSSA_IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED, OSSA_IO_OPEN_CNX_ERROR_WRONG_DESTINATION, OSSA_IO_OPEN_CNX_ERROR_ZONE_VIOLATION, OSSA_IO_PORT_IN_RESET, OSSA_IO_SSP_EXT_IU_ZERO_LEN_ERROR, OSSA_IO_SUCCESS, OSSA_IO_TM_TAG_NOT_FOUND, OSSA_IO_UNDERFLOW, OSSA_IO_XFER_ERR_EOB_DATA_OVERRUN, OSSA_IO_XFER_ERROR_ACK_NAK_TIMEOUT, OSSA_IO_XFER_ERROR_BREAK, OSSA_IO_XFER_ERROR_DIF_INTERNAL_ERROR, OSSA_IO_XFER_ERROR_DMA, OSSA_IO_XFER_ERROR_NAK_RECEIVED, OSSA_IO_XFER_ERROR_OFFSET_MISMATCH, OSSA_IO_XFER_ERROR_PHY_NOT_READY, OSSA_IO_XFER_ERROR_UNEXPECTED_PHASE, OSSA_IO_XFER_OPEN_RETRY_TIMEOUT, OSSA_IO_XFER_PIO_SETUP_ERROR, OSSA_IO_XFR_ERROR_CIPHER_MODE_INVALID, OSSA_IO_XFR_ERROR_DEK_ILLEGAL_TABLE, OSSA_IO_XFR_ERROR_DEK_INDEX_OUT_OF_BOUNDS, OSSA_IO_XFR_ERROR_DEK_IV_MISMATCH, OSSA_IO_XFR_ERROR_DEK_KEY_CACHE_MISS, OSSA_IO_XFR_ERROR_DEK_KEY_TAG_MISMATCH, OSSA_IO_XFR_ERROR_DEK_RAM_INTERFACE_ERROR, OSSA_IO_XFR_ERROR_DIF_APPLICATION_TAG_MISMATCH, OSSA_IO_XFR_ERROR_DIF_CRC_MISMATCH, OSSA_IO_XFR_ERROR_DIF_MISMATCH, OSSA_IO_XFR_ERROR_DIF_REFERENCE_TAG_MISMATCH, OSSA_IO_XFR_ERROR_INTERNAL_RAM, OSSA_IO_XFR_ERROR_INVALID_SSP_RSP_FRAME, OSSA_MPI_ERR_IO_RESOURCE_UNAVAILABLE, OSSA_MPI_IO_RQE_BUSY_FULL, OSSA_OFFSET_OF, agsaIORequestDesc_s::pDevice, SA_ASSERT, SA_DBG1, SA_DBG2, SA_DBG3, agsaContext_s::sdkData, siAbnormal(), siDifAbnormal(), siEventSSPResponseWtDataRcvd(), siIODone(), smTraceFuncEnter, smTraceFuncExit, agsaSSPCompletionRsp_s::SSPrsp, status, agsaSSPResponseInfoUnit_s::status, and agsaIORequestDesc_s::valid.

Referenced by mpiParseOBIomb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ saDelayedInterruptHandler()

FORCEINLINE bit32 saDelayedInterruptHandler ( agsaRoot_t agRoot,
bit32  interruptVectorIndex,
bit32  count 
)

Function to process the cause of interrupt.

The saDelayedInterruptHandler() function is called after an interrupt messages has been received it may be called by a deferred procedure call

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message
countNumber of completion queue entries to consume
Returns
number of messages processed

Definition at line 772 of file saint.c.

References agTRUE, agsaSwConfig_s::fatalErrorInterruptEnable, agsaSwConfig_s::fatalErrorInterruptVector, GEN_MSGU_SCRATCH_PAD_1, HDA_AES_DIF_FUNC, agsaSwConfig_s::hostDirectAccessMode, hpDBG_VERY_LOUD, agsaQueueOutbound_s::interruptEnable, agsaLLRoot_s::interruptVecIndexBitMap, agsaLLRoot_s::interruptVecIndexBitMap1, MSGU_SCRATCH_PAD_1, agsaQueueConfig_s::numOutboundQueues, OQ_NUM_32, OSSA_OUT_ENTER, OSSA_OUT_LEAVE, ossaDisableInterrupts(), ossaHwRegReadExt(), ossaReenableInterrupts(), agsaQueueConfig_s::outboundQueues, PCIBAR0, agsaLLRoot_s::QueueConfig, SA_ASSERT, SA_DBG1, SA_DBG2, SCRATCH_PAD1_V_ERROR_STATE, SCRATCH_PAD1_V_ILA_ERROR_STATE, SCRATCH_PAD1_V_IOP0_ERROR_STATE, SCRATCH_PAD1_V_IOP1_ERROR_STATE, SCRATCH_PAD1_V_RAAE_ERROR_STATE, agsaContext_s::sdkData, siFatalInterruptHandler(), siHalRegReadExt(), siProcessOBMsg(), smTrace, smTraceFuncEnter, smTraceFuncExit, agsaLLRoot_s::swConfig, agsaLLRoot_s::sysIntsActive, V_Outbound_Doorbell_Mask_Set_Register, V_Outbound_Doorbell_Mask_Set_RegisterU, V_Outbound_Doorbell_Set_Register, V_Outbound_Doorbell_Set_RegisterU, V_Scratchpad_0_Register, V_Scratchpad_1_Register, V_Scratchpad_2_Register, V_Scratchpad_3_Register, V_Scratchpad_Rsvd_0_Register, and V_Scratchpad_Rsvd_1_Register.

Referenced by tiCOMDelayedInterruptHandler().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ saFatalInterruptHandler()

◆ saInterruptHandler()

FORCEINLINE bit32 saInterruptHandler ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process the interrupts.

The saInterruptHandler() function is called after an interrupts has been received This function disables interrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndexmessage that caused MSI message
Returns
TRUE if we caused interrupt

Definition at line 388 of file saint.c.

References agFALSE, agNULL, FALSE, hpDBG_REGISTERS, hpDBG_TICK_INT, ossaDisableInterrupts(), ossaHwRegReadExt(), agsaLLRoot_s::OurInterrupt, PCIBAR0, SA_DBG1, agsaContext_s::sdkData, smTrace, smTraceFuncEnter, smTraceFuncExit, agsaLLRoot_s::sysIntsActive, TRUE, V_Outbound_Doorbell_Mask_Set_Register, and V_Outbound_Doorbell_Mask_Set_RegisterU.

Referenced by tiCOMInterruptHandler().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ saSystemInterruptsActive()

GLOBAL void saSystemInterruptsActive ( agsaRoot_t agRoot,
agBOOLEAN  sysIntsActive 
)

Function to enable/disable interrupts.

The saSystemInterruptsActive() function is called to indicate to the LL Layer whether interrupts are available. The parameter sysIntsActive indicates whether interrupts are available at this time.

Parameters
agRoothandles for this instance of SAS/SATA hardware
sysIntsActiveflag for enable/disable interrupt
Returns
-void-

Definition at line 1340 of file saint.c.

References agNULL, AGSA_INTERRUPT_HANDLE_ALL_CHANNELS, agTRUE, agsaSwConfig_s::fatalErrorInterruptEnable, agsaSwConfig_s::fatalErrorInterruptVector, GEN_MSGU_ODMR, hpDBG_TICK_INT, MSGU_ODMR, agsaLLRoot_s::numInterruptVectors, ossaHwRegReadExt(), ossaHwRegWriteExt(), ossaReenableInterrupts(), PCIBAR0, SA_ASSERT, SA_DBG1, SA_DBG3, agsaContext_s::sdkData, siHalRegWriteExt(), smIS_SPC(), smIS_SPCV(), smTrace, smTraceFuncEnter, smTraceFuncExit, agsaLLRoot_s::swConfig, agsaLLRoot_s::sysIntsActive, V_Outbound_Doorbell_Clear_Register, V_Outbound_Doorbell_Clear_RegisterU, V_Outbound_Doorbell_Mask_Set_Register, V_Outbound_Doorbell_Mask_Set_RegisterU, V_Outbound_Doorbell_Set_Register, and V_Outbound_Doorbell_Set_RegisterU.

Referenced by saHwReset(), and tiCOMSystemInterruptsActive().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ saSystemInterruptsEnable()

GLOBAL FORCEINLINE void saSystemInterruptsEnable ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to enable a single interrupt vector.

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndexInterrupt vector to enable

saSystemInterruptsEnable Function to enable a single interrupt vector

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndexInterrupt vector to enable

Definition at line 1121 of file saint.c.

References ossaReenableInterrupts().

Referenced by saTimerTick(), and tiCOMInterruptEnable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siAbnormal()

◆ siDifAbnormal()

GLOBAL void siDifAbnormal ( agsaRoot_t agRoot,
agsaIORequestDesc_t pRequest,
bit32  status,
bit32  param,
bit32  sspTag,
bit32 pMsg1 
)

Routine to handle abnormal DIF completed IO/SMP event.

Handle abnormal completed IO/SMP

Parameters
agRoothandles for this instance of SAS/SATA hardware
pRequestPointer of IO request of the IO
statusstatus of the IO
paramLength
Returns
-void-

Definition at line 1845 of file saint.c.

References agsaDifDetails_s::ActualCRCUDT01, agsaDifDetails_s::ActualUDT2345, agsaIOMap_s::agContext, agFALSE, agNULL, AGSA_REQTYPE_MASK, AGSA_SSP_REQTYPE, agTRUE, agsaIORequestDesc_s::completionCB, agsaDifDetails_s::DIFErrDevID, agsaDifDetails_s::ErrBoffsetEDataLen, agsaDifDetails_s::ExpectedCRCUDT01, agsaDifDetails_s::ExpectedUDT2345, agsaDifDetails_s::frame, agsaLLRoot_s::freeIORequests, agsaLLRoot_s::freeReservedRequests, hpDBG_VERY_LOUD, agsaIORequestDesc_s::HTag, agsaLLRoot_s::IOMap, agsaIOMap_s::IORequest, agsaIORequestDesc_s::linkNode, LL_IOREQ_LOCKEQ_LOCK, agsaDifDetails_s::LowerLBA, MARK_OFF, OSSA_OFFSET_OF, ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), agsaIORequestDesc_s::pDevice, agsaDeviceDesc_s::pendingIORequests, agsaIORequestDesc_s::pIORequestContext, agsaIORequestDesc_s::requestType, SA_DBG1, SA_RESERVED_REQUEST_COUNT, saLlistIOAdd, saLlistIOGetCount, saLlistIORemove, agsaDifDetails_s::sasAddressHi, agsaDifDetails_s::sasAddressLo, agsaContext_s::sdkData, si_memset(), smTrace, smTraceFuncEnter, smTraceFuncExit, SSP_AGR_S_BIT, SSPTAG_BITS, status, agsaIOMap_s::Tag, agsaDifDetails_s::UpperLBA, and agsaIORequestDesc_s::valid.

Referenced by mpiSSPCompletion().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siDisableLegacy_V_Interrupts()

GLOBAL void siDisableLegacy_V_Interrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process Legacy V interrupts.

siDisableLegacyInterrupts disables interrupts called thru macro ossaDisableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndexnot used in legacy case

Definition at line 603 of file saint.c.

References agsabit32bit64_U::B64, GEN_MSGU_ODMR, GEN_MSGU_ODR, ossaHwRegWriteExt(), PCIBAR0, agsabit32bit64_U::S32, SA_DBG4, siHalRegReadExt(), smIS64bInt, V_Outbound_Doorbell_Mask_Set_Register, V_Outbound_Doorbell_Mask_Set_RegisterU, and V_Outbound_Doorbell_Set_Register.

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siDisableLegacyInterrupts()

GLOBAL void siDisableLegacyInterrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process Legacy interrupts.

siDisableLegacyInterrupts disables interrupts called thru macro ossaDisableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndexnot used in legacy case

Definition at line 580 of file saint.c.

References MSGU_ODCR, MSGU_ODMR, ODCR_CLEAR_ALL, ODMR_MASK_ALL, and ossaHwRegWrite().

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siDisableMSI_V_Interrupts()

GLOBAL void siDisableMSI_V_Interrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to disable MSI V interrupts.

siDisableMSIInterrupts disables interrupts called thru macro ossaDisableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message

Definition at line 559 of file saint.c.

References SA_ASSERT, and SA_DBG4.

◆ siDisableMSIInterrupts()

GLOBAL void siDisableMSIInterrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to disable MSI interrupts.

siDisableMSIInterrupts disables interrupts called thru macro ossaDisableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message

Definition at line 531 of file saint.c.

References MSGU_ODCR, MSGU_ODMR, ossaHwRegRead(), and ossaHwRegWrite().

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siDisableMSIX_V_Interrupts()

void siDisableMSIX_V_Interrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to disable MSIX V interrupts.

siDisableMSIXInterrupts disables interrupts called thru macro ossaDisableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message

Definition at line 503 of file saint.c.

References agsabit32bit64_U::B64, ossaHwRegWriteExt(), PCIBAR0, agsabit32bit64_U::S32, SA_DBG4, smIS64bInt, V_Outbound_Doorbell_Mask_Set_Register, and V_Outbound_Doorbell_Mask_Set_RegisterU.

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siDisableMSIXInterrupts()

GLOBAL void siDisableMSIXInterrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to disable MSIX interrupts.

siDisableMSIXInterrupts disables interrupts called thru macro ossaDisableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message

Definition at line 473 of file saint.c.

References MSGU_ODCR, MSIX_INTERRUPT_DISABLE, MSIX_TABLE_BASE, MSIX_TABLE_ELEMENT_SIZE, ossaHwRegRead(), and ossaHwRegWrite().

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siEventPhyUpRcvd()

GLOBAL void siEventPhyUpRcvd ( agsaRoot_t agRoot,
bit32  phyId,
agsaSASIdentify_t agSASIdentify,
bit32  portId,
bit32  npipps,
bit8  linkRate 
)

Routine to handle for received Phy Up event.

The handle for received Phy Up event

Parameters
agRoothandles for this instance of SAS/SATA hardware
phyIdfor the Phy Up event happened
agSASIdentifyis the remote phy Identify
portIdis the port context index of the phy up event
deviceIdis the device context index
linkRatelink up rate from SPC
Returns
-void-

Definition at line 2069 of file saint.c.

References agNULL, agTRUE, agsaLLRoot_s::freePorts, hpDBG_VERY_LOUD, agsaPort_s::linkNode, LL_PORT_LOCK, agsaContext_s::osData, OSSA_HW_EVENT_SAS_PHY_UP, OSSA_PORT_VALID, ossaHwCB(), ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), PHY_IN_PORT_MASK, PHY_STATUS_SET, PHY_UP, agsaPort_s::phyMap, agsaLLRoot_s::phys, PORT_STATE_MASK, agsaPort_s::portContext, agsaPortMap_s::PortContext, agsaPort_s::portId, agsaPortMap_s::PortID, PORTID_MASK, agsaLLRoot_s::PortMap, agsaPortMap_s::PortStatus, agsaPhy_s::pPort, SA_DBG1, SA_DBG2, SA_DBG3, saLlistAdd, saLlistGetHead, saLlistRemove, agsaContext_s::sdkData, SHIFT16, SHIFT8, smIS_SPCV8006, smTraceFuncEnter, smTraceFuncExit, agsaPort_s::status, and agsaLLRoot_s::validPorts.

Referenced by mpiHWevent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siEventSATASignatureRcvd()

GLOBAL void siEventSATASignatureRcvd ( agsaRoot_t agRoot,
bit32  phyId,
void *  pMsg,
bit32  portId,
bit32  npipps,
bit8  linkRate 
)

Routine to handle for received SATA signature event.

The handle for received SATA signature event

Parameters
agRoothandles for this instance of SAS/SATA hardware
phyIdthe phy id of the phy received the frame
pMsgthe pointer to the message payload
portIdthe port context index of the phy up event
deviceIdthe device context index
linkRatelink up rate from SPC
Returns
-void-

Definition at line 2200 of file saint.c.

References agNULL, agTRUE, agsaFisRegDeviceToHost_s::d, agsaFisRegD2HData_s::device, agsaFisRegD2HHeader_s::error, agsaFisRegD2HHeader_s::fisType, agsaLLRoot_s::freePorts, agsaFisRegDeviceToHost_s::h, hpDBG_VERY_LOUD, agsaFisRegD2HHeader_s::i_pmPort, agsaFisRegD2HData_s::lbaHigh, agsaFisRegD2HData_s::lbaHighExp, agsaFisRegD2HData_s::lbaLow, agsaFisRegD2HData_s::lbaLowExp, agsaFisRegD2HData_s::lbaMid, agsaFisRegD2HData_s::lbaMidExp, agsaPort_s::linkNode, LL_PORT_LOCK, agsaContext_s::osData, OSSA_HW_EVENT_SATA_PHY_UP, OSSA_PORT_VALID, ossaHwCB(), ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), PHY_IN_PORT_MASK, PHY_STATUS_SET, PHY_UP, agsaPort_s::phyMap, agsaLLRoot_s::phys, PORT_STATE_MASK, agsaPort_s::portContext, agsaPortMap_s::PortContext, agsaPort_s::portId, agsaPortMap_s::PortID, PORTID_MASK, agsaLLRoot_s::PortMap, agsaPortMap_s::PortStatus, agsaPhy_s::pPort, agsaFisRegD2HData_s::reserved4, agsaFisRegD2HData_s::reserved5, agsaFisRegD2HData_s::reserved6, agsaFisRegD2HData_s::reserved7, SA_DBG1, SA_DBG2, SA_DBG3, SA_DBG5, saLlistAdd, saLlistGetHead, saLlistRemove, agsaContext_s::sdkData, agsaFisRegD2HData_s::sectorCount, agsaFisRegD2HData_s::sectorCountExp, SHIFT16, SHIFT8, smTraceFuncEnter, smTraceFuncExit, agsaFisRegD2HHeader_s::status, agsaPort_s::status, and agsaLLRoot_s::validPorts.

Referenced by mpiHWevent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siEventSSPResponseWtDataRcvd()

GLOBAL void siEventSSPResponseWtDataRcvd ( agsaRoot_t agRoot,
agsaIORequestDesc_t pRequest,
agsaSSPResponseInfoUnit_t pRespIU,
bit32  param,
bit32  sspTag 
)

Routine to handle for received SAS with data payload event.

The handle for received SAS with data payload event

Parameters
agRoothandles for this instance of SAS/SATA hardware
pRequesthandles for the IOrequest
pRespIUthe pointer to the Response IU
paramPayload Length
Returns
-void-

Definition at line 1467 of file saint.c.

References agFALSE, agTRUE, agsaIORequestDesc_s::completionCB, agsaLLRoot_s::freeIORequests, agsaLLRoot_s::freeReservedRequests, hpDBG_VERY_LOUD, agsaIORequestDesc_s::linkNode, LL_IOREQ_LOCKEQ_LOCK, OSSA_IO_SUCCESS, ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), agsaIORequestDesc_s::pDevice, agsaDeviceDesc_s::pendingIORequests, agsaIORequestDesc_s::pIORequestContext, SA_DBG1, SA_RESERVED_REQUEST_COUNT, saLlistIOAdd, saLlistIOGetCount, saLlistIORemove, agsaContext_s::sdkData, smTraceFuncEnter, smTraceFuncExit, SSP_RESCV_BIT, SSP_RESCV_PAD_SHIFT, SSPTAG_BITS, and agsaIORequestDesc_s::valid.

Referenced by mpiSSPCompletion().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siFatalInterruptHandler()

LOCAL bit32 siFatalInterruptHandler ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Definition at line 77 of file saint.c.

References agFALSE, agNULL, AGSA_RC_FAILURE, AGSA_RC_SUCCESS, agTRUE, agsaFatalErrorInfo_s::errorInfo0, agsaFatalErrorInfo_s::errorInfo1, agsaFatalErrorInfo_s::errorInfo2, agsaFatalErrorInfo_s::errorInfo3, mpiHostLLConfigDescriptor_s::FatalErrorDumpLength0, mpiHostLLConfigDescriptor_s::FatalErrorDumpLength1, mpiHostLLConfigDescriptor_s::FatalErrorDumpOffset0, mpiHostLLConfigDescriptor_s::FatalErrorDumpOffset1, GEN_MSGU_SCRATCH_PAD_0, GEN_MSGU_SCRATCH_PAD_1, GEN_MSGU_SCRATCH_PAD_2, GEN_MSGU_SCRATCH_PAD_3, HDA_AES_DIF_FUNC, agsaLLRoot_s::mainConfigTable, MSGU_SCRATCH_PAD_0, MSGU_SCRATCH_PAD_1, MSGU_SCRATCH_PAD_2, MSGU_SCRATCH_PAD_3, OSSA_HW_EVENT_MALFUNCTION, ossaDisableInterrupts(), ossaHwCB(), ossaHwRegReadExt(), PCIBAR0, agsaFatalErrorInfo_s::regDumpBusBaseNum0, agsaFatalErrorInfo_s::regDumpBusBaseNum1, agsaFatalErrorInfo_s::regDumpLen0, agsaFatalErrorInfo_s::regDumpLen1, agsaFatalErrorInfo_s::regDumpOffset0, agsaFatalErrorInfo_s::regDumpOffset1, mpiHostLLConfigDescriptor_s::regDumpPCIBAR, agsaLLRoot_s::ResetFailed, SA_ASSERT, SA_DBG1, SCRATCH_PAD1_V_ERROR_STATE, SCRATCH_PAD2_FW_FLM_ERR, SCRATCH_PAD2_FW_FW_ASRT_ERR, SCRATCH_PAD2_FW_GEN_EXCEPTION_ERR, SCRATCH_PAD2_FW_HW_FATAL_ERR, SCRATCH_PAD2_FW_HW_MASK, SCRATCH_PAD2_FW_HW_NON_FATAL_ERR, SCRATCH_PAD2_FW_HW_WDG_ERR, SCRATCH_PAD2_FW_ILA_ERR, SCRATCH_PAD2_FW_UNDTMN_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_BDMA_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_ERAAE_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_GSM_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_MCPSDC_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_MCPSL2B_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_MSGU_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_OSSP0_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_OSSP1_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_OSSP2_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_PCIE_AL_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_PCIE_CORE_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_PCS_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_SDS_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_SPBC_ERR, SCRATCH_PAD2_HW_ERROR_INT_INDX_UNDETERMINED_ERROR_OCCURRED, agsaContext_s::sdkData, si_memset(), siHalRegReadExt(), V_Host_Scratchpad_2_Register, V_Host_Scratchpad_3_Register, V_Outbound_Doorbell_Mask_Set_Register, V_Outbound_Doorbell_Mask_Set_RegisterU, V_Outbound_Doorbell_Set_Register, V_Outbound_Doorbell_Set_RegisterU, V_Scratchpad_0_Register, V_Scratchpad_1_Register, V_Scratchpad_2_Register, V_Scratchpad_3_Register, and V_Scratchpad_Rsvd_0_Register.

Referenced by saDelayedInterruptHandler(), and saFatalInterruptHandler().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siIODone()

GLOBAL FORCEINLINE void siIODone ( agsaRoot_t agRoot,
agsaIORequestDesc_t pRequest,
bit32  status,
bit32  sspTag 
)

◆ siOurLegacy_V_Interrupt()

bit32 siOurLegacy_V_Interrupt ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process Legacy V interrupts.

siOurLegacyInterrupt checks if we generated interrupt called thru function pointer saRoot->OurInterrupt

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
Returns
true if we claim interrupt

Definition at line 744 of file saint.c.

References FALSE, GEN_MSGU_ODR, siHalRegReadExt(), TRUE, and V_Outbound_Doorbell_Set_Register.

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siOurLegacyInterrupt()

bit32 siOurLegacyInterrupt ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process Legacy interrupts.

siOurLegacyInterrupt checks if we generated interrupt called thru function pointer saRoot->OurInterrupt

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
Returns
true if we claim interrupt

Definition at line 711 of file saint.c.

References FALSE, MSGU_READ_ODMR, MSGU_READ_ODR, and TRUE.

Referenced by saInitialize().

Here is the caller graph for this function:

◆ siOurMSI_V_Interrupt()

bit32 siOurMSI_V_Interrupt ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process MSI V interrupts.

siOurMSIInterrupt checks if we generated interrupt called thru function pointer saRoot->OurInterrupt

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
Returns
always true

Definition at line 691 of file saint.c.

References SA_DBG4, and TRUE.

◆ siOurMSIInterrupt()

bit32 siOurMSIInterrupt ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process MSI interrupts.

siOurMSIInterrupt checks if we generated interrupt called thru function pointer saRoot->OurInterrupt

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
Returns
always true

Definition at line 672 of file saint.c.

References TRUE.

Referenced by saInitialize().

Here is the caller graph for this function:

◆ siOurMSIX_V_Interrupt()

GLOBAL bit32 siOurMSIX_V_Interrupt ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process MSIX V interrupts.

siOurMSIXInterrupt checks if we generated interrupt called thru function pointer saRoot->OurInterrupt

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
Returns
always true

Definition at line 654 of file saint.c.

References TRUE.

Referenced by saInitialize().

Here is the caller graph for this function:

◆ siOurMSIXInterrupt()

GLOBAL bit32 siOurMSIXInterrupt ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to process MSIX interrupts.

siOurMSIXInterrupt checks if we generated interrupt called thru function pointer saRoot->OurInterrupt

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
Returns
always true

Definition at line 635 of file saint.c.

References TRUE.

Referenced by saInitialize().

Here is the caller graph for this function:

◆ siProcessOBMsg()

LOCAL FORCEINLINE bit32 siProcessOBMsg ( agsaRoot_t agRoot,
bit32  count,
bit32  queueNum 
)

Routine to handle Outbound Message.

The handle for outbound message

Parameters
agRoothandles for this instance of SAS/SATA hardware
countinterrupt message count
queueNumoutbound queue
Returns

Definition at line 1141 of file saint.c.

References agNULL, mpiOCQueue_s::agRoot, AGSA_RC_FAILURE, AGSA_RC_SUCCESS, mpiOCQueue_s::consumerIdx, mpiOCQueue_s::elementSize, agsaFatalErrorInfo_s::errorInfo0, agsaFatalErrorInfo_s::errorInfo1, agsaFatalErrorInfo_s::errorInfo2, agsaFatalErrorInfo_s::errorInfo3, FALSE, mpiHostLLConfigDescriptor_s::FatalErrorDumpLength0, mpiHostLLConfigDescriptor_s::FatalErrorDumpLength1, mpiHostLLConfigDescriptor_s::FatalErrorDumpOffset0, mpiHostLLConfigDescriptor_s::FatalErrorDumpOffset1, GEN_MSGU_SCRATCH_PAD_0, GEN_MSGU_SCRATCH_PAD_1, GEN_MSGU_SCRATCH_PAD_2, GEN_MSGU_SCRATCH_PAD_3, hpDBG_IOMB, hpDBG_VERY_LOUD, LL_IOREQ_OBQ_LOCK, agsaLLRoot_s::mainConfigTable, MPI_DEBUG_TRACE, MPI_DEBUG_TRACE_OBQ, mpiMsgConsume(), mpiMsgFreeSet(), mpiParseOBIomb(), MSGU_SCRATCH_PAD_0, MSGU_SCRATCH_PAD_1, MSGU_SCRATCH_PAD_2, MSGU_SCRATCH_PAD_3, OSSA_HW_EVENT_MALFUNCTION, ossaHwCB(), ossaLogIomb, ossaQueueProcessed, ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), agsaLLRoot_s::outboundQueue, mpiOCQueue_s::piPointer, mpiOCQueue_s::producerIdx, mpiOCQueue_s::qNumber, agsaFatalErrorInfo_s::regDumpBusBaseNum0, agsaFatalErrorInfo_s::regDumpBusBaseNum1, agsaFatalErrorInfo_s::regDumpLen0, agsaFatalErrorInfo_s::regDumpLen1, agsaFatalErrorInfo_s::regDumpOffset0, agsaFatalErrorInfo_s::regDumpOffset1, mpiHostLLConfigDescriptor_s::regDumpPCIBAR, SA_DBG1, SA_DBG3, SA_FATAL_ERROR_FATAL_ERROR, SA_FATAL_ERROR_SP1_AAP1_ERR_MASK, SA_FATAL_ERROR_SP2_IOP_ERR_MASK, agsaContext_s::sdkData, si_memset(), siHalRegReadExt(), smIS_SPC(), smTrace, smTraceFuncEnter, and smTraceFuncExit.

Referenced by saDelayedInterruptHandler().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siReenableLegacy_V_Interrupts()

GLOBAL void siReenableLegacy_V_Interrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to reenable Legacy V interrupts.

siReenableLegacyInterrupts reenableinterrupts called thru macro ossaReenableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndexalways zero

Definition at line 1079 of file saint.c.

References GEN_MSGU_ODMR, GEN_MSGU_ODR, ossaHwRegWriteExt(), PCIBAR0, SA_DBG5, siHalRegReadExt(), V_Outbound_Doorbell_Clear_Register, V_Outbound_Doorbell_Mask_Clear_Register, V_Outbound_Doorbell_Mask_Set_Register, and V_Outbound_Doorbell_Set_Register.

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siReenableLegacyInterrupts()

GLOBAL void siReenableLegacyInterrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to reenable Legacy interrupts.

siReenableLegacyInterrupts reenableinterrupts called thru macro ossaReenableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndexalways zero

Definition at line 1055 of file saint.c.

References GEN_MSGU_ODCR, GEN_MSGU_ODMR, MSGU_ODCR, MSGU_ODMR, ODCR_CLEAR_ALL, ODMR_CLEAR_ALL, and siHalRegWriteExt().

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siReenableMSI_V_Interrupts()

GLOBAL void siReenableMSI_V_Interrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to reenable MSI V interrupts.

siReenableMSIXInterrupts reenableinterrupts called thru macro ossaReenableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message

Definition at line 1033 of file saint.c.

References SA_ASSERT, and SA_DBG4.

◆ siReenableMSIInterrupts()

GLOBAL void siReenableMSIInterrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to reenable MSI interrupts.

siReenableMSIXInterrupts reenableinterrupts called thru macro ossaReenableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message

Definition at line 1008 of file saint.c.

References GEN_MSGU_ODMR, MSGU_ODMR, siHalRegReadExt(), and siHalRegWriteExt().

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siReenableMSIX_V_Interrupts()

void siReenableMSIX_V_Interrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to reenable MSIX interrupts.

siReenableMSIXInterrupts reenableinterrupts called thru macro ossaReenableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message

Definition at line 967 of file saint.c.

References agsabit32bit64_U::B64, ossaHwRegWriteExt(), PCIBAR0, agsabit32bit64_U::S32, SA_DBG1, SA_DBG4, agsaContext_s::sdkData, smIS64bInt, agsaLLRoot_s::sysIntsActive, V_Outbound_Doorbell_Mask_Clear_Register, and V_Outbound_Doorbell_Mask_Clear_RegisterU.

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siReenableMSIXInterrupts()

void siReenableMSIXInterrupts ( agsaRoot_t agRoot,
bit32  interruptVectorIndex 
)

Function to reenable MSIX interrupts.

siReenableMSIXInterrupts reenableinterrupts called thru macro ossaReenableInterrupts

Parameters
agRootOS Layer-specific and LL Layer-specific context handles for this instance of SAS/SATA hardware
interruptVectorIndex- vector index for message

Definition at line 935 of file saint.c.

References GEN_MSGU_ODCR, MSGU_ODCR, MSIX_INTERRUPT_ENABLE, MSIX_TABLE_BASE, MSIX_TABLE_ELEMENT_SIZE, ossaHwRegWriteExt(), PCIBAR0, SA_DBG4, and siHalRegWriteExt().

Referenced by saInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ siSMPRespRcvd()

GLOBAL void siSMPRespRcvd ( agsaRoot_t agRoot,
agsaSMPCompletionRsp_t pIomb,
bit32  payloadSize,
bit32  tag 
)

Routine to handle for received SMP response event.

The handle for received SMP response event

Parameters
agRoothandles for this instance of SAS/SATA hardware
pIombPointer of payload of IOMB
payloadSizesize of the payload
tagthe tag of the request SMP
Returns
-void-

Definition at line 1961 of file saint.c.

References agsaIOMap_s::agContext, agFALSE, agNULL, agTRUE, agsaIORequestDesc_s::completionCB, agsaLLRoot_s::freeIORequests, agsaLLRoot_s::freeReservedRequests, hpDBG_VERY_LOUD, agsaLLRoot_s::IOMap, agsaIOMap_s::IORequest, agsaIORequestDesc_s::IRmode, agsaIORequestDesc_s::linkNode, LL_IOREQ_LOCKEQ_LOCK, MARK_OFF, OSSA_IO_SUCCESS, ossaSingleThreadedEnter(), ossaSingleThreadedLeave(), agsaIORequestDesc_s::pDevice, agsaDeviceDesc_s::pendingIORequests, agsaIORequestDesc_s::pIORequestContext, agsaIORequestDesc_s::pPort, SA_ASSERT, SA_DBG1, SA_DBG3, SA_RESERVED_REQUEST_COUNT, saLlistIOAdd, saLlistIOGetCount, saLlistIORemove, agsaContext_s::sdkData, agsaSMPCompletionRsp_s::SMPrsp, smTraceFuncEnter, smTraceFuncExit, agsaIOMap_s::Tag, and agsaIORequestDesc_s::valid.

Referenced by mpiSMPCompletion().

Here is the call graph for this function:
Here is the caller graph for this function: