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
This commit is contained in:
jljusten
2012-10-12 18:53:36 +00:00
parent a9624f945e
commit 6b28fe9ee8
3 changed files with 83 additions and 58 deletions

View File

@@ -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_