summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2012-10-12 18:53:36 +0000
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2012-10-12 18:53:36 +0000
commit6b28fe9ee8957c98b4c70c83560734196f43f92f (patch)
treed87546cff98fcf83614bece0ab5103790a6d1c89
parenta9624f945e37047196e825fcbe170772373fdae9 (diff)
downloadedk2-6b28fe9ee8957c98b4c70c83560734196f43f92f.tar.gz
edk2-6b28fe9ee8957c98b4c70c83560734196f43f92f.tar.bz2
edk2-6b28fe9ee8957c98b4c70c83560734196f43f92f.zip
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 <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13841 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--OvmfPkg/Include/IndustryStandard/Virtio.h60
-rw-r--r--OvmfPkg/Include/IndustryStandard/VirtioBlk.h80
-rw-r--r--OvmfPkg/VirtioBlkDxe/VirtioBlk.c1
3 files changed, 83 insertions, 58 deletions
diff --git a/OvmfPkg/Include/IndustryStandard/Virtio.h b/OvmfPkg/Include/IndustryStandard/Virtio.h
index a330738999..05c658fa54 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 0000000000..b71f224b65
--- /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 <IndustryStandard/Virtio.h>
+
+
+//
+// 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 01a562d165..ead98272a5 100644
--- a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c
+++ b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c
@@ -23,6 +23,7 @@
**/
#include <IndustryStandard/Pci.h>
+#include <IndustryStandard/VirtioBlk.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>