]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceFunctions.c
OvmfPkg/VirtioMmioDeviceLib: implement IOMMU-like member functions
[mirror_edk2.git] / OvmfPkg / Library / VirtioMmioDeviceLib / VirtioMmioDeviceFunctions.c
index 53c734f6b1af10cbc2eaf7b4fa730547dcbf8a08..644ec65e1788b1e319d1f6c7bcf4ee33295cda17 100644 (file)
@@ -81,8 +81,8 @@ VirtioMmioGetDeviceStatus (
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetQueueSize (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT16                  QueueSize\r
+  IN VIRTIO_DEVICE_PROTOCOL *This,\r
+  IN UINT16                  QueueSize\r
   )\r
 {\r
   VIRTIO_MMIO_DEVICE *Device;\r
@@ -97,8 +97,8 @@ VirtioMmioSetQueueSize (
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetDeviceStatus (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT8                   DeviceStatus\r
+  IN VIRTIO_DEVICE_PROTOCOL *This,\r
+  IN UINT8                   DeviceStatus\r
   )\r
 {\r
   VIRTIO_MMIO_DEVICE *Device;\r
@@ -113,8 +113,8 @@ VirtioMmioSetDeviceStatus (
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetQueueNotify (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT16                  QueueNotify\r
+  IN VIRTIO_DEVICE_PROTOCOL *This,\r
+  IN UINT16                  QueueNotify\r
   )\r
 {\r
   VIRTIO_MMIO_DEVICE *Device;\r
@@ -129,8 +129,8 @@ VirtioMmioSetQueueNotify (
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetQueueAlignment (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT32                  Alignment\r
+  IN VIRTIO_DEVICE_PROTOCOL *This,\r
+  IN UINT32                  Alignment\r
   )\r
 {\r
   VIRTIO_MMIO_DEVICE *Device;\r
@@ -145,8 +145,8 @@ VirtioMmioSetQueueAlignment (
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetPageSize (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT32                  PageSize\r
+  IN VIRTIO_DEVICE_PROTOCOL *This,\r
+  IN UINT32                  PageSize\r
   )\r
 {\r
   VIRTIO_MMIO_DEVICE *Device;\r
@@ -165,8 +165,8 @@ VirtioMmioSetPageSize (
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetQueueSel (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT16                  Sel\r
+  IN VIRTIO_DEVICE_PROTOCOL *This,\r
+  IN UINT16                  Sel\r
   )\r
 {\r
   VIRTIO_MMIO_DEVICE *Device;\r
@@ -197,8 +197,8 @@ VirtioMmioSetQueueAddress (
 EFI_STATUS\r
 EFIAPI\r
 VirtioMmioSetGuestFeatures (\r
-  VIRTIO_DEVICE_PROTOCOL *This,\r
-  UINT64                  Features\r
+  IN VIRTIO_DEVICE_PROTOCOL *This,\r
+  IN UINT64                  Features\r
   )\r
 {\r
   VIRTIO_MMIO_DEVICE *Device;\r
@@ -293,3 +293,60 @@ VirtioMmioDeviceRead (
 \r
   return EFI_SUCCESS;\r
 }\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioMmioAllocateSharedPages (\r
+  IN  VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN  UINTN                   NumPages,\r
+  OUT VOID                    **HostAddress\r
+  )\r
+{\r
+  VOID        *Buffer;\r
+\r
+  Buffer = AllocatePages (NumPages);\r
+  if (Buffer == NULL) {\r
+    return EFI_OUT_OF_RESOURCES;\r
+  }\r
+\r
+  *HostAddress = Buffer;\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+VOID\r
+EFIAPI\r
+VirtioMmioFreeSharedPages (\r
+  IN  VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN  UINTN                   NumPages,\r
+  IN  VOID                    *HostAddress\r
+  )\r
+{\r
+  FreePages (HostAddress, NumPages);\r
+}\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioMmioMapSharedBuffer (\r
+  IN      VIRTIO_DEVICE_PROTOCOL  *This,\r
+  IN      VIRTIO_MAP_OPERATION    Operation,\r
+  IN      VOID                    *HostAddress,\r
+  IN OUT  UINTN                   *NumberOfBytes,\r
+  OUT     EFI_PHYSICAL_ADDRESS    *DeviceAddress,\r
+  OUT     VOID                    **Mapping\r
+  )\r
+{\r
+  *DeviceAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) HostAddress;\r
+  *Mapping = NULL;\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+VirtioMmioUnmapSharedBuffer (\r
+  IN VIRTIO_DEVICE_PROTOCOL    *This,\r
+  IN VOID                      *Mapping\r
+  )\r
+{\r
+  return EFI_SUCCESS;\r
+}\r