]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/VirtioBlkDxe/VirtioBlk.c
OvmfPkg: Include/IndustryStandard: extract VirtioBlk.h from Virtio.h
[mirror_edk2.git] / OvmfPkg / VirtioBlkDxe / VirtioBlk.c
index 9969aab66fe425adee41aab5fb201adcf81bf354..ead98272a52800654460ff8ebeaae12e1aeaf7b2 100644 (file)
@@ -23,6 +23,7 @@
 **/\r
 \r
 #include <IndustryStandard/Pci.h>\r
+#include <IndustryStandard/VirtioBlk.h>\r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
@@ -197,15 +198,15 @@ VirtioRead (
 \r
 #define VIRTIO_CFG_WRITE(Dev, Field, Value)  (VirtioWrite (             \\r
                                                 (Dev)->PciIo,           \\r
-                                                OFFSET_OF_VHDR (Field), \\r
-                                                SIZE_OF_VHDR (Field),   \\r
+                                                OFFSET_OF_VBLK (Field), \\r
+                                                SIZE_OF_VBLK (Field),   \\r
                                                 (Value)                 \\r
                                                 ))\r
 \r
 #define VIRTIO_CFG_READ(Dev, Field, Pointer) (VirtioRead (              \\r
                                                 (Dev)->PciIo,           \\r
-                                                OFFSET_OF_VHDR (Field), \\r
-                                                SIZE_OF_VHDR (Field),   \\r
+                                                OFFSET_OF_VBLK (Field), \\r
+                                                SIZE_OF_VBLK (Field),   \\r
                                                 sizeof *(Pointer),      \\r
                                                 (Pointer)               \\r
                                                 ))\r
@@ -538,7 +539,7 @@ SynchronousRequest (
   // OK. virtio-blk's only virtqueue is #0, called "requestq" (see Appendix D).\r
   //\r
   MemoryFence();\r
-  if (EFI_ERROR (VIRTIO_CFG_WRITE (Dev, VhdrQueueNotify, 0))) {\r
+  if (EFI_ERROR (VIRTIO_CFG_WRITE (Dev, Generic.VhdrQueueNotify, 0))) {\r
     return EFI_DEVICE_ERROR;\r
   }\r
 \r
@@ -984,19 +985,19 @@ VirtioBlkInit (
   // Execute virtio-0.9.5, 2.2.1 Device Initialization Sequence.\r
   //\r
   NextDevStat = 0;             // step 1 -- reset device\r
-  Status = VIRTIO_CFG_WRITE (Dev, VhdrDeviceStatus, NextDevStat);\r
+  Status = VIRTIO_CFG_WRITE (Dev, Generic.VhdrDeviceStatus, NextDevStat);\r
   if (EFI_ERROR (Status)) {\r
     goto Failed;\r
   }\r
 \r
   NextDevStat |= VSTAT_ACK;    // step 2 -- acknowledge device presence\r
-  Status = VIRTIO_CFG_WRITE (Dev, VhdrDeviceStatus, NextDevStat);\r
+  Status = VIRTIO_CFG_WRITE (Dev, Generic.VhdrDeviceStatus, NextDevStat);\r
   if (EFI_ERROR (Status)) {\r
     goto Failed;\r
   }\r
 \r
   NextDevStat |= VSTAT_DRIVER; // step 3 -- we know how to drive it\r
-  Status = VIRTIO_CFG_WRITE (Dev, VhdrDeviceStatus, NextDevStat);\r
+  Status = VIRTIO_CFG_WRITE (Dev, Generic.VhdrDeviceStatus, NextDevStat);\r
   if (EFI_ERROR (Status)) {\r
     goto Failed;\r
   }\r
@@ -1004,7 +1005,7 @@ VirtioBlkInit (
   //\r
   // step 4a -- retrieve and validate features\r
   //\r
-  Status = VIRTIO_CFG_READ (Dev, VhdrDeviceFeatureBits, &Features);\r
+  Status = VIRTIO_CFG_READ (Dev, Generic.VhdrDeviceFeatureBits, &Features);\r
   if (EFI_ERROR (Status)) {\r
     goto Failed;\r
   }\r
@@ -1039,11 +1040,11 @@ VirtioBlkInit (
   //\r
   // step 4b -- allocate virtqueue\r
   //\r
-  Status = VIRTIO_CFG_WRITE (Dev, VhdrQueueSelect, 0);\r
+  Status = VIRTIO_CFG_WRITE (Dev, Generic.VhdrQueueSelect, 0);\r
   if (EFI_ERROR (Status)) {\r
     goto Failed;\r
   }\r
-  Status = VIRTIO_CFG_READ (Dev, VhdrQueueSize, &QueueSize);\r
+  Status = VIRTIO_CFG_READ (Dev, Generic.VhdrQueueSize, &QueueSize);\r
   if (EFI_ERROR (Status)) {\r
     goto Failed;\r
   }\r
@@ -1061,7 +1062,7 @@ VirtioBlkInit (
   // step 4c -- Report GPFN (guest-physical frame number) of queue. If anything\r
   // fails from here on, we must release the ring resources.\r
   //\r
-  Status = VIRTIO_CFG_WRITE (Dev, VhdrQueueAddress,\r
+  Status = VIRTIO_CFG_WRITE (Dev, Generic.VhdrQueueAddress,\r
              (UINTN) Dev->Ring.Base >> EFI_PAGE_SHIFT);\r
   if (EFI_ERROR (Status)) {\r
     goto ReleaseQueue;\r
@@ -1073,7 +1074,7 @@ VirtioBlkInit (
   // device-independent (known or unknown) VIRTIO_F_* capabilities (see\r
   // Appendix B).\r
   //\r
-  Status = VIRTIO_CFG_WRITE (Dev, VhdrGuestFeatureBits, 0);\r
+  Status = VIRTIO_CFG_WRITE (Dev, Generic.VhdrGuestFeatureBits, 0);\r
   if (EFI_ERROR (Status)) {\r
     goto ReleaseQueue;\r
   }\r
@@ -1082,7 +1083,7 @@ VirtioBlkInit (
   // step 6 -- initialization complete\r
   //\r
   NextDevStat |= VSTAT_DRIVER_OK;\r
-  Status = VIRTIO_CFG_WRITE (Dev, VhdrDeviceStatus, NextDevStat);\r
+  Status = VIRTIO_CFG_WRITE (Dev, Generic.VhdrDeviceStatus, NextDevStat);\r
   if (EFI_ERROR (Status)) {\r
     goto ReleaseQueue;\r
   }\r
@@ -1118,7 +1119,7 @@ Failed:
   // Status. PCI IO access failure here should not mask the original error.\r
   //\r
   NextDevStat |= VSTAT_FAILED;\r
-  VIRTIO_CFG_WRITE (Dev, VhdrDeviceStatus, NextDevStat);\r
+  VIRTIO_CFG_WRITE (Dev, Generic.VhdrDeviceStatus, NextDevStat);\r
 \r
   return Status; // reached only via Failed above\r
 }\r
@@ -1145,7 +1146,7 @@ VirtioBlkUninit (
   // VIRTIO_CFG_WRITE() returns, the host will have learned to stay away from\r
   // the old comms area.\r
   //\r
-  VIRTIO_CFG_WRITE (Dev, VhdrDeviceStatus, 0);\r
+  VIRTIO_CFG_WRITE (Dev, Generic.VhdrDeviceStatus, 0);\r
 \r
   VirtioRingUninit (&Dev->Ring);\r
 \r