]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/XenBusDxe/XenStore.c
SecurityPkg: SecureBootConfigDxe: Updated invocation pattern
[mirror_edk2.git] / OvmfPkg / XenBusDxe / XenStore.c
index f176b95a4ded24d095ed6929a9d26f8b12d648a8..0241cfda489b8091bdb55a10326ba47ad25fddb6 100644 (file)
@@ -10,7 +10,7 @@
 \r
   The XenStore is ASCII string based, and has a structure and semantics\r
   similar to a filesystem.  There are files and directories, the directories\r
-  able to contain files or other directories.  The depth of the hierachy\r
+  able to contain files or other directories.  The depth of the hierarchy\r
   is only limited by the XenStore's maximum path length.\r
 \r
   The communication channel between the XenStore service and other\r
   This file may be distributed separately from the Linux kernel, or\r
   incorporated into other software packages, subject to the following license:\r
 \r
-  Permission is hereby granted, free of charge, to any person obtaining a copy\r
-  of this source file (the "Software"), to deal in the Software without\r
-  restriction, including without limitation the rights to use, copy, modify,\r
-  merge, publish, distribute, sublicense, and/or sell copies of the Software,\r
-  and to permit persons to whom the Software is furnished to do so, subject to\r
-  the following conditions:\r
-\r
-  The above copyright notice and this permission notice shall be included in\r
-  all copies or substantial portions of the Software.\r
-\r
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\r
-  IN THE SOFTWARE.\r
+  SPDX-License-Identifier: MIT\r
 **/\r
 \r
 #include "XenStore.h"\r
 \r
 #include <IndustryStandard/Xen/hvm/params.h>\r
 \r
-#include "XenHypercall.h"\r
 #include "EventChannel.h"\r
+#include <Library/XenHypercallLib.h>\r
 \r
 //\r
 // Private Data Structures\r
 //\r
 \r
 typedef struct {\r
-  CONST VOID  *Data;\r
-  UINTN       Len;\r
+  CONST VOID    *Data;\r
+  UINT32        Len;\r
 } WRITE_REQUEST;\r
 \r
 /* Register callback to watch subtree (node) in the XenStore. */\r
-#define XENSTORE_WATCH_SIGNATURE SIGNATURE_32 ('X','S','w','a')\r
-struct _XENSTORE_WATCH\r
-{\r
-  UINT32      Signature;\r
-  LIST_ENTRY  Link;\r
+#define XENSTORE_WATCH_SIGNATURE  SIGNATURE_32 ('X','S','w','a')\r
+struct _XENSTORE_WATCH {\r
+  UINT32        Signature;\r
+  LIST_ENTRY    Link;\r
 \r
   /* Path being watched. */\r
-  CHAR8       *Node;\r
+  CHAR8         *Node;\r
 };\r
 \r
 #define XENSTORE_WATCH_FROM_LINK(l) \\r
   CR (l, XENSTORE_WATCH, Link, XENSTORE_WATCH_SIGNATURE)\r
 \r
-\r
 /**\r
  * Structure capturing messages received from the XenStore service.\r
  */\r
-#define XENSTORE_MESSAGE_SIGNATURE SIGNATURE_32 ('X', 'S', 's', 'm')\r
+#define XENSTORE_MESSAGE_SIGNATURE  SIGNATURE_32 ('X', 'S', 's', 'm')\r
 typedef struct {\r
-  UINT32 Signature;\r
-  LIST_ENTRY Link;\r
+  UINT32                Signature;\r
+  LIST_ENTRY            Link;\r
 \r
-  struct xsd_sockmsg Header;\r
+  struct xsd_sockmsg    Header;\r
 \r
   union {\r
     /* Queued replies. */\r
     struct {\r
-      CHAR8 *Body;\r
+      CHAR8    *Body;\r
     } Reply;\r
 \r
     /* Queued watch events. */\r
     struct {\r
-      XENSTORE_WATCH *Handle;\r
-      CONST CHAR8 **Vector;\r
-      UINT32 VectorSize;\r
+      XENSTORE_WATCH    *Handle;\r
+      CONST CHAR8       **Vector;\r
+      UINT32            VectorSize;\r
     } Watch;\r
   } u;\r
 } XENSTORE_MESSAGE;\r
@@ -122,9 +104,9 @@ typedef struct {
    * Pointer to shared memory communication structures allowing us\r
    * to communicate with the XenStore service.\r
    */\r
-  struct xenstore_domain_interface *XenStore;\r
+  struct xenstore_domain_interface    *XenStore;\r
 \r
-  XENBUS_DEVICE *Dev;\r
+  XENBUS_DEVICE                       *Dev;\r
 \r
   /**\r
    * A list of replies to our requests.\r
@@ -136,42 +118,41 @@ typedef struct {
    *\r
    * /note Only one requesting context can be active at a time.\r
    */\r
-  LIST_ENTRY ReplyList;\r
+  LIST_ENTRY       ReplyList;\r
 \r
   /** Lock protecting the reply list. */\r
-  EFI_LOCK ReplyLock;\r
+  EFI_LOCK         ReplyLock;\r
 \r
   /**\r
    * List of registered watches.\r
    */\r
-  LIST_ENTRY RegisteredWatches;\r
+  LIST_ENTRY       RegisteredWatches;\r
 \r
   /** Lock protecting the registered watches list. */\r
-  EFI_LOCK RegisteredWatchesLock;\r
+  EFI_LOCK         RegisteredWatchesLock;\r
 \r
   /**\r
    * List of pending watch callback events.\r
    */\r
-  LIST_ENTRY WatchEvents;\r
+  LIST_ENTRY       WatchEvents;\r
 \r
-  /** Lock protecting the watch calback list. */\r
-  EFI_LOCK WatchEventsLock;\r
+  /** Lock protecting the watch callback list. */\r
+  EFI_LOCK         WatchEventsLock;\r
 \r
   /**\r
    * The event channel for communicating with the\r
    * XenStore service.\r
    */\r
-  evtchn_port_t EventChannel;\r
+  evtchn_port_t    EventChannel;\r
 \r
   /** Handle for XenStore events. */\r
-  EFI_EVENT EventChannelEvent;\r
+  EFI_EVENT        EventChannelEvent;\r
 } XENSTORE_PRIVATE;\r
 \r
 //\r
 // Global Data\r
 //\r
-static XENSTORE_PRIVATE xs;\r
-\r
+static XENSTORE_PRIVATE  xs;\r
 \r
 //\r
 // Private Utility Functions\r
@@ -190,18 +171,19 @@ static XENSTORE_PRIVATE xs;
 STATIC\r
 UINT32\r
 ExtractStrings (\r
-  IN  CONST CHAR8 *Strings,\r
-  IN  UINTN       Len,\r
-  OUT CONST CHAR8 **Dst OPTIONAL\r
+  IN  CONST CHAR8  *Strings,\r
+  IN  UINTN        Len,\r
+  OUT CONST CHAR8  **Dst OPTIONAL\r
   )\r
 {\r
-  UINT32 Num = 0;\r
-  CONST CHAR8 *Ptr;\r
+  UINT32       Num = 0;\r
+  CONST CHAR8  *Ptr;\r
 \r
   for (Ptr = Strings; Ptr < Strings + Len; Ptr += AsciiStrSize (Ptr)) {\r
     if (Dst != NULL) {\r
       *Dst++ = Ptr;\r
     }\r
+\r
     Num++;\r
   }\r
 \r
@@ -233,10 +215,10 @@ Split (
   OUT UINT32  *NumPtr\r
   )\r
 {\r
-  CONST CHAR8 **Dst;\r
+  CONST CHAR8  **Dst;\r
 \r
-  ASSERT(NumPtr != NULL);\r
-  ASSERT(Strings != NULL);\r
+  ASSERT (NumPtr != NULL);\r
+  ASSERT (Strings != NULL);\r
 \r
   /* Protect against unterminated buffers. */\r
   if (Len > 0) {\r
@@ -248,11 +230,11 @@ Split (
 \r
   /* Transfer to one big alloc for easy freeing by the caller. */\r
   Dst = AllocatePool (*NumPtr * sizeof (CHAR8 *) + Len);\r
-  CopyMem (&Dst[*NumPtr], Strings, Len);\r
+  CopyMem ((VOID *)&Dst[*NumPtr], Strings, Len);\r
   FreePool (Strings);\r
 \r
   /* Extract pointers to newly allocated array. */\r
-  Strings = (CHAR8 *) &Dst[*NumPtr];\r
+  Strings = (CHAR8 *)&Dst[*NumPtr];\r
   ExtractStrings (Strings, Len, Dst);\r
 \r
   return (Dst);\r
@@ -269,23 +251,26 @@ Split (
 STATIC\r
 XENSTORE_WATCH *\r
 XenStoreFindWatch (\r
-  IN CONST CHAR8 *Token\r
+  IN CONST CHAR8  *Token\r
   )\r
 {\r
-  XENSTORE_WATCH *Watch, *WantedWatch;\r
-  LIST_ENTRY *Entry;\r
+  XENSTORE_WATCH  *Watch, *WantedWatch;\r
+  LIST_ENTRY      *Entry;\r
 \r
-  WantedWatch = (VOID *) AsciiStrHexToUintn (Token);\r
+  WantedWatch = (VOID *)AsciiStrHexToUintn (Token);\r
 \r
   if (IsListEmpty (&xs.RegisteredWatches)) {\r
     return NULL;\r
   }\r
+\r
   for (Entry = GetFirstNode (&xs.RegisteredWatches);\r
        !IsNull (&xs.RegisteredWatches, Entry);\r
-       Entry = GetNextNode (&xs.RegisteredWatches, Entry)) {\r
+       Entry = GetNextNode (&xs.RegisteredWatches, Entry))\r
+  {\r
     Watch = XENSTORE_WATCH_FROM_LINK (Entry);\r
-    if (Watch == WantedWatch)\r
+    if (Watch == WantedWatch) {\r
       return Watch;\r
+    }\r
   }\r
 \r
   return NULL;\r
@@ -298,19 +283,22 @@ XenStoreFindWatch (
 \r
 CHAR8 *\r
 XenStoreJoin (\r
-  IN CONST CHAR8 *DirectoryPath,\r
-  IN CONST CHAR8 *Node\r
+  IN CONST CHAR8  *DirectoryPath,\r
+  IN CONST CHAR8  *Node\r
   )\r
 {\r
-  CHAR8 *Buf;\r
+  CHAR8  *Buf;\r
+  UINTN  BufSize;\r
 \r
   /* +1 for '/' and +1 for '\0' */\r
-  Buf = AllocateZeroPool (\r
-          AsciiStrLen (DirectoryPath) + AsciiStrLen (Node) + 2);\r
-  AsciiStrCat (Buf, DirectoryPath);\r
-  if (Node[0] != '\0') {\r
-    AsciiStrCat (Buf, "/");\r
-    AsciiStrCat (Buf, Node);\r
+  BufSize = AsciiStrLen (DirectoryPath) + AsciiStrLen (Node) + 2;\r
+  Buf     = AllocatePool (BufSize);\r
+  ASSERT (Buf != NULL);\r
+\r
+  if (Node[0] == '\0') {\r
+    AsciiSPrint (Buf, BufSize, "%a", DirectoryPath);\r
+  } else {\r
+    AsciiSPrint (Buf, BufSize, "%a/%a", DirectoryPath, Node);\r
   }\r
 \r
   return Buf;\r
@@ -335,8 +323,8 @@ XenStoreJoin (
 STATIC\r
 BOOLEAN\r
 XenStoreCheckIndexes (\r
-  XENSTORE_RING_IDX Cons,\r
-  XENSTORE_RING_IDX Prod\r
+  XENSTORE_RING_IDX  Cons,\r
+  XENSTORE_RING_IDX  Prod\r
   )\r
 {\r
   return ((Prod - Cons) <= XENSTORE_RING_SIZE);\r
@@ -356,17 +344,19 @@ XenStoreCheckIndexes (
 STATIC\r
 VOID *\r
 XenStoreGetOutputChunk (\r
-  IN  XENSTORE_RING_IDX Cons,\r
-  IN  XENSTORE_RING_IDX Prod,\r
-  IN  CHAR8             *Buffer,\r
-  OUT UINT32            *LenPtr\r
+  IN  XENSTORE_RING_IDX  Cons,\r
+  IN  XENSTORE_RING_IDX  Prod,\r
+  IN  CHAR8              *Buffer,\r
+  OUT UINT32             *LenPtr\r
   )\r
 {\r
-  UINT32 Len;\r
+  UINT32  Len;\r
+\r
   Len = XENSTORE_RING_SIZE - MASK_XENSTORE_IDX (Prod);\r
   if ((XENSTORE_RING_SIZE - (Prod - Cons)) < Len) {\r
     Len = XENSTORE_RING_SIZE - (Prod - Cons);\r
   }\r
+\r
   *LenPtr = Len;\r
   return (Buffer + MASK_XENSTORE_IDX (Prod));\r
 }\r
@@ -385,18 +375,19 @@ XenStoreGetOutputChunk (
 STATIC\r
 CONST VOID *\r
 XenStoreGetInputChunk (\r
-  IN  XENSTORE_RING_IDX Cons,\r
-  IN  XENSTORE_RING_IDX Prod,\r
-  IN  CONST CHAR8       *Buffer,\r
-  OUT UINT32            *LenPtr\r
+  IN  XENSTORE_RING_IDX  Cons,\r
+  IN  XENSTORE_RING_IDX  Prod,\r
+  IN  CONST CHAR8        *Buffer,\r
+  OUT UINT32             *LenPtr\r
   )\r
 {\r
-  UINT32 Len;\r
+  UINT32  Len;\r
 \r
   Len = XENSTORE_RING_SIZE - MASK_XENSTORE_IDX (Cons);\r
   if ((Prod - Cons) < Len) {\r
     Len = Prod - Cons;\r
   }\r
+\r
   *LenPtr = Len;\r
   return (Buffer + MASK_XENSTORE_IDX (Cons));\r
 }\r
@@ -414,26 +405,27 @@ XenStoreGetInputChunk (
 STATIC\r
 EFI_STATUS\r
 XenStoreWaitForEvent (\r
-  IN EFI_EVENT Event,\r
-  IN UINT64    Timeout\r
+  IN EFI_EVENT  Event,\r
+  IN UINT64     Timeout\r
   )\r
 {\r
-  UINTN Index;\r
-  EFI_STATUS Status;\r
-  EFI_EVENT TimerEvent;\r
-  EFI_EVENT WaitList[2];\r
+  UINTN       Index;\r
+  EFI_STATUS  Status;\r
+  EFI_EVENT   TimerEvent;\r
+  EFI_EVENT   WaitList[2];\r
 \r
   gBS->CreateEvent (EVT_TIMER, 0, NULL, NULL, &TimerEvent);\r
   gBS->SetTimer (TimerEvent, TimerRelative, Timeout);\r
 \r
   WaitList[0] = xs.EventChannelEvent;\r
   WaitList[1] = TimerEvent;\r
-  Status = gBS->WaitForEvent (2, WaitList, &Index);\r
+  Status      = gBS->WaitForEvent (2, WaitList, &Index);\r
   ASSERT (Status != EFI_INVALID_PARAMETER);\r
   gBS->CloseEvent (TimerEvent);\r
   if (Status == EFI_UNSUPPORTED) {\r
     return EFI_SUCCESS;\r
   }\r
+\r
   if (Index == 1) {\r
     return EFI_TIMEOUT;\r
   } else {\r
@@ -455,16 +447,16 @@ XenStoreWaitForEvent (
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreWriteStore (\r
-  IN CONST VOID *DataPtr,\r
-  IN UINTN      Len\r
+  IN CONST VOID  *DataPtr,\r
+  IN UINT32      Len\r
   )\r
 {\r
-  XENSTORE_RING_IDX Cons, Prod;\r
-  CONST CHAR8 *Data = (CONST CHAR8 *)DataPtr;\r
+  XENSTORE_RING_IDX  Cons, Prod;\r
+  CONST CHAR8        *Data = (CONST CHAR8 *)DataPtr;\r
 \r
   while (Len != 0) {\r
-    void *Dest;\r
-    UINT32 Available;\r
+    void    *Dest;\r
+    UINT32  Available;\r
 \r
     Cons = xs.XenStore->req_cons;\r
     Prod = xs.XenStore->req_prod;\r
@@ -475,13 +467,16 @@ XenStoreWriteStore (
        * Note that the events from both queues are combined, so being woken\r
        * does not guarantee that data exist in the read ring.\r
        */\r
-      EFI_STATUS Status;\r
+      EFI_STATUS  Status;\r
 \r
-      Status = XenStoreWaitForEvent (xs.EventChannelEvent,\r
-                                     EFI_TIMER_PERIOD_SECONDS (1));\r
+      Status = XenStoreWaitForEvent (\r
+                 xs.EventChannelEvent,\r
+                 EFI_TIMER_PERIOD_SECONDS (1)\r
+                 );\r
       if (Status == EFI_TIMEOUT) {\r
-        DEBUG ((EFI_D_WARN, "XenStore Write, waiting for a ring event.\n"));\r
+        DEBUG ((DEBUG_WARN, "XenStore Write, waiting for a ring event.\n"));\r
       }\r
+\r
       continue;\r
     }\r
 \r
@@ -498,7 +493,7 @@ XenStoreWriteStore (
 \r
     CopyMem (Dest, Data, Available);\r
     Data += Available;\r
-    Len -= Available;\r
+    Len  -= Available;\r
 \r
     /*\r
      * The store to the producer index, which indicates\r
@@ -534,16 +529,16 @@ XenStoreWriteStore (
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreReadStore (\r
-  OUT VOID *DataPtr,\r
-  IN  UINTN Len\r
+  OUT VOID    *DataPtr,\r
+  IN  UINT32  Len\r
   )\r
 {\r
-  XENSTORE_RING_IDX Cons, Prod;\r
-  CHAR8 *Data = (CHAR8 *) DataPtr;\r
+  XENSTORE_RING_IDX  Cons, Prod;\r
+  CHAR8              *Data = (CHAR8 *)DataPtr;\r
 \r
   while (Len != 0) {\r
-    UINT32 Available;\r
-    CONST CHAR8 *Src;\r
+    UINT32       Available;\r
+    CONST CHAR8  *Src;\r
 \r
     Cons = xs.XenStore->rsp_cons;\r
     Prod = xs.XenStore->rsp_prod;\r
@@ -554,13 +549,16 @@ XenStoreReadStore (
        * Note that the events from both queues are combined, so being woken\r
        * does not guarantee that data exist in the read ring.\r
        */\r
-      EFI_STATUS Status;\r
+      EFI_STATUS  Status;\r
 \r
-      Status = XenStoreWaitForEvent (xs.EventChannelEvent,\r
-                                     EFI_TIMER_PERIOD_SECONDS (1));\r
+      Status = XenStoreWaitForEvent (\r
+                 xs.EventChannelEvent,\r
+                 EFI_TIMER_PERIOD_SECONDS (1)\r
+                 );\r
       if (Status == EFI_TIMEOUT) {\r
-        DEBUG ((EFI_D_WARN, "XenStore Read, waiting for a ring event.\n"));\r
+        DEBUG ((DEBUG_WARN, "XenStore Read, waiting for a ring event.\n"));\r
       }\r
+\r
       continue;\r
     }\r
 \r
@@ -583,7 +581,7 @@ XenStoreReadStore (
 \r
     CopyMem (Data, Src, Available);\r
     Data += Available;\r
-    Len -= Available;\r
+    Len  -= Available;\r
 \r
     /*\r
      * Insure that the producer of this ring does not see\r
@@ -621,48 +619,59 @@ XenStoreProcessMessage (
   VOID\r
   )\r
 {\r
-  XENSTORE_MESSAGE *Message;\r
-  CHAR8 *Body;\r
-  XENSTORE_STATUS Status;\r
+  XENSTORE_MESSAGE  *Message;\r
+  CHAR8             *Body;\r
+  XENSTORE_STATUS   Status;\r
 \r
-  Message = AllocateZeroPool (sizeof (XENSTORE_MESSAGE));\r
+  Message            = AllocateZeroPool (sizeof (XENSTORE_MESSAGE));\r
   Message->Signature = XENSTORE_MESSAGE_SIGNATURE;\r
-  Status = XenStoreReadStore (&Message->Header, sizeof (Message->Header));\r
+  Status             = XenStoreReadStore (&Message->Header, sizeof (Message->Header));\r
   if (Status != XENSTORE_STATUS_SUCCESS) {\r
     FreePool (Message);\r
-    DEBUG ((EFI_D_ERROR, "XenStore: Error read store (%d)\n", Status));\r
+    DEBUG ((DEBUG_ERROR, "XenStore: Error read store (%d)\n", Status));\r
     return Status;\r
   }\r
 \r
-  Body = AllocatePool (Message->Header.len + 1);\r
+  Body   = AllocatePool (Message->Header.len + 1);\r
   Status = XenStoreReadStore (Body, Message->Header.len);\r
   if (Status != XENSTORE_STATUS_SUCCESS) {\r
     FreePool (Body);\r
     FreePool (Message);\r
-    DEBUG ((EFI_D_ERROR, "XenStore: Error read store (%d)\n", Status));\r
+    DEBUG ((DEBUG_ERROR, "XenStore: Error read store (%d)\n", Status));\r
     return Status;\r
   }\r
+\r
   Body[Message->Header.len] = '\0';\r
 \r
   if (Message->Header.type == XS_WATCH_EVENT) {\r
-    Message->u.Watch.Vector = Split(Body, Message->Header.len,\r
-                                    &Message->u.Watch.VectorSize);\r
+    Message->u.Watch.Vector = Split (\r
+                                Body,\r
+                                Message->Header.len,\r
+                                &Message->u.Watch.VectorSize\r
+                                );\r
 \r
     EfiAcquireLock (&xs.RegisteredWatchesLock);\r
     Message->u.Watch.Handle =\r
       XenStoreFindWatch (Message->u.Watch.Vector[XS_WATCH_TOKEN]);\r
-    DEBUG ((EFI_D_INFO, "XenStore: Watch event %a\n",\r
-            Message->u.Watch.Vector[XS_WATCH_TOKEN]));\r
+    DEBUG ((\r
+      DEBUG_INFO,\r
+      "XenStore: Watch event %a\n",\r
+      Message->u.Watch.Vector[XS_WATCH_TOKEN]\r
+      ));\r
     if (Message->u.Watch.Handle != NULL) {\r
       EfiAcquireLock (&xs.WatchEventsLock);\r
       InsertHeadList (&xs.WatchEvents, &Message->Link);\r
       EfiReleaseLock (&xs.WatchEventsLock);\r
     } else {\r
-      DEBUG ((EFI_D_WARN, "XenStore: Watch handle %a not found\n",\r
-              Message->u.Watch.Vector[XS_WATCH_TOKEN]));\r
-      FreePool(Message->u.Watch.Vector);\r
-      FreePool(Message);\r
+      DEBUG ((\r
+        DEBUG_WARN,\r
+        "XenStore: Watch handle %a not found\n",\r
+        Message->u.Watch.Vector[XS_WATCH_TOKEN]\r
+        ));\r
+      FreePool ((VOID *)Message->u.Watch.Vector);\r
+      FreePool (Message);\r
     }\r
+\r
     EfiReleaseLock (&xs.RegisteredWatchesLock);\r
   } else {\r
     Message->u.Reply.Body = Body;\r
@@ -689,43 +698,43 @@ XenStoreProcessMessage (
 \r
 **/\r
 typedef struct {\r
-  XENSTORE_STATUS Status;\r
-  CONST CHAR8 *ErrorStr;\r
+  XENSTORE_STATUS    Status;\r
+  CONST CHAR8        *ErrorStr;\r
 } XenStoreErrors;\r
 \r
-static XenStoreErrors gXenStoreErrors[] = {\r
-  { XENSTORE_STATUS_EINVAL, "EINVAL" },\r
-  { XENSTORE_STATUS_EACCES, "EACCES" },\r
-  { XENSTORE_STATUS_EEXIST, "EEXIST" },\r
-  { XENSTORE_STATUS_EISDIR, "EISDIR" },\r
-  { XENSTORE_STATUS_ENOENT, "ENOENT" },\r
-  { XENSTORE_STATUS_ENOMEM, "ENOMEM" },\r
-  { XENSTORE_STATUS_ENOSPC, "ENOSPC" },\r
-  { XENSTORE_STATUS_EIO, "EIO" },\r
+static XenStoreErrors  gXenStoreErrors[] = {\r
+  { XENSTORE_STATUS_EINVAL,    "EINVAL"    },\r
+  { XENSTORE_STATUS_EACCES,    "EACCES"    },\r
+  { XENSTORE_STATUS_EEXIST,    "EEXIST"    },\r
+  { XENSTORE_STATUS_EISDIR,    "EISDIR"    },\r
+  { XENSTORE_STATUS_ENOENT,    "ENOENT"    },\r
+  { XENSTORE_STATUS_ENOMEM,    "ENOMEM"    },\r
+  { XENSTORE_STATUS_ENOSPC,    "ENOSPC"    },\r
+  { XENSTORE_STATUS_EIO,       "EIO"       },\r
   { XENSTORE_STATUS_ENOTEMPTY, "ENOTEMPTY" },\r
-  { XENSTORE_STATUS_ENOSYS, "ENOSYS" },\r
-  { XENSTORE_STATUS_EROFS, "EROFS" },\r
-  { XENSTORE_STATUS_EBUSY, "EBUSY" },\r
-  { XENSTORE_STATUS_EAGAIN, "EAGAIN" },\r
-  { XENSTORE_STATUS_EISCONN, "EISCONN" },\r
-  { XENSTORE_STATUS_E2BIG, "E2BIG" }\r
+  { XENSTORE_STATUS_ENOSYS,    "ENOSYS"    },\r
+  { XENSTORE_STATUS_EROFS,     "EROFS"     },\r
+  { XENSTORE_STATUS_EBUSY,     "EBUSY"     },\r
+  { XENSTORE_STATUS_EAGAIN,    "EAGAIN"    },\r
+  { XENSTORE_STATUS_EISCONN,   "EISCONN"   },\r
+  { XENSTORE_STATUS_E2BIG,     "E2BIG"     }\r
 };\r
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))\r
 \r
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreGetError (\r
-  CONST CHAR8 *ErrorStr\r
+  CONST CHAR8  *ErrorStr\r
   )\r
 {\r
-  UINT32 Index;\r
+  UINT32  Index;\r
 \r
-  for (Index = 0; Index < ARRAY_SIZE(gXenStoreErrors); Index++) {\r
+  for (Index = 0; Index < ARRAY_SIZE (gXenStoreErrors); Index++) {\r
     if (!AsciiStrCmp (ErrorStr, gXenStoreErrors[Index].ErrorStr)) {\r
       return gXenStoreErrors[Index].Status;\r
     }\r
   }\r
-  DEBUG ((EFI_D_WARN, "XenStore gave unknown error %a\n", ErrorStr));\r
+\r
+  DEBUG ((DEBUG_WARN, "XenStore gave unknown error %a\n", ErrorStr));\r
   return XENSTORE_STATUS_EINVAL;\r
 }\r
 \r
@@ -739,26 +748,30 @@ XenStoreGetError (
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreReadReply (\r
-  OUT enum xsd_sockmsg_type *TypePtr,\r
-  OUT UINT32 *LenPtr OPTIONAL,\r
-  OUT VOID **Result\r
+  OUT enum xsd_sockmsg_type  *TypePtr,\r
+  OUT UINT32                 *LenPtr OPTIONAL,\r
+  OUT VOID                   **Result\r
   )\r
 {\r
-  XENSTORE_MESSAGE *Message;\r
-  LIST_ENTRY *Entry;\r
-  CHAR8 *Body;\r
+  XENSTORE_MESSAGE  *Message;\r
+  LIST_ENTRY        *Entry;\r
+  CHAR8             *Body;\r
 \r
   while (IsListEmpty (&xs.ReplyList)) {\r
-    XENSTORE_STATUS Status;\r
+    XENSTORE_STATUS  Status;\r
     Status = XenStoreProcessMessage ();\r
-    if (Status != XENSTORE_STATUS_SUCCESS && Status != XENSTORE_STATUS_EAGAIN) {\r
-      DEBUG ((EFI_D_ERROR, "XenStore, error while reading the ring (%d).",\r
-              Status));\r
+    if ((Status != XENSTORE_STATUS_SUCCESS) && (Status != XENSTORE_STATUS_EAGAIN)) {\r
+      DEBUG ((\r
+        DEBUG_ERROR,\r
+        "XenStore, error while reading the ring (%d).",\r
+        Status\r
+        ));\r
       return Status;\r
     }\r
   }\r
+\r
   EfiAcquireLock (&xs.ReplyLock);\r
-  Entry = GetFirstNode (&xs.ReplyList);\r
+  Entry   = GetFirstNode (&xs.ReplyList);\r
   Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
   RemoveEntryList (Entry);\r
   EfiReleaseLock (&xs.ReplyLock);\r
@@ -767,6 +780,7 @@ XenStoreReadReply (
   if (LenPtr != NULL) {\r
     *LenPtr = Message->Header.len;\r
   }\r
+\r
   Body = Message->u.Reply.Body;\r
 \r
   FreePool (Message);\r
@@ -775,7 +789,7 @@ XenStoreReadReply (
 }\r
 \r
 /**\r
-  Send a message with an optionally muti-part body to the XenStore service.\r
+  Send a message with an optionally multi-part body to the XenStore service.\r
 \r
   @param Transaction    The transaction to use for this request.\r
   @param RequestType    The type of message to send.\r
@@ -790,46 +804,47 @@ XenStoreReadReply (
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreTalkv (\r
-  IN  CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN  enum xsd_sockmsg_type   RequestType,\r
-  IN  CONST WRITE_REQUEST     *WriteRequest,\r
-  IN  UINT32                  NumRequests,\r
-  OUT UINT32                  *LenPtr OPTIONAL,\r
-  OUT VOID                    **ResultPtr OPTIONAL\r
+  IN  CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN  enum xsd_sockmsg_type       RequestType,\r
+  IN  CONST WRITE_REQUEST         *WriteRequest,\r
+  IN  UINT32                      NumRequests,\r
+  OUT UINT32                      *LenPtr OPTIONAL,\r
+  OUT VOID                        **ResultPtr OPTIONAL\r
   )\r
 {\r
-  struct xsd_sockmsg Message;\r
-  void *Return = NULL;\r
-  UINT32 Index;\r
-  XENSTORE_STATUS Status;\r
+  struct xsd_sockmsg  Message;\r
+  void                *Return = NULL;\r
+  UINT32              Index;\r
+  XENSTORE_STATUS     Status;\r
 \r
   if (Transaction == XST_NIL) {\r
     Message.tx_id = 0;\r
   } else {\r
     Message.tx_id = Transaction->Id;\r
   }\r
+\r
   Message.req_id = 0;\r
-  Message.type = RequestType;\r
-  Message.len = 0;\r
+  Message.type   = RequestType;\r
+  Message.len    = 0;\r
   for (Index = 0; Index < NumRequests; Index++) {\r
     Message.len += WriteRequest[Index].Len;\r
   }\r
 \r
   Status = XenStoreWriteStore (&Message, sizeof (Message));\r
   if (Status != XENSTORE_STATUS_SUCCESS) {\r
-    DEBUG ((EFI_D_ERROR, "XenStoreTalkv failed %d\n", Status));\r
+    DEBUG ((DEBUG_ERROR, "XenStoreTalkv failed %d\n", Status));\r
     goto Error;\r
   }\r
 \r
   for (Index = 0; Index < NumRequests; Index++) {\r
     Status = XenStoreWriteStore (WriteRequest[Index].Data, WriteRequest[Index].Len);\r
     if (Status != XENSTORE_STATUS_SUCCESS) {\r
-      DEBUG ((EFI_D_ERROR, "XenStoreTalkv failed %d\n", Status));\r
+      DEBUG ((DEBUG_ERROR, "XenStoreTalkv failed %d\n", Status));\r
       goto Error;\r
     }\r
   }\r
 \r
-  Status = XenStoreReadReply (&Message.type, LenPtr, &Return);\r
+  Status = XenStoreReadReply ((enum xsd_sockmsg_type *)&Message.type, LenPtr, &Return);\r
 \r
 Error:\r
   if (Status != XENSTORE_STATUS_SUCCESS) {\r
@@ -843,7 +858,7 @@ Error:
   }\r
 \r
   /* Reply is either error or an echo of our request message type. */\r
-  ASSERT (Message.type == RequestType);\r
+  ASSERT ((enum xsd_sockmsg_type)Message.type == RequestType);\r
 \r
   if (ResultPtr) {\r
     *ResultPtr = Return;\r
@@ -873,20 +888,26 @@ Error:
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreSingle (\r
-  IN  CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN  enum xsd_sockmsg_type   RequestType,\r
-  IN  CONST CHAR8             *Body,\r
-  OUT UINT32                  *LenPtr OPTIONAL,\r
-  OUT VOID                    **Result OPTIONAL\r
+  IN  CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN  enum xsd_sockmsg_type       RequestType,\r
+  IN  CONST CHAR8                 *Body,\r
+  OUT UINT32                      *LenPtr OPTIONAL,\r
+  OUT VOID                        **Result OPTIONAL\r
   )\r
 {\r
-  WRITE_REQUEST WriteRequest;\r
-\r
-  WriteRequest.Data = (VOID *) Body;\r
-  WriteRequest.Len = AsciiStrSize (Body);\r
-\r
-  return XenStoreTalkv (Transaction, RequestType, &WriteRequest, 1,\r
-                        LenPtr, Result);\r
+  WRITE_REQUEST  WriteRequest;\r
+\r
+  WriteRequest.Data = (VOID *)Body;\r
+  WriteRequest.Len  = (UINT32)AsciiStrSize (Body);\r
+\r
+  return XenStoreTalkv (\r
+           Transaction,\r
+           RequestType,\r
+           &WriteRequest,\r
+           1,\r
+           LenPtr,\r
+           Result\r
+           );\r
 }\r
 \r
 //\r
@@ -905,16 +926,16 @@ XenStoreSingle (
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreWatch (\r
-  CONST CHAR8 *Path,\r
-  CONST CHAR8 *Token\r
+  CONST CHAR8  *Path,\r
+  CONST CHAR8  *Token\r
   )\r
 {\r
-  WRITE_REQUEST WriteRequest[2];\r
+  WRITE_REQUEST  WriteRequest[2];\r
 \r
-  WriteRequest[0].Data = (VOID *) Path;\r
-  WriteRequest[0].Len AsciiStrSize (Path);\r
-  WriteRequest[1].Data = (VOID *) Token;\r
-  WriteRequest[1].Len AsciiStrSize (Token);\r
+  WriteRequest[0].Data = (VOID *)Path;\r
+  WriteRequest[0].Len  = (UINT32)AsciiStrSize (Path);\r
+  WriteRequest[1].Data = (VOID *)Token;\r
+  WriteRequest[1].Len  = (UINT32)AsciiStrSize (Token);\r
 \r
   return XenStoreTalkv (XST_NIL, XS_WATCH, WriteRequest, 2, NULL, NULL);\r
 }\r
@@ -931,16 +952,16 @@ XenStoreWatch (
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreUnwatch (\r
-  CONST CHAR8 *Path,\r
-  CONST CHAR8 *Token\r
+  CONST CHAR8  *Path,\r
+  CONST CHAR8  *Token\r
   )\r
 {\r
-  WRITE_REQUEST WriteRequest[2];\r
+  WRITE_REQUEST  WriteRequest[2];\r
 \r
-  WriteRequest[0].Data = (VOID *) Path;\r
-  WriteRequest[0].Len AsciiStrSize (Path);\r
-  WriteRequest[1].Data = (VOID *) Token;\r
-  WriteRequest[1].Len AsciiStrSize (Token);\r
+  WriteRequest[0].Data = (VOID *)Path;\r
+  WriteRequest[0].Len  = (UINT32)AsciiStrSize (Path);\r
+  WriteRequest[1].Data = (VOID *)Token;\r
+  WriteRequest[1].Len  = (UINT32)AsciiStrSize (Token);\r
 \r
   return XenStoreTalkv (XST_NIL, XS_UNWATCH, WriteRequest, 2, NULL, NULL);\r
 }\r
@@ -948,38 +969,42 @@ XenStoreUnwatch (
 STATIC\r
 XENSTORE_STATUS\r
 XenStoreWaitWatch (\r
-  VOID *Token\r
+  VOID  *Token\r
   )\r
 {\r
-  XENSTORE_MESSAGE *Message;\r
-  LIST_ENTRY *Entry = NULL;\r
-  LIST_ENTRY *Last = NULL;\r
-  XENSTORE_STATUS Status;\r
+  XENSTORE_MESSAGE  *Message;\r
+  LIST_ENTRY        *Entry = NULL;\r
+  LIST_ENTRY        *Last  = NULL;\r
+  XENSTORE_STATUS   Status;\r
 \r
   while (TRUE) {\r
     EfiAcquireLock (&xs.WatchEventsLock);\r
     if (IsListEmpty (&xs.WatchEvents) ||\r
-        Last == GetFirstNode (&xs.WatchEvents)) {\r
+        (Last == GetFirstNode (&xs.WatchEvents)))\r
+    {\r
       EfiReleaseLock (&xs.WatchEventsLock);\r
       Status = XenStoreProcessMessage ();\r
-      if (Status != XENSTORE_STATUS_SUCCESS && Status != XENSTORE_STATUS_EAGAIN) {\r
+      if ((Status != XENSTORE_STATUS_SUCCESS) && (Status != XENSTORE_STATUS_EAGAIN)) {\r
         return Status;\r
       }\r
+\r
       continue;\r
     }\r
 \r
     for (Entry = GetFirstNode (&xs.WatchEvents);\r
          Entry != Last && !IsNull (&xs.WatchEvents, Entry);\r
-         Entry = GetNextNode (&xs.WatchEvents, Entry)) {\r
+         Entry = GetNextNode (&xs.WatchEvents, Entry))\r
+    {\r
       Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
       if (Message->u.Watch.Handle == Token) {\r
         RemoveEntryList (Entry);\r
         EfiReleaseLock (&xs.WatchEventsLock);\r
-        FreePool(Message->u.Watch.Vector);\r
-        FreePool(Message);\r
+        FreePool ((VOID *)Message->u.Watch.Vector);\r
+        FreePool (Message);\r
         return XENSTORE_STATUS_SUCCESS;\r
       }\r
     }\r
+\r
     Last = GetFirstNode (&xs.WatchEvents);\r
     EfiReleaseLock (&xs.WatchEventsLock);\r
   }\r
@@ -988,13 +1013,14 @@ XenStoreWaitWatch (
 VOID\r
 EFIAPI\r
 NotifyEventChannelCheckForEvent (\r
-  IN EFI_EVENT Event,\r
-  IN VOID *Context\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
   )\r
 {\r
-  XENSTORE_PRIVATE *xs;\r
-  xs = (XENSTORE_PRIVATE *)Context;\r
-  if (TestAndClearBit (xs->EventChannel, xs->Dev->SharedInfo->evtchn_pending)) {\r
+  XENSTORE_PRIVATE  *xsp;\r
+\r
+  xsp = (XENSTORE_PRIVATE *)Context;\r
+  if (TestAndClearBit (xsp->EventChannel, xsp->Dev->SharedInfo->evtchn_pending)) {\r
     gBS->SignalEvent (Event);\r
   }\r
 }\r
@@ -1007,30 +1033,42 @@ NotifyEventChannelCheckForEvent (
 STATIC\r
 EFI_STATUS\r
 XenStoreInitComms (\r
-  XENSTORE_PRIVATE *xs\r
+  XENSTORE_PRIVATE  *xsp\r
   )\r
 {\r
-  EFI_STATUS Status;\r
-  EFI_EVENT TimerEvent;\r
-  struct xenstore_domain_interface *XenStore = xs->XenStore;\r
+  EFI_STATUS                        Status;\r
+  EFI_EVENT                         TimerEvent;\r
+  struct xenstore_domain_interface  *XenStore = xsp->XenStore;\r
 \r
   Status = gBS->CreateEvent (EVT_TIMER, 0, NULL, NULL, &TimerEvent);\r
-  Status = gBS->SetTimer (TimerEvent, TimerRelative,\r
-                          EFI_TIMER_PERIOD_SECONDS (5));\r
+  Status = gBS->SetTimer (\r
+                  TimerEvent,\r
+                  TimerRelative,\r
+                  EFI_TIMER_PERIOD_SECONDS (5)\r
+                  );\r
   while (XenStore->rsp_prod != XenStore->rsp_cons) {\r
     Status = gBS->CheckEvent (TimerEvent);\r
     if (!EFI_ERROR (Status)) {\r
-      DEBUG ((EFI_D_WARN, "XENSTORE response ring is not quiescent "\r
-              "(%08x:%08x): fixing up\n",\r
-              XenStore->rsp_cons, XenStore->rsp_prod));\r
+      DEBUG ((\r
+        DEBUG_WARN,\r
+        "XENSTORE response ring is not quiescent "\r
+        "(%08x:%08x): fixing up\n",\r
+        XenStore->rsp_cons,\r
+        XenStore->rsp_prod\r
+        ));\r
       XenStore->rsp_cons = XenStore->rsp_prod;\r
     }\r
   }\r
+\r
   gBS->CloseEvent (TimerEvent);\r
 \r
-  Status = gBS->CreateEvent (EVT_NOTIFY_WAIT, TPL_NOTIFY,\r
-                             NotifyEventChannelCheckForEvent, xs,\r
-                             &xs->EventChannelEvent);\r
+  Status = gBS->CreateEvent (\r
+                  EVT_NOTIFY_WAIT,\r
+                  TPL_NOTIFY,\r
+                  NotifyEventChannelCheckForEvent,\r
+                  xsp,\r
+                  &xsp->EventChannelEvent\r
+                  );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   return Status;\r
@@ -1045,23 +1083,28 @@ XenStoreInitComms (
 **/\r
 EFI_STATUS\r
 XenStoreInit (\r
-  XENBUS_DEVICE *Dev\r
+  XENBUS_DEVICE  *Dev\r
   )\r
 {\r
-  EFI_STATUS Status;\r
+  EFI_STATUS  Status;\r
+\r
   /**\r
    * The HVM guest pseudo-physical frame number.  This is Xen's mapping\r
    * of the true machine frame number into our "physical address space".\r
    */\r
-  UINTN XenStoreGpfn;\r
+  UINTN  XenStoreGpfn;\r
 \r
   xs.Dev = Dev;\r
 \r
-  xs.EventChannel = XenHypercallHvmGetParam (Dev, HVM_PARAM_STORE_EVTCHN);\r
-  XenStoreGpfn = XenHypercallHvmGetParam (Dev, HVM_PARAM_STORE_PFN);\r
-  xs.XenStore = (VOID *) (XenStoreGpfn << EFI_PAGE_SHIFT);\r
-  DEBUG ((EFI_D_INFO, "XenBusInit: XenBus rings @%p, event channel %x\n",\r
-          xs.XenStore, xs.EventChannel));\r
+  xs.EventChannel = (evtchn_port_t)XenHypercallHvmGetParam (HVM_PARAM_STORE_EVTCHN);\r
+  XenStoreGpfn    = (UINTN)XenHypercallHvmGetParam (HVM_PARAM_STORE_PFN);\r
+  xs.XenStore     = (VOID *)(XenStoreGpfn << EFI_PAGE_SHIFT);\r
+  DEBUG ((\r
+    DEBUG_INFO,\r
+    "XenBusInit: XenBus rings @%p, event channel %x\n",\r
+    xs.XenStore,\r
+    xs.EventChannel\r
+    ));\r
 \r
   InitializeListHead (&xs.ReplyList);\r
   InitializeListHead (&xs.WatchEvents);\r
@@ -1073,16 +1116,13 @@ XenStoreInit (
 \r
   /* Initialize the shared memory rings to talk to xenstored */\r
   Status = XenStoreInitComms (&xs);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
 \r
   return Status;\r
 }\r
 \r
 VOID\r
 XenStoreDeinit (\r
-  IN XENBUS_DEVICE *Dev\r
+  IN XENBUS_DEVICE  *Dev\r
   )\r
 {\r
   //\r
@@ -1091,9 +1131,9 @@ XenStoreDeinit (
   // it is stopped.\r
   //\r
   if (!IsListEmpty (&xs.RegisteredWatches)) {\r
-    XENSTORE_WATCH *Watch;\r
-    LIST_ENTRY *Entry;\r
-    DEBUG ((EFI_D_WARN, "XenStore: RegisteredWatches is not empty, cleaning up..."));\r
+    XENSTORE_WATCH  *Watch;\r
+    LIST_ENTRY      *Entry;\r
+    DEBUG ((DEBUG_WARN, "XenStore: RegisteredWatches is not empty, cleaning up..."));\r
     Entry = GetFirstNode (&xs.RegisteredWatches);\r
     while (!IsNull (&xs.RegisteredWatches, Entry)) {\r
       Watch = XENSTORE_WATCH_FROM_LINK (Entry);\r
@@ -1108,25 +1148,25 @@ XenStoreDeinit (
   // having cleanup the list RegisteredWatches.\r
   //\r
   if (!IsListEmpty (&xs.WatchEvents)) {\r
-    LIST_ENTRY *Entry;\r
-    DEBUG ((EFI_D_WARN, "XenStore: WatchEvents is not empty, cleaning up..."));\r
+    LIST_ENTRY  *Entry;\r
+    DEBUG ((DEBUG_WARN, "XenStore: WatchEvents is not empty, cleaning up..."));\r
     Entry = GetFirstNode (&xs.WatchEvents);\r
     while (!IsNull (&xs.WatchEvents, Entry)) {\r
-      XENSTORE_MESSAGE *Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
+      XENSTORE_MESSAGE  *Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
       Entry = GetNextNode (&xs.WatchEvents, Entry);\r
       RemoveEntryList (&Message->Link);\r
-      FreePool (Message->u.Watch.Vector);\r
+      FreePool ((VOID *)Message->u.Watch.Vector);\r
       FreePool (Message);\r
     }\r
   }\r
 \r
   if (!IsListEmpty (&xs.ReplyList)) {\r
-    XENSTORE_MESSAGE *Message;\r
-    LIST_ENTRY *Entry;\r
+    XENSTORE_MESSAGE  *Message;\r
+    LIST_ENTRY        *Entry;\r
     Entry = GetFirstNode (&xs.ReplyList);\r
     while (!IsNull (&xs.ReplyList, Entry)) {\r
       Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
-      Entry = GetNextNode (&xs.ReplyList, Entry);\r
+      Entry   = GetNextNode (&xs.ReplyList, Entry);\r
       RemoveEntryList (&Message->Link);\r
       FreePool (Message->u.Reply.Body);\r
       FreePool (Message);\r
@@ -1138,7 +1178,7 @@ XenStoreDeinit (
   if (xs.XenStore->server_features & XENSTORE_SERVER_FEATURE_RECONNECTION) {\r
     xs.XenStore->connection = XENSTORE_RECONNECT;\r
     XenEventChannelNotify (xs.Dev, xs.EventChannel);\r
-    while (*(volatile UINT32*)&xs.XenStore->connection == XENSTORE_RECONNECT) {\r
+    while (*(volatile UINT32 *)&xs.XenStore->connection == XENSTORE_RECONNECT) {\r
       XenStoreWaitForEvent (xs.EventChannelEvent, EFI_TIMER_PERIOD_MILLISECONDS (100));\r
     }\r
   } else {\r
@@ -1151,6 +1191,7 @@ XenStoreDeinit (
     xs.XenStore->req_cons = xs.XenStore->req_prod = 0;\r
     xs.XenStore->rsp_cons = xs.XenStore->rsp_prod = 0;\r
   }\r
+\r
   xs.XenStore = NULL;\r
 }\r
 \r
@@ -1161,21 +1202,26 @@ XenStoreDeinit (
 \r
 XENSTORE_STATUS\r
 XenStoreListDirectory (\r
-  IN  CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN  CONST CHAR8           *DirectoryPath,\r
-  IN  CONST CHAR8           *Node,\r
-  OUT UINT32                *DirectoryCountPtr,\r
-  OUT CONST CHAR8           ***DirectoryListPtr\r
+  IN  CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN  CONST CHAR8                 *DirectoryPath,\r
+  IN  CONST CHAR8                 *Node,\r
+  OUT UINT32                      *DirectoryCountPtr,\r
+  OUT CONST CHAR8                 ***DirectoryListPtr\r
   )\r
 {\r
-  CHAR8 *Path;\r
-  CHAR8 *TempStr;\r
-  UINT32 Len = 0;\r
-  XENSTORE_STATUS Status;\r
-\r
-  Path = XenStoreJoin (DirectoryPath, Node);\r
-  Status = XenStoreSingle (Transaction, XS_DIRECTORY, Path, &Len,\r
-                           (VOID **) &TempStr);\r
+  CHAR8            *Path;\r
+  CHAR8            *TempStr;\r
+  UINT32           Len = 0;\r
+  XENSTORE_STATUS  Status;\r
+\r
+  Path   = XenStoreJoin (DirectoryPath, Node);\r
+  Status = XenStoreSingle (\r
+             Transaction,\r
+             XS_DIRECTORY,\r
+             Path,\r
+             &Len,\r
+             (VOID **)&TempStr\r
+             );\r
   FreePool (Path);\r
   if (Status != XENSTORE_STATUS_SUCCESS) {\r
     return Status;\r
@@ -1188,38 +1234,44 @@ XenStoreListDirectory (
 \r
 BOOLEAN\r
 XenStorePathExists (\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN CONST CHAR8           *Directory,\r
-  IN CONST CHAR8           *Node\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN CONST CHAR8                 *Directory,\r
+  IN CONST CHAR8                 *Node\r
   )\r
 {\r
-  CONST CHAR8 **TempStr;\r
-  XENSTORE_STATUS Status;\r
-  UINT32 TempNum;\r
-\r
-  Status = XenStoreListDirectory (Transaction, Directory, Node,\r
-                                  &TempNum, &TempStr);\r
+  CONST CHAR8      **TempStr;\r
+  XENSTORE_STATUS  Status;\r
+  UINT32           TempNum;\r
+\r
+  Status = XenStoreListDirectory (\r
+             Transaction,\r
+             Directory,\r
+             Node,\r
+             &TempNum,\r
+             &TempStr\r
+             );\r
   if (Status != XENSTORE_STATUS_SUCCESS) {\r
     return FALSE;\r
   }\r
-  FreePool (TempStr);\r
+\r
+  FreePool ((VOID *)TempStr);\r
   return TRUE;\r
 }\r
 \r
 XENSTORE_STATUS\r
 XenStoreRead (\r
-  IN  CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN  CONST CHAR8             *DirectoryPath,\r
-  IN  CONST CHAR8             *Node,\r
-  OUT UINT32                  *LenPtr OPTIONAL,\r
-  OUT VOID                    **Result\r
+  IN  CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN  CONST CHAR8                 *DirectoryPath,\r
+  IN  CONST CHAR8                 *Node,\r
+  OUT UINT32                      *LenPtr OPTIONAL,\r
+  OUT VOID                        **Result\r
   )\r
 {\r
-  CHAR8 *Path;\r
-  VOID *Value;\r
-  XENSTORE_STATUS Status;\r
+  CHAR8            *Path;\r
+  VOID             *Value;\r
+  XENSTORE_STATUS  Status;\r
 \r
-  Path = XenStoreJoin (DirectoryPath, Node);\r
+  Path   = XenStoreJoin (DirectoryPath, Node);\r
   Status = XenStoreSingle (Transaction, XS_READ, Path, LenPtr, &Value);\r
   FreePool (Path);\r
   if (Status != XENSTORE_STATUS_SUCCESS) {\r
@@ -1232,22 +1284,22 @@ XenStoreRead (
 \r
 XENSTORE_STATUS\r
 XenStoreWrite (\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN CONST CHAR8           *DirectoryPath,\r
-  IN CONST CHAR8           *Node,\r
-  IN CONST CHAR8           *Str\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN CONST CHAR8                 *DirectoryPath,\r
+  IN CONST CHAR8                 *Node,\r
+  IN CONST CHAR8                 *Str\r
   )\r
 {\r
-  CHAR8 *Path;\r
-  WRITE_REQUEST WriteRequest[2];\r
-  XENSTORE_STATUS Status;\r
+  CHAR8            *Path;\r
+  WRITE_REQUEST    WriteRequest[2];\r
+  XENSTORE_STATUS  Status;\r
 \r
   Path = XenStoreJoin (DirectoryPath, Node);\r
 \r
-  WriteRequest[0].Data = (VOID *) Path;\r
-  WriteRequest[0].Len AsciiStrSize (Path);\r
-  WriteRequest[1].Data = (VOID *) Str;\r
-  WriteRequest[1].Len AsciiStrLen (Str);\r
+  WriteRequest[0].Data = (VOID *)Path;\r
+  WriteRequest[0].Len  = (UINT32)AsciiStrSize (Path);\r
+  WriteRequest[1].Data = (VOID *)Str;\r
+  WriteRequest[1].Len  = (UINT32)AsciiStrLen (Str);\r
 \r
   Status = XenStoreTalkv (Transaction, XS_WRITE, WriteRequest, 2, NULL, NULL);\r
   FreePool (Path);\r
@@ -1257,15 +1309,15 @@ XenStoreWrite (
 \r
 XENSTORE_STATUS\r
 XenStoreRemove (\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN CONST CHAR8            *DirectoryPath,\r
-  IN CONST CHAR8            *Node\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN CONST CHAR8                 *DirectoryPath,\r
+  IN CONST CHAR8                 *Node\r
   )\r
 {\r
-  CHAR8 *Path;\r
-  XENSTORE_STATUS Status;\r
+  CHAR8            *Path;\r
+  XENSTORE_STATUS  Status;\r
 \r
-  Path = XenStoreJoin (DirectoryPath, Node);\r
+  Path   = XenStoreJoin (DirectoryPath, Node);\r
   Status = XenStoreSingle (Transaction, XS_RM, Path, NULL, NULL);\r
   FreePool (Path);\r
 \r
@@ -1277,13 +1329,18 @@ XenStoreTransactionStart (
   OUT XENSTORE_TRANSACTION  *Transaction\r
   )\r
 {\r
-  CHAR8 *IdStr;\r
-  XENSTORE_STATUS Status;\r
-\r
-  Status = XenStoreSingle (XST_NIL, XS_TRANSACTION_START, "", NULL,\r
-                           (VOID **) &IdStr);\r
+  CHAR8            *IdStr;\r
+  XENSTORE_STATUS  Status;\r
+\r
+  Status = XenStoreSingle (\r
+             XST_NIL,\r
+             XS_TRANSACTION_START,\r
+             "",\r
+             NULL,\r
+             (VOID **)&IdStr\r
+             );\r
   if (Status == XENSTORE_STATUS_SUCCESS) {\r
-    Transaction->Id = AsciiStrDecimalToUintn (IdStr);\r
+    Transaction->Id = (UINT32)AsciiStrDecimalToUintn (IdStr);\r
     FreePool (IdStr);\r
   }\r
 \r
@@ -1292,35 +1349,36 @@ XenStoreTransactionStart (
 \r
 XENSTORE_STATUS\r
 XenStoreTransactionEnd (\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN BOOLEAN                Abort\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN BOOLEAN                     Abort\r
   )\r
 {\r
-  CHAR8 AbortStr[2];\r
+  CHAR8  AbortStr[2];\r
 \r
-  if (Abort) {\r
-    AsciiStrCpy (AbortStr, "F");\r
-  } else {\r
-    AsciiStrCpy (AbortStr, "T");\r
-  }\r
+  AbortStr[0] = Abort ? 'F' : 'T';\r
+  AbortStr[1] = '\0';\r
 \r
   return XenStoreSingle (Transaction, XS_TRANSACTION_END, AbortStr, NULL, NULL);\r
 }\r
 \r
 XENSTORE_STATUS\r
+EFIAPI\r
 XenStoreVSPrint (\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN CONST CHAR8           *DirectoryPath,\r
-  IN CONST CHAR8           *Node,\r
-  IN CONST CHAR8           *FormatString,\r
-  IN VA_LIST               Marker\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN CONST CHAR8                 *DirectoryPath,\r
+  IN CONST CHAR8                 *Node,\r
+  IN CONST CHAR8                 *FormatString,\r
+  IN VA_LIST                     Marker\r
   )\r
 {\r
-  CHAR8 *Buf;\r
-  XENSTORE_STATUS Status;\r
-  UINTN BufSize;\r
-\r
-  BufSize = SPrintLengthAsciiFormat (FormatString, Marker) + 1;\r
+  CHAR8            *Buf;\r
+  XENSTORE_STATUS  Status;\r
+  UINTN            BufSize;\r
+  VA_LIST          Marker2;\r
+\r
+  VA_COPY (Marker2, Marker);\r
+  BufSize = SPrintLengthAsciiFormat (FormatString, Marker2) + 1;\r
+  VA_END (Marker2);\r
   Buf = AllocateZeroPool (BufSize);\r
   AsciiVSPrint (Buf, BufSize, FormatString, Marker);\r
   Status = XenStoreWrite (Transaction, DirectoryPath, Node, Buf);\r
@@ -1332,15 +1390,15 @@ XenStoreVSPrint (
 XENSTORE_STATUS\r
 EFIAPI\r
 XenStoreSPrint (\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN CONST CHAR8            *DirectoryPath,\r
-  IN CONST CHAR8            *Node,\r
-  IN CONST CHAR8            *FormatString,\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN CONST CHAR8                 *DirectoryPath,\r
+  IN CONST CHAR8                 *Node,\r
+  IN CONST CHAR8                 *FormatString,\r
   ...\r
   )\r
 {\r
-  VA_LIST Marker;\r
-  XENSTORE_STATUS Status;\r
+  VA_LIST          Marker;\r
+  XENSTORE_STATUS  Status;\r
 \r
   VA_START (Marker, FormatString);\r
   Status = XenStoreVSPrint (Transaction, DirectoryPath, Node, FormatString, Marker);\r
@@ -1357,19 +1415,19 @@ XenStoreRegisterWatch (
   )\r
 {\r
   /* Pointer in ascii is the token. */\r
-  CHAR8 Token[sizeof (XENSTORE_WATCH) * 2 + 1];\r
-  XENSTORE_STATUS Status;\r
-  XENSTORE_WATCH *Watch;\r
+  CHAR8            Token[sizeof (XENSTORE_WATCH) * 2 + 1];\r
+  XENSTORE_STATUS  Status;\r
+  XENSTORE_WATCH   *Watch;\r
 \r
-  Watch = AllocateZeroPool (sizeof (XENSTORE_WATCH));\r
+  Watch            = AllocateZeroPool (sizeof (XENSTORE_WATCH));\r
   Watch->Signature = XENSTORE_WATCH_SIGNATURE;\r
-  Watch->Node = XenStoreJoin (DirectoryPath, Node);\r
+  Watch->Node      = XenStoreJoin (DirectoryPath, Node);\r
 \r
   EfiAcquireLock (&xs.RegisteredWatchesLock);\r
   InsertTailList (&xs.RegisteredWatches, &Watch->Link);\r
   EfiReleaseLock (&xs.RegisteredWatchesLock);\r
 \r
-  AsciiSPrint (Token, sizeof (Token), "%p", (VOID*) Watch);\r
+  AsciiSPrint (Token, sizeof (Token), "%p", (VOID *)Watch);\r
   Status = XenStoreWatch (Watch->Node, Token);\r
 \r
   /* Ignore errors due to multiple registration. */\r
@@ -1392,15 +1450,15 @@ XenStoreRegisterWatch (
 \r
 VOID\r
 XenStoreUnregisterWatch (\r
-  IN XENSTORE_WATCH *Watch\r
+  IN XENSTORE_WATCH  *Watch\r
   )\r
 {\r
-  CHAR8 Token[sizeof (Watch) * 2 + 1];\r
-  LIST_ENTRY *Entry;\r
+  CHAR8       Token[sizeof (Watch) * 2 + 1];\r
+  LIST_ENTRY  *Entry;\r
 \r
   ASSERT (Watch->Signature == XENSTORE_WATCH_SIGNATURE);\r
 \r
-  AsciiSPrint (Token, sizeof (Token), "%p", (VOID *) Watch);\r
+  AsciiSPrint (Token, sizeof (Token), "%p", (VOID *)Watch);\r
   if (XenStoreFindWatch (Token) == NULL) {\r
     return;\r
   }\r
@@ -1415,21 +1473,21 @@ XenStoreUnregisterWatch (
   EfiAcquireLock (&xs.WatchEventsLock);\r
   Entry = GetFirstNode (&xs.WatchEvents);\r
   while (!IsNull (&xs.WatchEvents, Entry)) {\r
-    XENSTORE_MESSAGE *Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
+    XENSTORE_MESSAGE  *Message = XENSTORE_MESSAGE_FROM_LINK (Entry);\r
     Entry = GetNextNode (&xs.WatchEvents, Entry);\r
     if (Message->u.Watch.Handle == Watch) {\r
       RemoveEntryList (&Message->Link);\r
-      FreePool (Message->u.Watch.Vector);\r
+      FreePool ((VOID *)Message->u.Watch.Vector);\r
       FreePool (Message);\r
     }\r
   }\r
+\r
   EfiReleaseLock (&xs.WatchEventsLock);\r
 \r
   FreePool (Watch->Node);\r
   FreePool (Watch);\r
 }\r
 \r
-\r
 //\r
 // XENBUS protocol\r
 //\r
@@ -1437,8 +1495,8 @@ XenStoreUnregisterWatch (
 XENSTORE_STATUS\r
 EFIAPI\r
 XenBusWaitForWatch (\r
-  IN XENBUS_PROTOCOL *This,\r
-  IN VOID *Token\r
+  IN XENBUS_PROTOCOL  *This,\r
+  IN VOID             *Token\r
   )\r
 {\r
   return XenStoreWaitWatch (Token);\r
@@ -1447,10 +1505,10 @@ XenBusWaitForWatch (
 XENSTORE_STATUS\r
 EFIAPI\r
 XenBusXenStoreRead (\r
-  IN  XENBUS_PROTOCOL       *This,\r
-  IN  CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN  CONST CHAR8           *Node,\r
-  OUT VOID                  **Value\r
+  IN  XENBUS_PROTOCOL             *This,\r
+  IN  CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN  CONST CHAR8                 *Node,\r
+  OUT VOID                        **Value\r
   )\r
 {\r
   return XenStoreRead (Transaction, This->Node, Node, NULL, Value);\r
@@ -1459,10 +1517,10 @@ XenBusXenStoreRead (
 XENSTORE_STATUS\r
 EFIAPI\r
 XenBusXenStoreBackendRead (\r
-  IN  XENBUS_PROTOCOL       *This,\r
-  IN  CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN  CONST CHAR8           *Node,\r
-  OUT VOID                  **Value\r
+  IN  XENBUS_PROTOCOL             *This,\r
+  IN  CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN  CONST CHAR8                 *Node,\r
+  OUT VOID                        **Value\r
   )\r
 {\r
   return XenStoreRead (Transaction, This->Backend, Node, NULL, Value);\r
@@ -1471,9 +1529,9 @@ XenBusXenStoreBackendRead (
 XENSTORE_STATUS\r
 EFIAPI\r
 XenBusXenStoreRemove (\r
-  IN XENBUS_PROTOCOL        *This,\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN const char             *Node\r
+  IN XENBUS_PROTOCOL             *This,\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN const char                  *Node\r
   )\r
 {\r
   return XenStoreRemove (Transaction, This->Node, Node);\r
@@ -1492,9 +1550,9 @@ XenBusXenStoreTransactionStart (
 XENSTORE_STATUS\r
 EFIAPI\r
 XenBusXenStoreTransactionEnd (\r
-  IN XENBUS_PROTOCOL        *This,\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN BOOLEAN                Abort\r
+  IN XENBUS_PROTOCOL             *This,\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN BOOLEAN                     Abort\r
   )\r
 {\r
   return XenStoreTransactionEnd (Transaction, Abort);\r
@@ -1503,16 +1561,16 @@ XenBusXenStoreTransactionEnd (
 XENSTORE_STATUS\r
 EFIAPI\r
 XenBusXenStoreSPrint (\r
-  IN XENBUS_PROTOCOL        *This,\r
-  IN CONST XENSTORE_TRANSACTION *Transaction,\r
-  IN CONST CHAR8            *DirectoryPath,\r
-  IN CONST CHAR8            *Node,\r
-  IN CONST CHAR8            *FormatString,\r
+  IN XENBUS_PROTOCOL             *This,\r
+  IN CONST XENSTORE_TRANSACTION  *Transaction,\r
+  IN CONST CHAR8                 *DirectoryPath,\r
+  IN CONST CHAR8                 *Node,\r
+  IN CONST CHAR8                 *FormatString,\r
   ...\r
   )\r
 {\r
-  VA_LIST Marker;\r
-  XENSTORE_STATUS Status;\r
+  VA_LIST          Marker;\r
+  XENSTORE_STATUS  Status;\r
 \r
   VA_START (Marker, FormatString);\r
   Status = XenStoreVSPrint (Transaction, DirectoryPath, Node, FormatString, Marker);\r
@@ -1524,23 +1582,23 @@ XenBusXenStoreSPrint (
 XENSTORE_STATUS\r
 EFIAPI\r
 XenBusRegisterWatch (\r
-  IN  XENBUS_PROTOCOL *This,\r
-  IN  CONST CHAR8     *Node,\r
-  OUT VOID            **Token\r
+  IN  XENBUS_PROTOCOL  *This,\r
+  IN  CONST CHAR8      *Node,\r
+  OUT VOID             **Token\r
   )\r
 {\r
-  return XenStoreRegisterWatch (This->Node, Node, (XENSTORE_WATCH **) Token);\r
+  return XenStoreRegisterWatch (This->Node, Node, (XENSTORE_WATCH **)Token);\r
 }\r
 \r
 XENSTORE_STATUS\r
 EFIAPI\r
 XenBusRegisterWatchBackend (\r
-  IN  XENBUS_PROTOCOL *This,\r
-  IN  CONST CHAR8     *Node,\r
-  OUT VOID            **Token\r
+  IN  XENBUS_PROTOCOL  *This,\r
+  IN  CONST CHAR8      *Node,\r
+  OUT VOID             **Token\r
   )\r
 {\r
-  return XenStoreRegisterWatch (This->Backend, Node, (XENSTORE_WATCH **) Token);\r
+  return XenStoreRegisterWatch (This->Backend, Node, (XENSTORE_WATCH **)Token);\r
 }\r
 \r
 VOID\r
@@ -1550,5 +1608,5 @@ XenBusUnregisterWatch (
   IN VOID             *Token\r
   )\r
 {\r
-  XenStoreUnregisterWatch ((XENSTORE_WATCH *) Token);\r
+  XenStoreUnregisterWatch ((XENSTORE_WATCH *)Token);\r
 }\r