\r
#include "GrantTable.h"\r
\r
-#define NR_RESERVED_ENTRIES 8\r
+#define NR_RESERVED_ENTRIES 8\r
\r
-#define NR_GRANT_FRAMES (FixedPcdGet32 (PcdXenGrantFrames))\r
-#define NR_GRANT_ENTRIES (NR_GRANT_FRAMES * EFI_PAGE_SIZE / sizeof(grant_entry_v1_t))\r
+#define NR_GRANT_FRAMES (FixedPcdGet32 (PcdXenGrantFrames))\r
+#define NR_GRANT_ENTRIES (NR_GRANT_FRAMES * EFI_PAGE_SIZE / sizeof(grant_entry_v1_t))\r
\r
-STATIC grant_entry_v1_t *GrantTable = NULL;\r
-STATIC grant_ref_t GrantList[NR_GRANT_ENTRIES];\r
-STATIC EFI_LOCK mGrantListLock;\r
+STATIC grant_entry_v1_t *GrantTable = NULL;\r
+STATIC grant_ref_t GrantList[NR_GRANT_ENTRIES];\r
+STATIC EFI_LOCK mGrantListLock;\r
#ifdef GNT_DEBUG\r
-STATIC BOOLEAN GrantInUseList[NR_GRANT_ENTRIES];\r
+STATIC BOOLEAN GrantInUseList[NR_GRANT_ENTRIES];\r
#endif\r
\r
STATIC\r
VOID\r
XenGrantTablePutFreeEntry (\r
- grant_ref_t Ref\r
+ grant_ref_t Ref\r
)\r
{\r
EfiAcquireLock (&mGrantListLock);\r
-#ifdef GNT_DEBUG\r
+ #ifdef GNT_DEBUG\r
ASSERT (GrantInUseList[Ref]);\r
GrantInUseList[Ref] = FALSE;\r
-#endif\r
+ #endif\r
GrantList[Ref] = GrantList[0];\r
- GrantList[0] = Ref;\r
+ GrantList[0] = Ref;\r
EfiReleaseLock (&mGrantListLock);\r
}\r
\r
VOID\r
)\r
{\r
- grant_ref_t Ref;\r
+ grant_ref_t Ref;\r
\r
EfiAcquireLock (&mGrantListLock);\r
Ref = GrantList[0];\r
ASSERT (Ref >= NR_RESERVED_ENTRIES && Ref < NR_GRANT_ENTRIES);\r
GrantList[0] = GrantList[Ref];\r
-#ifdef GNT_DEBUG\r
+ #ifdef GNT_DEBUG\r
ASSERT (!GrantInUseList[Ref]);\r
GrantInUseList[Ref] = TRUE;\r
-#endif\r
+ #endif\r
EfiReleaseLock (&mGrantListLock);\r
return Ref;\r
}\r
IN BOOLEAN ReadOnly\r
)\r
{\r
- grant_ref_t Ref;\r
- UINT16 Flags;\r
+ grant_ref_t Ref;\r
+ UINT16 Flags;\r
\r
ASSERT (GrantTable != NULL);\r
- Ref = XenGrantTableGetFreeEntry ();\r
+ Ref = XenGrantTableGetFreeEntry ();\r
GrantTable[Ref].frame = (UINT32)Frame;\r
GrantTable[Ref].domid = DomainId;\r
MemoryFence ();\r
if (ReadOnly) {\r
Flags |= GTF_readonly;\r
}\r
+\r
GrantTable[Ref].flags = Flags;\r
\r
return Ref;\r
STATIC\r
EFI_STATUS\r
XenGrantTableEndAccess (\r
- grant_ref_t Ref\r
+ grant_ref_t Ref\r
)\r
{\r
- UINT16 Flags, OldFlags;\r
+ UINT16 Flags, OldFlags;\r
\r
ASSERT (GrantTable != NULL);\r
ASSERT (Ref >= NR_RESERVED_ENTRIES && Ref < NR_GRANT_ENTRIES);\r
DEBUG ((DEBUG_WARN, "WARNING: g.e. still in use! (%x)\n", Flags));\r
return EFI_NOT_READY;\r
}\r
+\r
OldFlags = InterlockedCompareExchange16 (&GrantTable[Ref].flags, Flags, 0);\r
} while (OldFlags != Flags);\r
\r
IN XENBUS_DEVICE *Dev\r
)\r
{\r
- xen_add_to_physmap_t Parameters;\r
- INTN Index;\r
- INTN ReturnCode;\r
+ xen_add_to_physmap_t Parameters;\r
+ INTN Index;\r
+ INTN ReturnCode;\r
\r
-#ifdef GNT_DEBUG\r
- SetMem(GrantInUseList, sizeof (GrantInUseList), 1);\r
-#endif\r
+ #ifdef GNT_DEBUG\r
+ SetMem (GrantInUseList, sizeof (GrantInUseList), 1);\r
+ #endif\r
EfiInitializeLock (&mGrantListLock, TPL_NOTIFY);\r
for (Index = NR_RESERVED_ENTRIES; Index < NR_GRANT_ENTRIES; Index++) {\r
XenGrantTablePutFreeEntry ((grant_ref_t)Index);\r
}\r
\r
- GrantTable = (VOID*)(UINTN) Dev->XenIo->GrantTableAddress;\r
+ GrantTable = (VOID *)(UINTN)Dev->XenIo->GrantTableAddress;\r
for (Index = 0; Index < NR_GRANT_FRAMES; Index++) {\r
Parameters.domid = DOMID_SELF;\r
- Parameters.idx = Index;\r
+ Parameters.idx = Index;\r
Parameters.space = XENMAPSPACE_grant_table;\r
- Parameters.gpfn = (xen_pfn_t) ((UINTN) GrantTable >> EFI_PAGE_SHIFT) + Index;\r
- ReturnCode = XenHypercallMemoryOp (XENMEM_add_to_physmap, &Parameters);\r
+ Parameters.gpfn = (xen_pfn_t)((UINTN)GrantTable >> EFI_PAGE_SHIFT) + Index;\r
+ ReturnCode = XenHypercallMemoryOp (XENMEM_add_to_physmap, &Parameters);\r
if (ReturnCode != 0) {\r
- DEBUG ((DEBUG_ERROR,\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
"Xen GrantTable, add_to_physmap hypercall error: %Ld\n",\r
- (INT64)ReturnCode));\r
+ (INT64)ReturnCode\r
+ ));\r
}\r
}\r
}\r
\r
VOID\r
XenGrantTableDeinit (\r
- XENBUS_DEVICE *Dev\r
+ XENBUS_DEVICE *Dev\r
)\r
{\r
- INTN ReturnCode, Index;\r
- xen_remove_from_physmap_t Parameters;\r
+ INTN ReturnCode, Index;\r
+ xen_remove_from_physmap_t Parameters;\r
\r
if (GrantTable == NULL) {\r
return;\r
\r
for (Index = NR_GRANT_FRAMES - 1; Index >= 0; Index--) {\r
Parameters.domid = DOMID_SELF;\r
- Parameters.gpfn = (xen_pfn_t) ((UINTN) GrantTable >> EFI_PAGE_SHIFT) + Index;\r
- DEBUG ((DEBUG_INFO, "Xen GrantTable, removing %Lx\n",\r
- (UINT64)Parameters.gpfn));\r
+ Parameters.gpfn = (xen_pfn_t)((UINTN)GrantTable >> EFI_PAGE_SHIFT) + Index;\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "Xen GrantTable, removing %Lx\n",\r
+ (UINT64)Parameters.gpfn\r
+ ));\r
ReturnCode = XenHypercallMemoryOp (XENMEM_remove_from_physmap, &Parameters);\r
if (ReturnCode != 0) {\r
- DEBUG ((DEBUG_ERROR,\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
"Xen GrantTable, remove_from_physmap hypercall error: %Ld\n",\r
- (INT64)ReturnCode));\r
+ (INT64)ReturnCode\r
+ ));\r
}\r
}\r
+\r
GrantTable = NULL;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
XenBusGrantAccess (\r
- IN XENBUS_PROTOCOL *This,\r
- IN domid_t DomainId,\r
- IN UINTN Frame, // MFN\r
- IN BOOLEAN ReadOnly,\r
- OUT grant_ref_t *RefPtr\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN domid_t DomainId,\r
+ IN UINTN Frame, // MFN\r
+ IN BOOLEAN ReadOnly,\r
+ OUT grant_ref_t *RefPtr\r
)\r
{\r
*RefPtr = XenGrantTableGrantAccess (DomainId, Frame, ReadOnly);\r