]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/XenBusDxe/XenBus.c
OvmfPkg/Csm/LegacyBiosDxe: Fix Legacy16GetTableAddress call for E820 data
[mirror_edk2.git] / OvmfPkg / XenBusDxe / XenBus.c
index 896a6607b73fce0d21225dbb7c585337721034b9..bb8ddbc4d44da4f07ab6f67f22faccef12948d6e 100644 (file)
   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 <Library/PrintLib.h>\r
 STATIC XENBUS_PRIVATE_DATA gXenBusPrivateData;\r
 \r
 STATIC XENBUS_DEVICE_PATH gXenBusDevicePathTemplate = {\r
-  .Vendor.Header.Type = HARDWARE_DEVICE_PATH,\r
-  .Vendor.Header.SubType = HW_VENDOR_DP,\r
-  .Vendor.Header.Length[0] = (UINT8) sizeof (XENBUS_DEVICE_PATH),\r
-  .Vendor.Header.Length[1] = (UINT8) (sizeof (XENBUS_DEVICE_PATH) >> 8),\r
-  .Vendor.Guid = XENBUS_PROTOCOL_GUID,\r
-  .Type = 0,\r
-  .DeviceId = 0\r
+  {                                                 // Vendor\r
+    {                                               // Vendor.Header\r
+      HARDWARE_DEVICE_PATH,                         // Vendor.Header.Type\r
+      HW_VENDOR_DP,                                 // Vendor.Header.SubType\r
+      {\r
+        (UINT8) (sizeof (XENBUS_DEVICE_PATH)),      // Vendor.Header.Length[0]\r
+        (UINT8) (sizeof (XENBUS_DEVICE_PATH) >> 8), // Vendor.Header.Length[1]\r
+      }\r
+    },\r
+    XENBUS_PROTOCOL_GUID,                           // Vendor.Guid\r
+  },\r
+  0,                                                // Type\r
+  0                                                 // DeviceId\r
 };\r
 \r
 \r
