]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/XenBusDxe/GrantTable.c
CorebootPayloadPkg: Use SerialDxe in MdeModulePkg
[mirror_edk2.git] / OvmfPkg / XenBusDxe / GrantTable.c
index f68a8542b5f346d1b96ab6b8846cf4853843cb89..90dec26ab00147bc1788a2b778c238e0073054af 100644 (file)
 \r
 #include <IndustryStandard/Xen/memory.h>\r
 \r
-#include "XenHypercall.h"\r
+#include <Library/XenHypercallLib.h>\r
+#include <Library/SynchronizationLib.h>\r
 \r
 #include "GrantTable.h"\r
-#include "InterlockedCompareExchange16.h"\r
 \r
 #define NR_RESERVED_ENTRIES 8\r
 \r
@@ -101,7 +101,7 @@ XenGrantTableGrantAccess (
 \r
   ASSERT (GrantTable != NULL);\r
   Ref = XenGrantTableGetFreeEntry ();\r
-  GrantTable[Ref].frame = Frame;\r
+  GrantTable[Ref].frame = (UINT32)Frame;\r
   GrantTable[Ref].domid = DomainId;\r
   MemoryFence ();\r
   Flags = GTF_permit_access;\r
@@ -139,8 +139,7 @@ XenGrantTableEndAccess (
 \r
 VOID\r
 XenGrantTableInit (\r
-  IN XENBUS_DEVICE  *Dev,\r
-  IN UINT64         MmioAddr\r
+  IN XENBUS_DEVICE  *Dev\r
   )\r
 {\r
   xen_add_to_physmap_t Parameters;\r
@@ -152,18 +151,20 @@ XenGrantTableInit (
 #endif\r
   EfiInitializeLock (&mGrantListLock, TPL_NOTIFY);\r
   for (Index = NR_RESERVED_ENTRIES; Index < NR_GRANT_ENTRIES; Index++) {\r
-    XenGrantTablePutFreeEntry (Index);\r
+    XenGrantTablePutFreeEntry ((grant_ref_t)Index);\r
   }\r
 \r
-  GrantTable = (VOID*)(UINTN) MmioAddr;\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.space = XENMAPSPACE_grant_table;\r
-    Parameters.gpfn = (((xen_pfn_t) GrantTable) >> EFI_PAGE_SHIFT) + Index;\r
-    ReturnCode = XenHypercallMemoryOp (Dev, 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 ((EFI_D_ERROR, "Xen GrantTable, add_to_physmap hypercall error: %d\n", ReturnCode));\r
+      DEBUG ((EFI_D_ERROR,\r
+        "Xen GrantTable, add_to_physmap hypercall error: %Ld\n",\r
+        (INT64)ReturnCode));\r
     }\r
   }\r
 }\r
@@ -182,11 +183,14 @@ XenGrantTableDeinit (
 \r
   for (Index = NR_GRANT_FRAMES - 1; Index >= 0; Index--) {\r
     Parameters.domid = DOMID_SELF;\r
-    Parameters.gpfn = (((xen_pfn_t) GrantTable) >> EFI_PAGE_SHIFT) + Index;\r
-    DEBUG ((EFI_D_INFO, "Xen GrantTable, removing %X\n", Parameters.gpfn));\r
-    ReturnCode = XenHypercallMemoryOp (Dev, XENMEM_remove_from_physmap, &Parameters);\r
+    Parameters.gpfn = (xen_pfn_t) ((UINTN) GrantTable >> EFI_PAGE_SHIFT) + Index;\r
+    DEBUG ((EFI_D_INFO, "Xen GrantTable, removing %Lx\n",\r
+      (UINT64)Parameters.gpfn));\r
+    ReturnCode = XenHypercallMemoryOp (XENMEM_remove_from_physmap, &Parameters);\r
     if (ReturnCode != 0) {\r
-      DEBUG ((EFI_D_ERROR, "Xen GrantTable, remove_from_physmap hypercall error: %d\n", ReturnCode));\r
+      DEBUG ((EFI_D_ERROR,\r
+        "Xen GrantTable, remove_from_physmap hypercall error: %Ld\n",\r
+        (INT64)ReturnCode));\r
     }\r
   }\r
   GrantTable = NULL;\r