]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Include/IndustryStandard/VirtioBlk.h
OvmfPkg: QemuVideoDxe: Int10h stub for Windows 7 & 2008 (stdvga, QXL)
[mirror_edk2.git] / OvmfPkg / Include / IndustryStandard / VirtioBlk.h
index ab11e6c8552abdc7986632d565cbecc8d7045e8f..2ce528a12ef37bc31a8b999c08c406a518ebae48 100644 (file)
 //\r
 #pragma pack(1)\r
 typedef struct {\r
-  UINT64     Capacity;\r
-  UINT32     SizeMax;\r
-  UINT32     SegMax;\r
-  UINT16     Cylinders;\r
-  UINT8      Heads;\r
-  UINT8      Sectors;\r
-  UINT32     BlkSize;\r
+  UINT8  PhysicalBlockExp; // # of logical blocks per physical block (log2)\r
+  UINT8  AlignmentOffset;  // offset of first aligned logical block\r
+  UINT16 MinIoSize;        // suggested minimum I/O size in blocks\r
+  UINT32 OptIoSize;        // optimal (suggested maximum) I/O size in blocks\r
+} VIRTIO_BLK_TOPOLOGY;\r
+\r
+typedef struct {\r
+  UINT64              Capacity;\r
+  UINT32              SizeMax;\r
+  UINT32              SegMax;\r
+  UINT16              Cylinders;\r
+  UINT8               Heads;\r
+  UINT8               Sectors;\r
+  UINT32              BlkSize;\r
+  VIRTIO_BLK_TOPOLOGY Topology;\r
 } VIRTIO_BLK_CONFIG;\r
 #pragma pack()\r
 \r
@@ -44,12 +52,14 @@ typedef struct {
 #define VIRTIO_BLK_F_SEG_MAX  BIT2\r
 #define VIRTIO_BLK_F_GEOMETRY BIT4\r
 #define VIRTIO_BLK_F_RO       BIT5\r
-#define VIRTIO_BLK_F_BLK_SIZE BIT6 // treated as "logical block size" in\r
-                                   // practice; actual host side implementation\r
-                                   // negotiates "optimal" block size\r
-                                   // separately\r
+#define VIRTIO_BLK_F_BLK_SIZE BIT6  // treated as "logical block size" in\r
+                                    // practice; actual host side\r
+                                    // implementation negotiates "optimal"\r
+                                    // block size separately, via\r
+                                    // VIRTIO_BLK_F_TOPOLOGY\r
 #define VIRTIO_BLK_F_SCSI     BIT7\r
-#define VIRTIO_BLK_F_FLUSH    BIT9 // identical to "write cache enabled"\r
+#define VIRTIO_BLK_F_FLUSH    BIT9  // identical to "write cache enabled"\r
+#define VIRTIO_BLK_F_TOPOLOGY BIT10 // information on optimal I/O alignment\r
 \r
 //\r
 // We keep the status byte separate from the rest of the virtio-blk request\r