@@ -132,7 +122,7 @@ XenBusAddDevice (
   XENBUS_PRIVATE_DATA *Private;\r
   EFI_STATUS Status;\r
   XENBUS_DEVICE_PATH *TempXenBusPath;\r
-  VOID *ChildPciIo;\r
+  VOID *ChildXenIo;\r
 \r
   AsciiSPrint (DevicePath, sizeof (DevicePath),\r
                "device/%a/%a", Type, Id);\r
@@ -176,7 +166,7 @@ XenBusAddDevice (
     Private->XenBusIo.Type = AsciiStrDup (Type);\r
     Private->XenBusIo.Node = AsciiStrDup (DevicePath);\r
     Private->XenBusIo.Backend = BackendPath;\r
-    Private->XenBusIo.DeviceId = AsciiStrDecimalToUintn (Id);\r
+    Private->XenBusIo.DeviceId = (UINT16)AsciiStrDecimalToUintn (Id);\r
     Private->Dev = Dev;\r
 \r
     TempXenBusPath = AllocateCopyPool (sizeof (XENBUS_DEVICE_PATH),\r
@@ -202,8 +192,8 @@ XenBusAddDevice (
     }\r
 \r
     Status = gBS->OpenProtocol (Dev->ControllerHandle,\r
-               &gEfiPciIoProtocolGuid,\r
-               &ChildPciIo, Dev->This->DriverBindingHandle,\r
+               &gXenIoProtocolGuid,\r
+               &ChildXenIo, Dev->This->DriverBindingHandle,\r
                Private->Handle,\r
                EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER);\r
     if (EFI_ERROR (Status)) {\r
@@ -268,7 +258,7 @@ XenBusEnumerateDeviceType (
     XenBusAddDevice (Dev, Type, Directory[Index]);\r
   }\r
 \r
-  FreePool (Directory);\r
+  FreePool ((VOID*)Directory);\r
 }\r
 \r
 \r
@@ -304,7 +294,7 @@ XenBusEnumerateBus (
     XenBusEnumerateDeviceType (Dev, Types[Index]);\r
   }\r
 \r
-  FreePool (Types);\r
+  FreePool ((VOID*)Types);\r
 \r
   return XENSTORE_STATUS_SUCCESS;\r
 }\r
@@ -314,7 +304,7 @@ XENSTORE_STATUS
 EFIAPI\r
 XenBusSetState (\r
   IN XENBUS_PROTOCOL      *This,\r
-  IN XENSTORE_TRANSACTION Transaction,\r
+  IN CONST XENSTORE_TRANSACTION *Transaction,\r
   IN enum xenbus_state    NewState\r
   )\r
 {\r
@@ -348,28 +338,33 @@ Out:
 }\r
 \r
 STATIC XENBUS_PRIVATE_DATA gXenBusPrivateData = {\r
-  .Signature = XENBUS_PRIVATE_DATA_SIGNATURE,\r
-\r
-  .XenBusIo.XsRead = XenBusXenStoreRead,\r
-  .XenBusIo.XsBackendRead = XenBusXenStoreBackendRead,\r
-  .XenBusIo.XsPrintf = XenBusXenStoreSPrint,\r
-  .XenBusIo.XsRemove = XenBusXenStoreRemove,\r
-  .XenBusIo.XsTransactionStart = XenBusXenStoreTransactionStart,\r
-  .XenBusIo.XsTransactionEnd = XenBusXenStoreTransactionEnd,\r
-  .XenBusIo.SetState = XenBusSetState,\r
-  .XenBusIo.GrantAccess = XenBusGrantAccess,\r
-  .XenBusIo.GrantEndAccess = XenBusGrantEndAccess,\r
-  .XenBusIo.EventChannelAllocate = XenBusEventChannelAllocate,\r
-  .XenBusIo.EventChannelNotify = XenBusEventChannelNotify,\r
-  .XenBusIo.EventChannelClose = XenBusEventChannelClose,\r
-  .XenBusIo.RegisterWatch = XenBusRegisterWatch,\r
-  .XenBusIo.RegisterWatchBackend = XenBusRegisterWatchBackend,\r
-  .XenBusIo.UnregisterWatch = XenBusUnregisterWatch,\r
-  .XenBusIo.WaitForWatch = XenBusWaitForWatch,\r
-\r
-  .XenBusIo.Type = NULL,\r
-  .XenBusIo.Node = NULL,\r
-  .XenBusIo.Backend = NULL,\r
-\r
-  .Dev = NULL\r
+  XENBUS_PRIVATE_DATA_SIGNATURE,    // Signature\r
+  { NULL, NULL },                   // Link\r
+  NULL,                             // Handle\r
+  {                                 // XenBusIo\r
+    XenBusXenStoreRead,             // XenBusIo.XsRead\r
+    XenBusXenStoreBackendRead,      // XenBusIo.XsBackendRead\r
+    XenBusXenStoreSPrint,           // XenBusIo.XsPrintf\r
+    XenBusXenStoreRemove,           // XenBusIo.XsRemove\r
+    XenBusXenStoreTransactionStart, // XenBusIo.XsTransactionStart\r
+    XenBusXenStoreTransactionEnd,   // XenBusIo.XsTransactionEnd\r
+    XenBusSetState,                 // XenBusIo.SetState\r
+    XenBusGrantAccess,              // XenBusIo.GrantAccess\r
+    XenBusGrantEndAccess,           // XenBusIo.GrantEndAccess\r
+    XenBusEventChannelAllocate,     // XenBusIo.EventChannelAllocate\r
+    XenBusEventChannelNotify,       // XenBusIo.EventChannelNotify\r
+    XenBusEventChannelClose,        // XenBusIo.EventChannelClose\r
+    XenBusRegisterWatch,            // XenBusIo.RegisterWatch\r
+    XenBusRegisterWatchBackend,     // XenBusIo.RegisterWatchBackend\r
+    XenBusUnregisterWatch,          // XenBusIo.UnregisterWatch\r
+    XenBusWaitForWatch,             // XenBusIo.WaitForWatch\r
+\r
+    NULL,                           // XenBusIo.Type\r
+    0,                              // XenBusIo.DeviceId\r
+    NULL,                           // XenBusIo.Node\r
+    NULL,                           // XenBusIo.Backend\r
+  },\r
+\r
+  NULL,                             // Dev\r
+  NULL                              // DevicePath\r
 };\r