XenevaOS
Loading...
Searching...
No Matches
virtio.h
Go to the documentation of this file.
1
30#ifndef __VIRTIO_H__
31#define __VIRTIO_H__
32
33#include <stdint.h>
34
35#define VIRTIO_MAGIC_VALUE 0x74726976
36#define VIRTIO_VENDOR_ID_QEMU 0x554D4551
37
38
39#define VIRTIO_GPU_FLAG_FENCE (1<<0)
40#define VIRTIO_GPU_FLAG_INFO_RING_IDX (1<<1)
41
42#pragma pack(push,1)
50#pragma pack(pop)
51
52#pragma pack(push,1)
60#pragma pack(pop)
61
62#pragma pack(push,1)
73#pragma pack(pop)
74
75
79
80#pragma pack(push,1)
87#pragma pack(pop)
88
89#pragma pack(push,1)
97#pragma pack(pop)
98
99
100#pragma pack(push,1)
107#pragma pack(pop)
108
109
110#pragma pack(push,1)
117#pragma pack(pop)
118
119#pragma pack(push,1)
125#pragma pack(pop)
126
127#pragma pack(push,1)
163#pragma pack(pop)
164
165
166#pragma pack(push,1)
185#pragma pack(pop)
186
187#pragma pack(push,1)
198#pragma pack(pop)
199
200
201#pragma pack(push,1)
202struct VirtioBuffer {
207};
208
209struct VirtioAvail {
211 volatile uint16_t index;
212 uint16_t ring[64];
214};
215
216struct VirtioRing {
219};
220
221struct VirtioUsed {
223 volatile uint16_t index;
224 struct VirtioRing ring[64];
226};
227
228struct VirtioQueue {
229 struct VirtioBuffer buffers[64];
230 struct VirtioAvail available;
231 struct VirtioUsed used;
232};
233#pragma pack(pop)
234
235
236#define VIRTIO_PCI_CAP_ID 0x09
237#define VIRTIO_PCI_CAP_COMMON_CFG 1
238#define VIRTIO_PCI_CAP_DEVICE_CFG 4
239
240#define VIRTIO_STATUS_ACKNOWLEDGE 1
241#define VIRTIO_STATUS_DRIVER 2
242#define VIRTIO_STATUS_DRIVER_OK 4
243#define VIRTIO_STATUS_FEATURES_OK 8
244
246 /* 2D commands */
261
262 /*3D commands */
273
274 /* cursor commands */
277
278 /* success responses */
286
287 /* error responses */
294};
295#endif
struct _common_config_ virtio_common_config
virtio_gpu_ctrl_type
Definition virtio.h:245
@ VIRTIO_GPU_CMD_GET_CAPSET_INFO
Definition virtio.h:255
@ VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER
Definition virtio.h:293
@ VIRTIO_GPU_RESP_OK_EDID
Definition virtio.h:283
@ VIRTIO_GPU_RESP_ERR_INVALID_CONTEXT_ID
Definition virtio.h:292
@ VIRTIO_GPU_CMD_MOVE_CURSOR
Definition virtio.h:276
@ VIRTIO_GPU_RESP_OK_CAPSET_INFO
Definition virtio.h:281
@ VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID
Definition virtio.h:291
@ VIRTIO_GPU_CMD_CTX_DESTROY
Definition virtio.h:264
@ VIRTIO_GPU_RESP_ERR_OUT_OF_MEMORY
Definition virtio.h:289
@ VIRTIO_GPU_CMD_TRANSFER_TO_HOST2D
Definition virtio.h:252
@ VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID
Definition virtio.h:258
@ VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB
Definition virtio.h:259
@ VIRTIO_GPU_CMD_CTX_DETACH_RESOURCE
Definition virtio.h:266
@ VIRTIO_GPU_CMD_SUBMIT_3D
Definition virtio.h:270
@ VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB
Definition virtio.h:272
@ VIRTIO_GPU_CMD_GET_EDID
Definition virtio.h:257
@ VIRTIO_GPU_CMD_TRANSFER_TO_HOST_3D
Definition virtio.h:268
@ VIRTIO_GPU_RESP_OK_CAPSET
Definition virtio.h:282
@ VIRTIO_GPU_RESP_OK_MAP_INFO
Definition virtio.h:285
@ VIRTIO_GPU_CMD_CTX_CREATE
Definition virtio.h:263
@ VIRTIO_GPU_CMD_RESOURCE_CREATE_2D
Definition virtio.h:248
@ VIRTIO_GPU_CMD_RESOURCE_UNREF
Definition virtio.h:249
@ VIRTIO_GPU_RESP_ERR_UNSPEC
Definition virtio.h:288
@ VIRTIO_GPU_CMD_SET_SCANOUT
Definition virtio.h:250
@ VIRTIO_GPU_CMD_RESOURCE_ATTACH_BACKING
Definition virtio.h:253
@ VIRTIO_GPU_RESP_OK_DISPLAY_INFO
Definition virtio.h:280
@ VIRTIO_GPU_CMD_RESOURCE_FLUSH
Definition virtio.h:251
@ VIRTIO_GPU_CMD_GET_CAPSET
Definition virtio.h:256
@ VIRTIO_GPU_CMD_GET_DISPLAY_INFO
Definition virtio.h:247
@ VIRTIO_GPU_RESP_OK_NODATA
Definition virtio.h:279
@ VIRTIO_GPU_CMD_SET_SCANOUT_BLOB
Definition virtio.h:260
@ VIRTIO_GPU_CMD_TRANSFER_FROM_HOST_3D
Definition virtio.h:269
@ VIRTIO_GPU_CMD_RESOURCE_CREATE_3D
Definition virtio.h:267
@ VIRTIO_GPU_CMD_CTX_ATTACH_RESOURCE
Definition virtio.h:265
@ VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID
Definition virtio.h:290
@ VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING
Definition virtio.h:254
@ VIRTIO_GPU_RESP_OK_RESOURCE_UUID
Definition virtio.h:284
@ VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB
Definition virtio.h:271
@ VIRTIO_GPU_CMD_UPDATE_CURSOR
Definition virtio.h:275
struct _virtio_mmio_ VirtioMMIOHeader
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
Definition virtio.h:80
uint16_t flags
Definition virtio.h:81
volatile uint16_t index
Definition virtio.h:82
uint16_t int_index
Definition virtio.h:84
uint16_t ring[64]
Definition virtio.h:83
Definition virtio.h:73
uint16_t Flags
Definition virtio.h:76
uint16_t Next
Definition virtio.h:77
uint32_t Length
Definition virtio.h:75
uint64_t Addr
Definition virtio.h:74
Definition virtio.h:99
struct VirtioAvail available
Definition virtio.h:101
struct VirtioUsed used
Definition virtio.h:102
struct VirtioBuffer buffers[64]
Definition virtio.h:100
Definition virtio.h:87
uint32_t index
Definition virtio.h:88
uint32_t length
Definition virtio.h:89
Definition virtio.h:92
uint16_t int_index
Definition virtio.h:96
volatile uint16_t index
Definition virtio.h:94
uint16_t flags
Definition virtio.h:93
struct VirtioRing ring[64]
Definition virtio.h:95
Definition virtio.h:167
volatile uint32_t guest_feature_select
Definition virtio.h:170
volatile uint8_t config_generation
Definition virtio.h:175
volatile uint16_t queue_enable
Definition virtio.h:179
volatile uint64_t queue_desc
Definition virtio.h:181
volatile uint32_t guest_feature
Definition virtio.h:171
volatile uint16_t queues
Definition virtio.h:173
volatile uint64_t queue_avail
Definition virtio.h:182
volatile uint16_t queue_notify_off
Definition virtio.h:180
volatile uint16_t msix
Definition virtio.h:172
volatile uint32_t dev_feature
Definition virtio.h:169
volatile uint16_t queue_msix_vector
Definition virtio.h:178
volatile uint16_t queue_select
Definition virtio.h:176
volatile uint8_t device_status
Definition virtio.h:174
volatile uint32_t dev_feature_select
Definition virtio.h:168
volatile uint64_t queue_used
Definition virtio.h:183
volatile uint16_t queue_size
Definition virtio.h:177
Definition virtio.h:128
volatile uint32_t DeviceFeatures
Definition virtio.h:133
volatile uint32_t reserved_04C
Definition virtio.h:148
volatile uint32_t InterruptStatus
Definition virtio.h:149
volatile uint32_t QueueSel
Definition virtio.h:139
volatile uint8_t DeviceConfig[0x200 - 0x80]
Definition virtio.h:161
volatile uint32_t QueueDriverLow
Definition virtio.h:155
volatile uint32_t reserved_03C
Definition virtio.h:144
volatile uint32_t DriverFeaturesSel
Definition virtio.h:138
volatile uint32_t QueuePFN
Definition virtio.h:143
volatile uint32_t QueueAlign
Definition virtio.h:142
volatile uint32_t reserved_044
Definition virtio.h:146
volatile uint32_t VendorID
Definition virtio.h:132
volatile uint32_t Status
Definition virtio.h:151
volatile uint32_t ConfigGeneration
Definition virtio.h:159
volatile uint32_t reserved_01C
Definition virtio.h:136
volatile uint32_t QueueNotify
Definition virtio.h:147
volatile uint32_t QueueDriverHigh
Definition virtio.h:156
volatile uint32_t MagicValue
Definition virtio.h:129
volatile uint32_t InterruptACK
Definition virtio.h:150
volatile uint32_t DriverFeatures
Definition virtio.h:137
volatile uint32_t reserved_05C
Definition virtio.h:152
volatile uint32_t QueueNum
Definition virtio.h:141
volatile uint32_t QueueDeviceHigh
Definition virtio.h:158
volatile uint32_t reserved_07C
Definition virtio.h:160
volatile uint32_t QueueDeviceLow
Definition virtio.h:157
volatile uint32_t QueueNumMax
Definition virtio.h:140
volatile uint32_t Version
Definition virtio.h:130
volatile uint32_t reserved_018
Definition virtio.h:135
volatile uint32_t DeviceFeaturesSel
Definition virtio.h:134
volatile uint32_t QueueReady
Definition virtio.h:145
volatile uint32_t QueueDescHigh
Definition virtio.h:154
volatile uint32_t QueueDescLow
Definition virtio.h:153
volatile uint32_t DeviceID
Definition virtio.h:131
Definition virtio.h:111
uint32_t events_read
Definition virtio.h:112
uint32_t num_capsets
Definition virtio.h:115
uint32_t num_scanouts
Definition virtio.h:114
uint32_t events_clear
Definition virtio.h:113
Definition virtio.h:43
uint32_t type
Definition virtio.h:44
uint64_t fence_id
Definition virtio.h:46
uint32_t padding
Definition virtio.h:48
uint32_t ctx_id
Definition virtio.h:47
uint32_t flags
Definition virtio.h:45
Definition virtio.h:120
uint32_t padding
Definition virtio.h:123
uint32_t length
Definition virtio.h:122
uint64_t addr
Definition virtio.h:121
Definition virtio.h:76
uint32_t x
Definition virtio.h:77
uint32_t width
Definition virtio.h:77
uint32_t height
Definition virtio.h:77
uint32_t y
Definition virtio.h:77
uint32_t padding
Definition virtio.h:70
uint32_t nr_entries
Definition virtio.h:66
uint32_t length
Definition virtio.h:69
uint32_t resource_id
Definition virtio.h:65
struct virtio_gpu_resource_attach_backing::@461 entries[1]
uint64_t addr
Definition virtio.h:68
struct virtio_gpu_ctrl_hdr hdr
Definition virtio.h:64
Definition virtio.h:53
uint32_t height
Definition virtio.h:58
uint32_t format
Definition virtio.h:56
uint32_t resource_id
Definition virtio.h:55
uint32_t width
Definition virtio.h:57
struct virtio_gpu_ctrl_hdr hdr
Definition virtio.h:54
Definition virtio.h:101
struct virtio_gpu_rect rect
Definition virtio.h:103
uint32_t resource_id
Definition virtio.h:104
uint32_t padding
Definition virtio.h:105
struct virtio_gpu_ctrl_hdr hdr
Definition virtio.h:102
Definition virtio.h:81
uint32_t resource_id
Definition virtio.h:85
struct virtio_gpu_rect rect
Definition virtio.h:83
struct virtio_gpu_ctrl_hdr hdr
Definition virtio.h:82
uint32_t scanout_id
Definition virtio.h:84
Definition virtio.h:90
uint32_t resource_id
Definition virtio.h:94
struct virtio_gpu_rect rect
Definition virtio.h:92
uint64_t offset
Definition virtio.h:93
uint32_t padding
Definition virtio.h:95
struct virtio_gpu_ctrl_hdr hdr
Definition virtio.h:91
Definition virtio.h:188
uint8_t bar
Definition virtio.h:193
uint32_t offset
Definition virtio.h:195
uint8_t cap_len
Definition virtio.h:191
uint32_t length
Definition virtio.h:196
uint8_t cap_vndr
Definition virtio.h:189
uint8_t cap_next
Definition virtio.h:190
uint8_t cfg_type
Definition virtio.h:192