33#ifdef SA_ENABLE_TRACE_FUNCTIONS
37#define siTraceFileID 'L'
75 SA_DBG3((
"siPortSASDeviceAdd: start\n"));
98 if (
agTRUE == sasInitiator )
114 SA_DBG3((
"siPortSASDeviceAdd: Device Type 0x%x, Port Context %p\n", pDevice->
deviceType, pPort));
115 pDevice->
pPort = pPort;
124 for (i = 0; i < 4; i++)
149 SA_DBG1((
"siPortSASDeviceAdd: device allocation failed\n"));
151 SA_DBG3((
"siPortSASDeviceAdd: end\n"));
188 SA_DBG3((
"siPortDeviceRemove(SAS/SATA): DeviceIndex %d Device Context %p\n", pDevice->
DeviceMapIndex, pDevice));
246 bit32 itNexusTimeout,
247 bit32 firstBurstSize,
282 SA_DBG3((
"siPortSATADeviceAdd: DeviceType 0x%x Port Context %p\n", pDevice->
deviceType, pPort));
290 for (i = 0; i < 4; i++)
299 pDevice->
pPort = pPort;
312 SA_DBG1((
"siPortSATADeviceAdd: device allocation failed\n"));
314 SA_DBG3((
"siPortSATADeviceAdd: end\n"));
387 SA_DBG3((
"siPortDeviceListRemove(SAS/SATA): PortID %d Device Context %p\n", pPort->
portId, pDevice));
446 SA_DBG1((
"saPortControl: saRoot == agNULL\n"));
451 SA_DBG1((
"saPortControl: portContext %p portOperation 0x%x param0 0x%x param1 0x%x\n", agPortContext, portOperation, param0, param1));
464 SA_DBG2((
"saPortControl, using saRoot->freeReservedRequests\n"));
469 SA_DBG1((
"saPortControl, No request from free list Not using saRoot->freeReservedRequests\n"));
520 SA_DBG1((
"saPortControl: saving pRequest (%p) for later use\n", pRequest));
529 SA_DBG1((
"saPortControl, sending IOMB failed\n" ));
535 SA_DBG1((
"saPortControl,0x%x AGSA_PORT_HARD_RESET 0x%x param0 0x%x\n",
570 agContext = agContext;
571 SA_DBG4((
"saEncryptGetMode, encryptInfo %p\n",encryptInfo ));
574 bit32 ScratchPad1 =0;
575 bit32 ScratchPad3 =0;
580 encryptInfo->
flag = 0;
609 SA_DBG1((
"saEncryptGetMode, SCRATCH_PAD3_V_ENC_DISABLED 1 0x%08X 3 0x%08X\n",ScratchPad1,ScratchPad3 ));
610 encryptInfo->
status = 0xFFFF;
617 SA_DBG1((
"saEncryptGetMode, SCRATCH_PAD3_V_ENC_DIS_ERR 1 0x%08X 3 0x%08X\n",ScratchPad1,ScratchPad3 ));
640 SA_DBG1((
"saEncryptGetMode, SCRATCH_PAD3_V_ENC_ENA_ERR 1 0x%08X 3 0x%08X\n",ScratchPad1,ScratchPad3 ));
645 SA_DBG1((
"saEncryptGetMode, SCRATCH_PAD3_V_ENC_ENA_ERR 2 0x%08X 3 0x%08X\n",ScratchPad1,ScratchPad3 ));
649 SA_DBG1((
"saEncryptGetMode, SCRATCH_PAD3_V_ENC_ENA_ERR 3 0x%08X 3 0x%08X\n",ScratchPad1,ScratchPad3 ));
661 SA_DBG1((
"saEncryptGetMode,encryptInfo status 0x%08X CipherMode 0x%X SecurityMode 0x%X\n" ,
666#ifdef CCFLAGS_SPCV_FPGA_REVB
675 SA_DBG1((
"saEncryptGetMode, SCRATCH_PAD1_V_RAAE_ERR 1 0x%08X 3 0x%08X\n",ScratchPad1,ScratchPad3 ));
680 SA_DBG1((
"saEncryptGetMode, RAAE not ready AGSA_RC_BUSY 1 0x%08X 3 0x%08X\n",ScratchPad1,ScratchPad3 ));
692 SA_DBG2((
"saEncryptGetMode, encryptionCipherMode 0x%x encryptionSecurityMode 0x%x flag 0x%x status 0x%x\n",
697 SA_DBG2((
"saEncryptGetMode, ScratchPad3 0x%x returns 0x%x\n",ScratchPad3, ret));
702 SA_DBG1((
"saEncryptGetMode, SPC AGSA_RC_NOT_SUPPORTED\n"));
725 bit32 ScratchPad1 =0;
732 SA_DBG2((
"saEncryptSetMode, encryptionCipherMode 0x%x encryptionSecurityMode 0x%x status 0x%x\n",
747 pagControllerConfig->
tag =0;
749 SA_DBG2((
"saEncryptSetMode,tag 0x%x pageCode 0x%x\n",
750 pagControllerConfig->
tag,
754 SA_DBG2((
"saEncryptSetMode, 0x%x 0x%x 0x%x 0x%x\n",
761 SA_DBG2((
"saEncryptSetMode, 0x%x 0x%x 0x%x 0x%x\n",
768 SA_DBG2((
"saEncryptSetMode, 0x%x 0x%x 0x%x 0x%x\n",
777 SA_DBG2((
"saEncryptSetMode, pageCode 0x%x tag 0x%x status 0x%x\n",
779 pagControllerConfig->
tag,
785 SA_DBG2((
"saEncryptSetMode,ScratchPad1 not ready %08X\n",ScratchPad1 ));
824 SA_DBG2((
"saEncryptKekUpdate, flags 0x%x newKekIndex 0x%x wrapperKekIndex 0x%x encryptKekBlob %p\n",
flags,newKekIndex,
wrapperKekIndex,encryptKekBlob));
825 SA_DBG2((
"saEncryptKekUpdate, 0x%02X%02X%02X%02X 0x%02X%02X%02X%02X\n",
830 SA_DBG2((
"saEncryptKekUpdate, 0x%02X%02X%02X%02X 0x%02X%02X%02X%02X\n",
835 SA_DBG2((
"saEncryptKekUpdate, 0x%02X%02X%02X%02X 0x%02X%02X%02X%02X\n",
840 SA_DBG2((
"saEncryptKekUpdate, 0x%02X%02X%02X%02X 0x%02X%02X%02X%02X\n",
845 SA_DBG2((
"saEncryptKekUpdate, 0x%02X%02X%02X%02X 0x%02X%02X%02X%02X\n",
850 SA_DBG2((
"saEncryptKekUpdate, 0x%02X%02X%02X%02X 0x%02X%02X%02X%02X\n",
858 OSSA_WRITE_LE_32(agRoot,
862 for (i = 0; i < 12; i++)
865 OSSA_WRITE_LE_32(agRoot,
879#ifdef HIALEAH_ENCRYPTION
889 bit32 ScratchPad1 =0;
890 bit32 ScratchPad3 =0;
899 SA_DBG2((
"saEncryptHilUpdate ScratchPad1 0x08%x ScratchPad3 0x08%x\n",ScratchPad1,ScratchPad3));
903 OSSA_WRITE_LE_32(agRoot,
947 OSSA_WRITE_LE_32(agRoot,
978 bit32 dekTableSelect,
982 bit32 dekNumberOfEntries,
992 SA_DBG2((
"saEncryptDekCacheUpdate, kekIndex 0x%x dekTableSelect 0x%x dekAddrHi 0x%x dekAddrLo 0x%x\n",
997 SA_DBG2((
"saEncryptDekCacheUpdate, dekIndex 0x%x dekNumberOfEntries 0x%x dekBlobFormat 0x%x dekTableKeyEntrySize 0x%x\n",
1006 OSSA_WRITE_LE_32(agRoot,
1011 OSSA_WRITE_LE_32(agRoot,
1016 OSSA_WRITE_LE_32(agRoot,
1021 OSSA_WRITE_LE_32(agRoot,
1026 OSSA_WRITE_LE_32(agRoot,
1029 dekNumberOfEntries);
1031 OSSA_WRITE_LE_32(agRoot,
1075 OSSA_WRITE_LE_32(agRoot,
1080 OSSA_WRITE_LE_32(agRoot,
1086 OSSA_WRITE_LE_32(agRoot,
1122 SA_DBG1((
"saDIFEncryptionOffloadStart: start op=%d, agsaDifEncPayload=%p\n", op, agsaDifEncPayload));
1130 SA_DBG1((
"saDIFEncryptionOffloadStart: spcv only AGSA_RC_FAILURE \n"));
1133 SA_DBG1((
"saDIFEncryptionOffloadStart: end status 0x%x\n",ret));
1170 SA_DBG2((
"saSetControllerConfig: queueNum %d modePage 0x%x length %d\n",queueNum,modePage,length ));
1179 SA_DBG1((
"saSetControllerConfig: AGSA_RC_FAILURE queueNum %d modePage 0x%x length %d\n",queueNum,modePage,length ));
1184 SA_DBG1((
"saSetControllerConfig: Warning!!!!GENERAL_CONFIG_PAGE cannot be set\n"));
1192 agControllerConfig.
tag = 0;
1194 src = (
bit32 *) buffer;
1196 for (i = 0; i < (length / 4); i++)
1198 OSSA_WRITE_LE_32(agRoot,
1199 &agControllerConfig,
1208 SA_DBG1((
"saSetControllerConfig: AGSA_RC_FAILURE (sending) queueNum %d modePage 0x%x length %d\n",queueNum,modePage,length ));
1215 SA_DBG1((
"saSetControllerConfig: spcv only AGSA_RC_FAILURE queueNum %d modePage 0x%x length %d\n",queueNum,modePage,length ));
1248 SA_DBG2((
"saGetControllerConfig, modePage 0x%x agContext %p flag0 0x%08x flag1 0x%08x\n",modePage,agContext, flag0, flag1 ));
1253 agControllerConfig.
pageCode = modePage;
1263 SA_DBG1((
"saGetControllerConfig: spcv only AGSA_RC_FAILURE queueNum %d modePage 0x%x flag0 0x%08x flag1 0x%08x\n",queueNum,modePage, flag0, flag1 ));
1277 void *TestDescriptor)
1285 SA_DBG1((
"saEncryptSelftestExecute, enter\n" ));
1311 SA_DBG1((
"saOperatorManagement, enter\n" ));
1316 flag = (flag & ~SA_OPR_MGMNT_FLAG_MASK);
1368 SA_DBG1((
"saSetOperator, flag 0x%x cert %p\n",flag, cert));
1408 SA_DBG1((
"saGetOperator, option 0x%x 0x%08x_%08x\n",option,AddrHi,AddrLo ));
1412 GetOperatorCmd.
option = option;
bit32 dekTableKeyEntrySize
#define smTraceFuncEnter(L, I)
#define smTraceFuncExit(L, S, I)
#define OS_ASSERT(expr, message)
#define SA_RESERVED_REQUEST_COUNT
#define AGSA_ENCRYPTION_GENERAL_CONFIG_PAGE
#define AGSA_ENCRYPTION_HMAC_CONFIG_PAGE
#define OSSA_OFFSET_OF(STRUCT_TYPE, FEILD)
#define AGSA_ENCRYPTION_DEK_CONFIG_PAGE
#define AGSA_INTERRUPT_CONFIGURATION_PAGE
#define AGSA_ENCRYPTION_CONTROL_PARM_PAGE
#define OperatorAuthenticationEnable_AUT
#define AGSA_PORT_CLEAN_UP
#define agsaEncryptCipherModeXTS
#define MAX_IO_DEVICE_ENTRIES
#define AGSA_RC_NOT_SUPPORTED
#define ReturnToFactoryMode_ARF
void(* ossaDIFEncryptionOffloadStartCB_t)(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 status, agsaOffloadDifDetails_t *agsaOffloadDifDetails)
#define AGSA_SAS_PROTOCOL_TIMER_CONFIG_PAGE
#define AGSA_PORT_HARD_RESET
#define SA_IDFRM_GET_SAS_ADDRESSLO(identFrame)
#define SA_IDFRM_GET_SAS_ADDRESSHI(identFrame)
#define LL_IOREQ_LOCKEQ_LOCK
#define SAS_SATA_UNKNOWN_DEVICE
#define AUTO_HARD_RESET_DEREG_FLAG
#define PORT_INVALIDATING
#define AUTO_FW_CLEANUP_DEREG_FLAG
This file defines global types.
#define SCRATCH_PAD1_V_RAAE_ERR
#define SCRATCH_PAD3_V_AUT
#define SCRATCH_PAD3_V_ENC_DISABLED
#define SCRATCH_PAD3_V_SMF_ENABLED
#define V_Scratchpad_3_Register
#define SCRATCH_PAD3_V_SMB_ENABLED
#define SCRATCH_PAD3_V_XTS_ENABLED
#define V_Scratchpad_1_Register
#define SCRATCH_PAD1_V_RAAE_MASK
#define SCRATCH_PAD3_V_ENC_ENA_ERR
#define SCRATCH_PAD3_V_ENC_MASK
#define SCRATCH_PAD3_V_SMA_ENABLED
#define SCRATCH_PAD3_V_ERR_CODE
#define SCRATCH_PAD3_V_ENC_READY
#define SCRATCH_PAD3_V_ARF
#define SCRATCH_PAD3_V_ENC_DIS_ERR
#define SCRATCH_PAD3_V_SM_MASK
#define saLlistIOAdd(pList, pLink)
#define saLlistIORemove(pList, pLink)
#define saLlistIOGetHead(pList)
#define saLlistAdd(pList, pLink)
saLlistAdd macro
#define saLlistIOGetCount(pList)
#define saLlistRemove(pList, pLink)
saLlistRemove macro
#define saLlistInitialize(pList)
saLlistInitialize macro
#define saLlistGetHead(pList)
saLlistGetHead macro
GLOBAL bit32 mpiDekManagementCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaDekManagementCmd_t *agDekMgmt, bit32 queueNum)
SAS Encryption DEK management command.
GLOBAL bit32 mpiGetOperatorCmd(agsaRoot_t *agRoot, bit32 queueNum, agsaContext_t *agContext, agsaGetOperatorCmd_t *operatorcode)
This command sends get operator command.
GLOBAL bit32 mpiEncryptBistCmd(agsaRoot_t *agRoot, bit32 queueNum, agsaContext_t *agContext, agsaEncryptBist_t *bist)
This command sends encrypt self test command.
GLOBAL bit32 mpiSetOperatorCmd(agsaRoot_t *agRoot, bit32 queueNum, agsaContext_t *agContext, agsaSetOperatorCmd_t *operatorcode)
This command sends set operator command.
GLOBAL bit32 mpiOperatorManagementCmd(agsaRoot_t *agRoot, bit32 queueNum, agsaContext_t *agContext, agsaOperatorMangmentCmd_t *operatorcode)
This command sends operator management command.
GLOBAL bit32 mpiSetControllerConfigCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaSetControllerConfigCmd_t *agControllerConfig, bit32 queueNum, bit8 modePageContext)
SAS Set Controller Configuration Command.
GLOBAL bit32 mpiDIFEncryptionOffloadCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 op, agsaDifEncPayload_t *agDifEncOffload, ossaDIFEncryptionOffloadStartCB_t agCB)
GLOBAL bit32 mpiKekManagementCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaKekManagementCmd_t *agKekMgmt, bit32 queueNum)
SAS Encryption KEK command.
GLOBAL bit32 mpiGetControllerConfigCmd(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaGetControllerConfigCmd_t *agControllerConfig, bit32 queueNum)
SAS Get Controller Configuration Command.
GLOBAL bit32 mpiBuildCmd(agsaRoot_t *agRoot, bit32 *payload, mpiMsgCategory_t category, bit16 opcode, bit16 size, bit32 queueNum)
Build a IOMB command and send to SPC.
#define KEK_MGMT_SUBOP_UPDATE
#define OPC_INB_PORT_CONTROL
#define DEK_MGMT_SUBOP_UPDATE
#define KEK_MGMT_SUBOP_INVALIDATE
#define KEK_MGMT_SUBOP_KEYCARDUPDATE
#define DEK_MGMT_SUBOP_INVALIDATE
GLOBAL FORCEINLINE void ossaSingleThreadedEnter(agsaRoot_t *agRoot, bit32 syncLockId)
ossaSingleThreadedEnter
GLOBAL FORCEINLINE void ossaSingleThreadedLeave(agsaRoot_t *agRoot, bit32 syncLockId)
ossaSingleThreadedLeave
GLOBAL FORCEINLINE bit32 ossaHwRegRead(agsaRoot_t *agRoot, bit32 regOffset)
GLOBAL void siPortDeviceListRemove(agsaRoot_t *agRoot, agsaPort_t *pPort, agsaDeviceDesc_t *pDevice)
The function to remove a device descriptor.
GLOBAL bit32 saEncryptKekInvalidate(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 kekIndex)
GLOBAL void siPortDeviceRemove(agsaRoot_t *agRoot, agsaPort_t *pPort, agsaDeviceDesc_t *pDevice, bit32 unmap)
The function to remove a device descriptor.
GLOBAL agsaDeviceDesc_t * siPortSATADeviceAdd(agsaRoot_t *agRoot, agsaPort_t *pPort, agsaDeviceDesc_t *pSTPBridge, bit8 *pSignature, bit8 pm, bit8 pmField, bit32 smpReqTimeout, bit32 itNexusTimeout, bit32 firstBurstSize, bit8 dTypeSRate, bit32 flag)
Add a SATA device to the discovery list of the port.
GLOBAL agsaDeviceDesc_t * siPortSASDeviceAdd(agsaRoot_t *agRoot, agsaPort_t *pPort, agsaSASIdentify_t sasIdentify, bit32 sasInitiator, bit32 smpTimeout, bit32 itNexusTimeout, bit32 firstBurstSize, bit8 dTypeSRate, bit32 flag)
Add a SAS device to the discovery list of the port.
GLOBAL bit32 saEncryptGetMode(agsaRoot_t *agRoot, agsaContext_t *agContext, agsaEncryptInfo_t *encryptInfo)
GLOBAL bit32 saEncryptDekCacheInvalidate(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 dekTable, bit32 dekIndex)
GLOBAL bit32 saOperatorManagement(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 flag, bit8 role, agsaID_t *id, agsaEncryptKekBlob_t *kblob)
GLOBAL void siPortInvalid(agsaRoot_t *agRoot, agsaPort_t *pPort)
Invalid a port.
GLOBAL bit32 saDIFEncryptionOffloadStart(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 op, agsaDifEncPayload_t *agsaDifEncPayload, ossaDIFEncryptionOffloadStartCB_t agCB)
GLOBAL bit32 saEncryptSelftestExecute(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 type, bit32 length, void *TestDescriptor)
GLOBAL bit32 saGetControllerConfig(agsaRoot_t *agRoot, bit32 queueNum, bit32 modePage, bit32 flag0, bit32 flag1, agsaContext_t *agContext)
GLOBAL bit32 saEncryptDekCacheUpdate(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 kekIndex, bit32 dekTableSelect, bit32 dekAddrHi, bit32 dekAddrLo, bit32 dekIndex, bit32 dekNumberOfEntries, bit32 dekBlobFormat, bit32 dekTableKeyEntrySize)
GLOBAL bit32 saPortControl(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaPortContext_t *agPortContext, bit32 portOperation, bit32 param0, bit32 param1)
Initiate a Port COntrol IOMB command.
GLOBAL bit32 saSetControllerConfig(agsaRoot_t *agRoot, bit32 queueNum, bit32 modePage, bit32 length, void *buffer, agsaContext_t *agContext)
GLOBAL bit32 saGetOperator(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 option, bit32 AddrHi, bit32 AddrLo)
GLOBAL bit32 saSetOperator(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 flag, void *cert)
GLOBAL bit32 saEncryptKekUpdate(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, bit32 flags, bit32 newKekIndex, bit32 wrapperKekIndex, bit32 blobFormat, agsaEncryptKekBlob_t *encryptKekBlob)
GLOBAL bit32 saEncryptSetMode(agsaRoot_t *agRoot, agsaContext_t *agContext, bit32 queueNum, agsaEncryptInfo_t *mode)
GLOBAL FORCEINLINE void * si_memcpy(void *dst, void *src, bit32 count)
memcopy
GLOBAL FORCEINLINE void * si_memset(void *s, int c, bit32 n)
memset
GLOBAL bit32 smIS_SPCV(agsaRoot_t *agRoot)
data structure stores OS specific and LL specific context
data structure for SAS protocol timer configuration page.
agsaSATADeviceInfo_t sataDeviceInfo
agsaSASDeviceInfo_t sasDeviceInfo