summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/VirtioBlkDxe
diff options
context:
space:
mode:
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2012-10-12 18:52:24 +0000
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2012-10-12 18:52:24 +0000
commit045b46e92d2ff47a1fa1d7aece0155b87b412e3d (patch)
tree7b538cb314751262a2977baa5670e4705208a07f /OvmfPkg/VirtioBlkDxe
parent936e3a5dfdf9b2430f3917a11da92d45f259c3e7 (diff)
downloadedk2-045b46e92d2ff47a1fa1d7aece0155b87b412e3d.tar.gz
edk2-045b46e92d2ff47a1fa1d7aece0155b87b412e3d.tar.bz2
edk2-045b46e92d2ff47a1fa1d7aece0155b87b412e3d.zip
OvmfPkg: move VirtioBlkDxe/Virtio.h to Include/IndustryStandard/Virtio.h
This commit consists of: - a verbatim move ("similarity index 100%" in git parlance), - an updated #include directive in VirtioBlkDxe/VirtioBlk.h, - and an OvmfPkg.dec package entry in VirtioBlkDxe/VirtioBlk.inf, so that the new include directory is searched. 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@13836 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'OvmfPkg/VirtioBlkDxe')
-rw-r--r--OvmfPkg/VirtioBlkDxe/Virtio.h176
-rw-r--r--OvmfPkg/VirtioBlkDxe/VirtioBlk.h2
-rw-r--r--OvmfPkg/VirtioBlkDxe/VirtioBlk.inf1
3 files changed, 2 insertions, 177 deletions
diff --git a/OvmfPkg/VirtioBlkDxe/Virtio.h b/OvmfPkg/VirtioBlkDxe/Virtio.h
deleted file mode 100644
index 5e2e8f4c6f..0000000000
--- a/OvmfPkg/VirtioBlkDxe/Virtio.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/** @file
-
- 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.
-
-**/
-
-#include <Base.h>
-
-
-//
-// Data in the communication area is defined as packed and accessed as
-// volatile.
-//
-// Some structures contain arrays with dynamically determined size. In such
-// cases the array and its sibling fields are replaced with pointers.
-//
-// All indices (variables and fields named *Idx) are free-running and wrap
-// around after 0xFFFF. The queue size reported by the host is always an
-// integral power of 2, not greater than 32768. Actual array indices are
-// consistently calculated by taking the remainder of a given Idx object modulo
-// QueueSize. Since 0x10000 is an integral multiple of the QueueSize, UINT16
-// wraparound is a correct wraparound modulo QueueSize too (it doesn't offset
-// the remainder class).
-//
-// virtio-0.9.5, 2.3.4 Available Ring
-//
-#define VRING_AVAIL_F_NO_INTERRUPT BIT0
-
-typedef struct {
- volatile UINT16 *Flags;
- volatile UINT16 *Idx;
-
- volatile UINT16 *Ring; // QueueSize elements
- volatile UINT16 *UsedEvent; // unused as per negotiation
-} VRING_AVAIL;
-
-
-//
-// virtio-0.9.5, 2.3.5 Used Ring
-//
-#define VRING_USED_F_NO_NOTIFY BIT0
-
-#pragma pack(1)
-typedef struct {
- UINT32 Id;
- UINT32 Len;
-} VRING_USED_ELEM;
-#pragma pack()
-
-typedef struct {
- volatile UINT16 *Flags;
- volatile UINT16 *Idx;
- volatile VRING_USED_ELEM *UsedElem; // QueueSize elements
- volatile UINT16 *AvailEvent; // unused as per negotiation
-} VRING_USED;
-
-
-//
-// virtio-0.9.5, 2.3.2 Descriptor Table
-//
-#define VRING_DESC_F_NEXT BIT0 // more descriptors in this request
-#define VRING_DESC_F_WRITE BIT1 // buffer to be written *by the host*
-#define VRING_DESC_F_INDIRECT BIT2 // unused
-
-#pragma pack(1)
-typedef struct {
- UINT64 Addr;
- UINT32 Len;
- UINT16 Flags;
- UINT16 Next;
-} VRING_DESC;
-#pragma pack()
-
-typedef struct {
- UINTN NumPages;
- VOID *Base; // deallocate only this field
- volatile VRING_DESC *Desc; // QueueSize elements
- VRING_AVAIL Avail;
- VRING_USED Used;
- UINT16 QueueSize;
-} VRING;
-
-
-//
-// virtio-0.9.5, 2.2.2 Virtio Header -- no MSI-X
-// virtio-0.9.5, Appendix D
-//
-#pragma pack(1)
-typedef struct {
- UINT32 VhdrDeviceFeatureBits;
- UINT32 VhdrGuestFeatureBits;
- UINT32 VhdrQueueAddress;
- UINT16 VhdrQueueSize;
- UINT16 VhdrQueueSelect;
- UINT16 VhdrQueueNotify;
- UINT8 VhdrDeviceStatus;
- UINT8 VhdrISR;
- UINT64 VhdrCapacity;
- UINT32 VhdrSizeMax;
- UINT32 VhdrSegMax;
- UINT16 VhdrCylinders;
- UINT8 VhdrHeads;
- UINT8 VhdrSectors;
- UINT32 VhdrBlkSize;
-} VBLK_HDR;
-#pragma pack()
-
-#define OFFSET_OF_VHDR(Field) ((UINTN)(UINT8 *)&((VBLK_HDR *) 0)->Field)
-#define SIZE_OF_VHDR(Field) (sizeof ((VBLK_HDR *) 0)->Field)
-
-
-//
-// virtio-0.9.5, 2.2.2.1 Device Status
-//
-#define VSTAT_ACK BIT0
-#define VSTAT_DRIVER BIT1
-#define VSTAT_DRIVER_OK BIT2
-#define VSTAT_FAILED BIT7
-
-//
-// virtio-0.9.5, Appendix B: Reserved (Device-Independent) Feature Bits
-//
-#define VIRTIO_F_NOTIFY_ON_EMPTY BIT24
-#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
diff --git a/OvmfPkg/VirtioBlkDxe/VirtioBlk.h b/OvmfPkg/VirtioBlkDxe/VirtioBlk.h
index c769991839..d22570def9 100644
--- a/OvmfPkg/VirtioBlkDxe/VirtioBlk.h
+++ b/OvmfPkg/VirtioBlkDxe/VirtioBlk.h
@@ -23,7 +23,7 @@
#include <Protocol/DriverBinding.h>
#include <Protocol/PciIo.h>
-#include "Virtio.h"
+#include <IndustryStandard/Virtio.h>
#define VBLK_SIG SIGNATURE_32 ('V', 'B', 'L', 'K')
diff --git a/OvmfPkg/VirtioBlkDxe/VirtioBlk.inf b/OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
index 26ad8f8aa7..730903d55e 100644
--- a/OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
+++ b/OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
@@ -26,6 +26,7 @@
[Packages]
MdePkg/MdePkg.dec
+ OvmfPkg/OvmfPkg.dec
[LibraryClasses]
BaseMemoryLib