[edk2] [PATCH 07/13] OvmfPkg: Include/IndustryStandard: extract VirtioBlk.h from Virtio.h

Subject: [edk2] [PATCH 07/13] OvmfPkg: Include/IndustryStandard: extract VirtioBlk.h from Virtio.h

From: Laszlo Ersek <lersek@redhat.com>

To: edk2-devel@lists.sourceforge.net

Date: 2012-10-10 05:42:35

  • 2012-10-10 05:42:35  Laszlo Ersek   [edk2] [PATCH 07/13] OvmfPkg: Include/IndustryStandard: extract VirtioBlk.h from Virtio.h
Separate virtio-blk related macro and type definitions from generic virtio
related ones. Adapt the virtio-blk driver since it needs the latter too.

Contributed-under: TianoCore Contribution Agreement 1.0

Signed-off-by: Laszlo Ersek 
---
 OvmfPkg/Include/IndustryStandard/Virtio.h    |   60 +-------------------
 OvmfPkg/Include/IndustryStandard/VirtioBlk.h |   80 ++++++++++++++++++++++++++
 OvmfPkg/VirtioBlkDxe/VirtioBlk.c             |    1 +
 3 files changed, 83 insertions(+), 58 deletions(-)
 create mode 100644 OvmfPkg/Include/IndustryStandard/VirtioBlk.h

