#include <Library/MemoryAllocationLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
\r
-#define FW_PORT 0x510\r
-#define FW_IPORT 0x511\r
+#define FW_PORT 0x510\r
+#define FW_IPORT 0x511\r
\r
/* Transport protocol basic operations */\r
-#define OP_NULL 1\r
-#define OP_ECHO 2\r
-#define OP_GET 3\r
-#define OP_GET_LEN 4\r
-#define OP_SET 5\r
+#define OP_NULL 1\r
+#define OP_ECHO 2\r
+#define OP_GET 3\r
+#define OP_GET_LEN 4\r
+#define OP_SET 5\r
\r
/* Transport protocol error returns */\r
#define T_ESUCCESS 0\r
#define T_E2BIG 7\r
#define T_EMSGSIZE 40\r
\r
-#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))\r
+#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))\r
\r
-STATIC CONST CHAR8 mBhyveSig[4] = { 'B', 'H', 'Y', 'V' };\r
+STATIC CONST CHAR8 mBhyveSig[4] = { 'B', 'H', 'Y', 'V' };\r
\r
-STATIC BOOLEAN mBhyveFwCtlSupported = FALSE;\r
+STATIC BOOLEAN mBhyveFwCtlSupported = FALSE;\r
\r
-STATIC INT32 mBhyveFwCtlTxid = 0xa5;\r
+STATIC INT32 mBhyveFwCtlTxid = 0xa5;\r
\r
/* XXX Maybe a better inbuilt version of this ? */\r
typedef struct {\r
- VOID *Base;\r
+ VOID *Base;\r
UINT32 Len;\r
} BIO_VEC;\r
\r
RETURN_STATUS\r
EFIAPI\r
BhyveFwCtl_CvtErr (\r
- IN UINT32 errno\r
+ IN UINT32 errno\r
)\r
{\r
- RETURN_STATUS Status;\r
+ RETURN_STATUS Status;\r
\r
switch (errno) {\r
- case T_ESUCCESS:\r
- Status = RETURN_SUCCESS;\r
- break;\r
- case T_ENOENT:\r
- Status = RETURN_NOT_FOUND;\r
- break;\r
- case T_E2BIG:\r
- Status = RETURN_INVALID_PARAMETER;\r
- break;\r
- case T_EMSGSIZE:\r
- Status = RETURN_BUFFER_TOO_SMALL;\r
- break;\r
- default:\r
- Status = RETURN_PROTOCOL_ERROR;\r
- break;\r
+ case T_ESUCCESS:\r
+ Status = RETURN_SUCCESS;\r
+ break;\r
+ case T_ENOENT:\r
+ Status = RETURN_NOT_FOUND;\r
+ break;\r
+ case T_E2BIG:\r
+ Status = RETURN_INVALID_PARAMETER;\r
+ break;\r
+ case T_EMSGSIZE:\r
+ Status = RETURN_BUFFER_TOO_SMALL;\r
+ break;\r
+ default:\r
+ Status = RETURN_PROTOCOL_ERROR;\r
+ break;\r
}\r
\r
return Status;\r
UINT32\r
EFIAPI\r
BIov_WLen (\r
- IN BIO_VEC b[]\r
+ IN BIO_VEC b[]\r
)\r
{\r
- UINT32 i;\r
- UINT32 tLen;\r
+ UINT32 i;\r
+ UINT32 tLen;\r
\r
tLen = 0;\r
\r
if (b != NULL) {\r
- for (i = 0; b[i].Base != NULL; i++)\r
- tLen += ROUNDUP (b[i].Len, sizeof(UINT32));\r
+ for (i = 0; b[i].Base != NULL; i++) {\r
+ tLen += ROUNDUP (b[i].Len, sizeof (UINT32));\r
+ }\r
}\r
\r
return tLen;\r
UINT32\r
BIov_Send_Rem (\r
IN UINT32 *Data,\r
- IN UINT32 Len\r
+ IN UINT32 Len\r
)\r
{\r
union {\r
- UINT8 c[4];\r
+ UINT8 c[4];\r
UINT32 w;\r
} u;\r
- UINT8 *cdata;\r
- UINT32 i;\r
+ UINT8 *cdata;\r
+ UINT32 i;\r
\r
cdata = (UINT8 *)Data;\r
- u.w = 0;\r
+ u.w = 0;\r
\r
- for (i = 0; i < Len; i++)\r
+ for (i = 0; i < Len; i++) {\r
u.c[i] = *cdata++;\r
+ }\r
\r
return u.w;\r
}\r
VOID\r
BIov_Send (\r
IN char *Data,\r
- IN UINT32 Len\r
+ IN UINT32 Len\r
)\r
{\r
- UINT32 *LData;\r
+ UINT32 *LData;\r
\r
LData = (UINT32 *)Data;\r
\r
- while (Len > sizeof(UINT32)) {\r
+ while (Len > sizeof (UINT32)) {\r
IoWrite32 (FW_PORT, *LData++);\r
- Len -= sizeof(UINT32);\r
+ Len -= sizeof (UINT32);\r
}\r
\r
if (Len > 0) {\r
STATIC\r
VOID\r
BIov_SendAll (\r
- IN BIO_VEC b[]\r
- )\r
+ IN BIO_VEC b[]\r
+ )\r
{\r
- INT32 i;\r
+ INT32 i;\r
\r
if (b != NULL) {\r
for (i = 0; b[i].Base; i++) {\r
STATIC\r
VOID\r
EFIAPI\r
-BhyveFwCtl_MsgSend(\r
- IN UINT32 OpCode,\r
+BhyveFwCtl_MsgSend (\r
+ IN UINT32 OpCode,\r
IN BIO_VEC Data[]\r
)\r
{\r
BIO_VEC hIov[4];\r
- UINT32 Hdr[3];\r
- UINT32 i;\r
+ UINT32 Hdr[3];\r
+ UINT32 i;\r
\r
/* Set up header as an iovec */\r
for (i = 0; i < 3; i++) {\r
hIov[i].Base = &Hdr[i];\r
- hIov[i].Len = sizeof(Hdr[0]);\r
+ hIov[i].Len = sizeof (Hdr[0]);\r
}\r
+\r
hIov[i].Base = NULL;\r
- hIov[i].Len = 0;\r
+ hIov[i].Len = 0;\r
\r
/* Initialize header */\r
Hdr[0] = BIov_WLen (hIov) + BIov_WLen (Data);\r
STATIC\r
RETURN_STATUS\r
EFIAPI\r
-BhyveFwCtl_MsgRecv(\r
- OUT MSG_RX_HDR *Rhdr,\r
- OUT BIO_VEC Data[]\r
+BhyveFwCtl_MsgRecv (\r
+ OUT MSG_RX_HDR *Rhdr,\r
+ OUT BIO_VEC Data[]\r
)\r
{\r
RETURN_STATUS Status;\r
- UINT32 *Dp;\r
+ UINT32 *Dp;\r
UINT32 Rd;\r
UINT32 remLen;\r
INT32 oLen;\r
\r
Rd = IoRead32 (FW_PORT);\r
if (Rd < sizeof (MSG_RX_HDR)) {\r
- ;\r
}\r
\r
/* Read in header and setup initial error */\r
Status = BhyveFwCtl_CvtErr (Rhdr->Err);\r
\r
remLen = Rd - sizeof (MSG_RX_HDR);\r
- xLen = 0;\r
+ xLen = 0;\r
\r
/*\r
* A few cases to handle:\r
* - the response is zero-length\r
*/\r
if (Data != NULL) {\r
- Dp = (UINT32 *)Data[0].Base;\r
+ Dp = (UINT32 *)Data[0].Base;\r
oLen = remLen;\r
if (remLen > Data[0].Len) {\r
Status = RETURN_BUFFER_TOO_SMALL;\r
- xLen = remLen - Data[0].Len;\r
- oLen = remLen = Data[0].Len;\r
+ xLen = remLen - Data[0].Len;\r
+ oLen = remLen = Data[0].Len;\r
}\r
+\r
while (remLen > 0) {\r
- *Dp++ = IoRead32 (FW_PORT);\r
+ *Dp++ = IoRead32 (FW_PORT);\r
remLen -= sizeof (UINT32);\r
}\r
+\r
Data[0].Len = oLen;\r
} else {\r
/* No user data, but data returned - drop */\r
if (remLen > 0) {\r
Status = RETURN_BUFFER_TOO_SMALL;\r
- xLen = remLen;\r
+ xLen = remLen;\r
}\r
}\r
\r
/* Drop additional data */\r
while (xLen > 0) {\r
- (void) IoRead32 (FW_PORT);\r
+ (void)IoRead32 (FW_PORT);\r
xLen -= sizeof (UINT32);\r
}\r
\r
return Status;\r
}\r
\r
-\r
STATIC\r
RETURN_STATUS\r
EFIAPI\r
-BhyveFwCtl_Msg(\r
- IN UINT32 OpCode,\r
- IN BIO_VEC Sdata[],\r
- OUT BIO_VEC Rdata[]\r
- )\r
+BhyveFwCtl_Msg (\r
+ IN UINT32 OpCode,\r
+ IN BIO_VEC Sdata[],\r
+ OUT BIO_VEC Rdata[]\r
+ )\r
{\r
- MSG_RX_HDR Rh;\r
- RETURN_STATUS Status;\r
+ MSG_RX_HDR Rh;\r
+ RETURN_STATUS Status;\r
\r
Status = RETURN_SUCCESS;\r
\r
RETURN_STATUS\r
EFIAPI\r
BhyveFwCtlGetLen (\r
- IN CONST CHAR8 *Name,\r
- IN OUT UINT32 *Size\r
+ IN CONST CHAR8 *Name,\r
+ IN OUT UINT32 *Size\r
)\r
{\r
- BIO_VEC Req[2], Resp[2];\r
+ BIO_VEC Req[2], Resp[2];\r
RETURN_STATUS Status;\r
\r
Req[0].Base = (VOID *)Name;\r
return Status;\r
}\r
\r
-#define FMAXSZ 1024\r
+#define FMAXSZ 1024\r
STATIC struct {\r
UINT64 fSize;\r
UINT32 fData[FMAXSZ];\r
RETURN_STATUS\r
EFIAPI\r
BhyveFwCtlGetVal (\r
- IN CONST CHAR8 *Name,\r
- OUT VOID *Item,\r
- IN OUT UINT32 *Size\r
+ IN CONST CHAR8 *Name,\r
+ OUT VOID *Item,\r
+ IN OUT UINT32 *Size\r
)\r
{\r
- BIO_VEC Req[2];\r
- BIO_VEC Resp[2];\r
+ BIO_VEC Req[2];\r
+ BIO_VEC Resp[2];\r
RETURN_STATUS Status;\r
\r
/* Make sure temp buffer is larger than passed-in size */\r
- if (*Size > sizeof (FwGetvalBuf.fData))\r
- return RETURN_INVALID_PARAMETER;\r
+ if (*Size > sizeof (FwGetvalBuf.fData)) {\r
+ return RETURN_INVALID_PARAMETER;\r
+ }\r
\r
Req[0].Base = (VOID *)Name;\r
Req[0].Len = (UINT32)AsciiStrLen (Name) + 1;\r
RETURN_STATUS\r
EFIAPI\r
BhyveFwCtlGet (\r
- IN CONST CHAR8 *Name,\r
- OUT VOID *Item,\r
- IN OUT UINTN *Size\r
+ IN CONST CHAR8 *Name,\r
+ OUT VOID *Item,\r
+ IN OUT UINTN *Size\r
)\r
{\r
- RETURN_STATUS Status;\r
+ RETURN_STATUS Status;\r
\r
- if (mBhyveFwCtlSupported == FALSE)\r
+ if (mBhyveFwCtlSupported == FALSE) {\r
return RETURN_UNSUPPORTED;\r
+ }\r
\r
if (Item == NULL) {\r
- Status = BhyveFwCtlGetLen (Name, (UINT32*)Size);\r
+ Status = BhyveFwCtlGetLen (Name, (UINT32 *)Size);\r
} else {\r
- Status = BhyveFwCtlGetVal (Name, Item, (UINT32*)Size);\r
+ Status = BhyveFwCtlGetVal (Name, Item, (UINT32 *)Size);\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Library initialization. Probe the host to see if the f/w ctl\r
interface is supported.\r