diff --git a/OvmfPkg/Include/IndustryStandard/Virtio.h b/OvmfPkg/Include/IndustryStandard/Virtio.h
index a330738..05c658f 100644
--- a/OvmfPkg/Include/IndustryStandard/Virtio.h
+++ b/OvmfPkg/Include/IndustryStandard/Virtio.h
@@ -1,6 +1,7 @@
 /** @file
 
-  Type and macro definitions corresponding to the virtio-0.9.5 specification.
+  Generic type and macro definitions corresponding to the virtio-0.9.5
+  specification.
 
   Copyright (C) 2012, Red Hat, Inc.
 
@@ -108,25 +109,8 @@ typedef struct {
   UINT8  VhdrDeviceStatus;
   UINT8  VhdrISR;
 } VIRTIO_HDR;
-
-//
-// virtio-0.9.5, Appendix D: Block Device
-//
-typedef struct {
-  VIRTIO_HDR Generic;
-  UINT64     VhdrCapacity;
-  UINT32     VhdrSizeMax;
-  UINT32     VhdrSegMax;
-  UINT16     VhdrCylinders;
-  UINT8      VhdrHeads;
-  UINT8      VhdrSectors;
-  UINT32     VhdrBlkSize;
-} VBLK_HDR;
 #pragma pack()
 
-#define OFFSET_OF_VBLK(Field) OFFSET_OF (VBLK_HDR, Field)
-#define SIZE_OF_VBLK(Field)   (sizeof ((VBLK_HDR *) 0)->Field)
-
 
 //
 // virtio-0.9.5, 2.2.2.1 Device Status
@@ -143,45 +127,5 @@ typedef struct {
 #define VIRTIO_F_RING_INDIRECT_DESC BIT28
 #define VIRTIO_F_RING_EVENT_IDX     BIT29
 
-//
-// virtio-0.9.5, Appendix D: Block Device
-//
-#define VIRTIO_BLK_F_BARRIER  BIT0
-#define VIRTIO_BLK_F_SIZE_MAX BIT1
-#define VIRTIO_BLK_F_SEG_MAX  BIT2
-#define VIRTIO_BLK_F_GEOMETRY BIT4
-#define VIRTIO_BLK_F_RO       BIT5
-#define VIRTIO_BLK_F_BLK_SIZE BIT6 // treated as "logical block size" in
-                                   // practice; actual host side implementation
-                                   // negotiates "optimal" block size
-                                   // separately
-#define VIRTIO_BLK_F_SCSI     BIT7
-#define VIRTIO_BLK_F_FLUSH    BIT9 // identical to "write cache enabled"
-
-
-//
-// We keep the status byte separate from the rest of the virtio-blk request
-// header. See description of historical scattering at the end of Appendix D:
-// we're going to put the status byte in a separate VRING_DESC.
-//
-#pragma pack(1)
-typedef struct {
-  UINT32 Type;
-  UINT32 IoPrio;
-  UINT64 Sector;
-} VIRTIO_BLK_REQ;
-#pragma pack()
-
-#define VIRTIO_BLK_T_IN           0x00000000
-#define VIRTIO_BLK_T_OUT          0x00000001
-#define VIRTIO_BLK_T_SCSI_CMD     0x00000002
-#define VIRTIO_BLK_T_SCSI_CMD_OUT 0x00000003
-#define VIRTIO_BLK_T_FLUSH        0x00000004
-#define VIRTIO_BLK_T_FLUSH_OUT    0x00000005
-#define VIRTIO_BLK_T_BARRIER      BIT31
-
-#define VIRTIO_BLK_S_OK           0x00
-#define VIRTIO_BLK_S_IOERR        0x01
-#define VIRTIO_BLK_S_UNSUPP       0x02
 
 #endif // _VIRTIO_H_
diff --git a/OvmfPkg/Include/IndustryStandard/VirtioBlk.h b/OvmfPkg/Include/IndustryStandard/VirtioBlk.h
new file mode 100644
index 0000000..b71f224
--- /dev/null
+++ b/OvmfPkg/Include/IndustryStandard/VirtioBlk.h
@@ -0,0 +1,80 @@
+/** @file
+
+  Virtio Block Device specific type and macro definitions corresponding to the
+  virtio-0.9.5 specification.
+
+  Copyright (C) 2012, Red Hat, Inc.
+
+  This program and the accompanying materials are licensed and made available
+  under the terms and conditions of the BSD License which accompanies this
+  distribution. The full text of the license may be found at
+  http://opensource.org/licenses/bsd-license.php
+
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
+  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef _VIRTIO_BLK_H_
+#define _VIRTIO_BLK_H_
+
+#include 
+
+
+//
+// virtio-0.9.5, Appendix D: Block Device
+//
+#pragma pack(1)
+typedef struct {
+  VIRTIO_HDR Generic;
+  UINT64     VhdrCapacity;
+  UINT32     VhdrSizeMax;
+  UINT32     VhdrSegMax;
+  UINT16     VhdrCylinders;
+  UINT8      VhdrHeads;
+  UINT8      VhdrSectors;
+  UINT32     VhdrBlkSize;
+} VBLK_HDR;
+#pragma pack()
+
+#define OFFSET_OF_VBLK(Field) OFFSET_OF (VBLK_HDR, Field)
+#define SIZE_OF_VBLK(Field)   (sizeof ((VBLK_HDR *) 0)->Field)
+
+#define VIRTIO_BLK_F_BARRIER  BIT0
+#define VIRTIO_BLK_F_SIZE_MAX BIT1
+#define VIRTIO_BLK_F_SEG_MAX  BIT2
+#define VIRTIO_BLK_F_GEOMETRY BIT4
+#define VIRTIO_BLK_F_RO       BIT5
+#define VIRTIO_BLK_F_BLK_SIZE BIT6 // treated as "logical block size" in
+                                   // practice; actual host side implementation
+                                   // negotiates "optimal" block size
+                                   // separately
+#define VIRTIO_BLK_F_SCSI     BIT7
+#define VIRTIO_BLK_F_FLUSH    BIT9 // identical to "write cache enabled"
+
+//
+// We keep the status byte separate from the rest of the virtio-blk request
+// header. See description of historical scattering at the end of Appendix D:
+// we're going to put the status byte in a separate VRING_DESC.
+//
+#pragma pack(1)
+typedef struct {
+  UINT32 Type;
+  UINT32 IoPrio;
+  UINT64 Sector;
+} VIRTIO_BLK_REQ;
+#pragma pack()
+
+#define VIRTIO_BLK_T_IN           0x00000000
+#define VIRTIO_BLK_T_OUT          0x00000001
+#define VIRTIO_BLK_T_SCSI_CMD     0x00000002
+#define VIRTIO_BLK_T_SCSI_CMD_OUT 0x00000003
+#define VIRTIO_BLK_T_FLUSH        0x00000004
+#define VIRTIO_BLK_T_FLUSH_OUT    0x00000005
+#define VIRTIO_BLK_T_BARRIER      BIT31
+
+#define VIRTIO_BLK_S_OK           0x00
+#define VIRTIO_BLK_S_IOERR        0x01
+#define VIRTIO_BLK_S_UNSUPP       0x02
+
+#endif // _VIRTIO_BLK_H_
diff --git a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c
index 01a562d..ead9827 100644
--- a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c
+++ b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c
@@ -23,6 +23,7 @@
 **/
 
 #include 
+#include 
 #include 
 #include 
 #include 
-- 
1.7.1



------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel