xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/vhost.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker #ifndef _LINUX_VHOST_H
3*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_VHOST_H
4*f80ad8b4SAndroid Build Coastguard Worker /* Userspace interface for in-kernel virtio accelerators. */
5*f80ad8b4SAndroid Build Coastguard Worker 
6*f80ad8b4SAndroid Build Coastguard Worker /* vhost is used to reduce the number of system calls involved in virtio.
7*f80ad8b4SAndroid Build Coastguard Worker  *
8*f80ad8b4SAndroid Build Coastguard Worker  * Existing virtio net code is used in the guest without modification.
9*f80ad8b4SAndroid Build Coastguard Worker  *
10*f80ad8b4SAndroid Build Coastguard Worker  * This header includes interface used by userspace hypervisor for
11*f80ad8b4SAndroid Build Coastguard Worker  * device configuration.
12*f80ad8b4SAndroid Build Coastguard Worker  */
13*f80ad8b4SAndroid Build Coastguard Worker 
14*f80ad8b4SAndroid Build Coastguard Worker #include <linux/vhost_types.h>
15*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
16*f80ad8b4SAndroid Build Coastguard Worker #include <linux/ioctl.h>
17*f80ad8b4SAndroid Build Coastguard Worker 
18*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_FILE_UNBIND -1
19*f80ad8b4SAndroid Build Coastguard Worker 
20*f80ad8b4SAndroid Build Coastguard Worker /* ioctls */
21*f80ad8b4SAndroid Build Coastguard Worker 
22*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VIRTIO 0xAF
23*f80ad8b4SAndroid Build Coastguard Worker 
24*f80ad8b4SAndroid Build Coastguard Worker /* Features bitmask for forward compatibility.  Transport bits are used for
25*f80ad8b4SAndroid Build Coastguard Worker  * vhost specific features. */
26*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_GET_FEATURES	_IOR(VHOST_VIRTIO, 0x00, __u64)
27*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_FEATURES	_IOW(VHOST_VIRTIO, 0x00, __u64)
28*f80ad8b4SAndroid Build Coastguard Worker 
29*f80ad8b4SAndroid Build Coastguard Worker /* Set current process as the (exclusive) owner of this file descriptor.  This
30*f80ad8b4SAndroid Build Coastguard Worker  * must be called before any other vhost command.  Further calls to
31*f80ad8b4SAndroid Build Coastguard Worker  * VHOST_OWNER_SET fail until VHOST_OWNER_RESET is called. */
32*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_OWNER _IO(VHOST_VIRTIO, 0x01)
33*f80ad8b4SAndroid Build Coastguard Worker /* Give up ownership, and reset the device to default values.
34*f80ad8b4SAndroid Build Coastguard Worker  * Allows subsequent call to VHOST_OWNER_SET to succeed. */
35*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_RESET_OWNER _IO(VHOST_VIRTIO, 0x02)
36*f80ad8b4SAndroid Build Coastguard Worker 
37*f80ad8b4SAndroid Build Coastguard Worker /* Set up/modify memory layout */
38*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_MEM_TABLE	_IOW(VHOST_VIRTIO, 0x03, struct vhost_memory)
39*f80ad8b4SAndroid Build Coastguard Worker 
40*f80ad8b4SAndroid Build Coastguard Worker /* Write logging setup. */
41*f80ad8b4SAndroid Build Coastguard Worker /* Memory writes can optionally be logged by setting bit at an offset
42*f80ad8b4SAndroid Build Coastguard Worker  * (calculated from the physical address) from specified log base.
43*f80ad8b4SAndroid Build Coastguard Worker  * The bit is set using an atomic 32 bit operation. */
44*f80ad8b4SAndroid Build Coastguard Worker /* Set base address for logging. */
45*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_LOG_BASE _IOW(VHOST_VIRTIO, 0x04, __u64)
46*f80ad8b4SAndroid Build Coastguard Worker /* Specify an eventfd file descriptor to signal on log write. */
47*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_LOG_FD _IOW(VHOST_VIRTIO, 0x07, int)
48*f80ad8b4SAndroid Build Coastguard Worker /* By default, a device gets one vhost_worker that its virtqueues share. This
49*f80ad8b4SAndroid Build Coastguard Worker  * command allows the owner of the device to create an additional vhost_worker
50*f80ad8b4SAndroid Build Coastguard Worker  * for the device. It can later be bound to 1 or more of its virtqueues using
51*f80ad8b4SAndroid Build Coastguard Worker  * the VHOST_ATTACH_VRING_WORKER command.
52*f80ad8b4SAndroid Build Coastguard Worker  *
53*f80ad8b4SAndroid Build Coastguard Worker  * This must be called after VHOST_SET_OWNER and the caller must be the owner
54*f80ad8b4SAndroid Build Coastguard Worker  * of the device. The new thread will inherit caller's cgroups and namespaces,
55*f80ad8b4SAndroid Build Coastguard Worker  * and will share the caller's memory space. The new thread will also be
56*f80ad8b4SAndroid Build Coastguard Worker  * counted against the caller's RLIMIT_NPROC value.
57*f80ad8b4SAndroid Build Coastguard Worker  *
58*f80ad8b4SAndroid Build Coastguard Worker  * The worker's ID used in other commands will be returned in
59*f80ad8b4SAndroid Build Coastguard Worker  * vhost_worker_state.
60*f80ad8b4SAndroid Build Coastguard Worker  */
61*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_NEW_WORKER _IOR(VHOST_VIRTIO, 0x8, struct vhost_worker_state)
62*f80ad8b4SAndroid Build Coastguard Worker /* Free a worker created with VHOST_NEW_WORKER if it's not attached to any
63*f80ad8b4SAndroid Build Coastguard Worker  * virtqueue. If userspace is not able to call this for workers its created,
64*f80ad8b4SAndroid Build Coastguard Worker  * the kernel will free all the device's workers when the device is closed.
65*f80ad8b4SAndroid Build Coastguard Worker  */
66*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_FREE_WORKER _IOW(VHOST_VIRTIO, 0x9, struct vhost_worker_state)
67*f80ad8b4SAndroid Build Coastguard Worker 
68*f80ad8b4SAndroid Build Coastguard Worker /* Ring setup. */
69*f80ad8b4SAndroid Build Coastguard Worker /* Set number of descriptors in ring. This parameter can not
70*f80ad8b4SAndroid Build Coastguard Worker  * be modified while ring is running (bound to a device). */
71*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_VRING_NUM _IOW(VHOST_VIRTIO, 0x10, struct vhost_vring_state)
72*f80ad8b4SAndroid Build Coastguard Worker /* Set addresses for the ring. */
73*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_VRING_ADDR _IOW(VHOST_VIRTIO, 0x11, struct vhost_vring_addr)
74*f80ad8b4SAndroid Build Coastguard Worker /* Base value where queue looks for available descriptors */
75*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_VRING_BASE _IOW(VHOST_VIRTIO, 0x12, struct vhost_vring_state)
76*f80ad8b4SAndroid Build Coastguard Worker /* Get accessor: reads index, writes value in num */
77*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_GET_VRING_BASE _IOWR(VHOST_VIRTIO, 0x12, struct vhost_vring_state)
78*f80ad8b4SAndroid Build Coastguard Worker 
79*f80ad8b4SAndroid Build Coastguard Worker /* Set the vring byte order in num. Valid values are VHOST_VRING_LITTLE_ENDIAN
80*f80ad8b4SAndroid Build Coastguard Worker  * or VHOST_VRING_BIG_ENDIAN (other values return -EINVAL).
81*f80ad8b4SAndroid Build Coastguard Worker  * The byte order cannot be changed while the device is active: trying to do so
82*f80ad8b4SAndroid Build Coastguard Worker  * returns -EBUSY.
83*f80ad8b4SAndroid Build Coastguard Worker  * This is a legacy only API that is simply ignored when VIRTIO_F_VERSION_1 is
84*f80ad8b4SAndroid Build Coastguard Worker  * set.
85*f80ad8b4SAndroid Build Coastguard Worker  * Not all kernel configurations support this ioctl, but all configurations that
86*f80ad8b4SAndroid Build Coastguard Worker  * support SET also support GET.
87*f80ad8b4SAndroid Build Coastguard Worker  */
88*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VRING_LITTLE_ENDIAN 0
89*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VRING_BIG_ENDIAN 1
90*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_VRING_ENDIAN _IOW(VHOST_VIRTIO, 0x13, struct vhost_vring_state)
91*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_GET_VRING_ENDIAN _IOW(VHOST_VIRTIO, 0x14, struct vhost_vring_state)
92*f80ad8b4SAndroid Build Coastguard Worker /* Attach a vhost_worker created with VHOST_NEW_WORKER to one of the device's
93*f80ad8b4SAndroid Build Coastguard Worker  * virtqueues.
94*f80ad8b4SAndroid Build Coastguard Worker  *
95*f80ad8b4SAndroid Build Coastguard Worker  * This will replace the virtqueue's existing worker. If the replaced worker
96*f80ad8b4SAndroid Build Coastguard Worker  * is no longer attached to any virtqueues, it can be freed with
97*f80ad8b4SAndroid Build Coastguard Worker  * VHOST_FREE_WORKER.
98*f80ad8b4SAndroid Build Coastguard Worker  */
99*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_ATTACH_VRING_WORKER _IOW(VHOST_VIRTIO, 0x15,		\
100*f80ad8b4SAndroid Build Coastguard Worker 				       struct vhost_vring_worker)
101*f80ad8b4SAndroid Build Coastguard Worker /* Return the vring worker's ID */
102*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_GET_VRING_WORKER _IOWR(VHOST_VIRTIO, 0x16,		\
103*f80ad8b4SAndroid Build Coastguard Worker 				     struct vhost_vring_worker)
104*f80ad8b4SAndroid Build Coastguard Worker 
105*f80ad8b4SAndroid Build Coastguard Worker /* The following ioctls use eventfd file descriptors to signal and poll
106*f80ad8b4SAndroid Build Coastguard Worker  * for events. */
107*f80ad8b4SAndroid Build Coastguard Worker 
108*f80ad8b4SAndroid Build Coastguard Worker /* Set eventfd to poll for added buffers */
109*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_VRING_KICK _IOW(VHOST_VIRTIO, 0x20, struct vhost_vring_file)
110*f80ad8b4SAndroid Build Coastguard Worker /* Set eventfd to signal when buffers have beed used */
111*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_VRING_CALL _IOW(VHOST_VIRTIO, 0x21, struct vhost_vring_file)
112*f80ad8b4SAndroid Build Coastguard Worker /* Set eventfd to signal an error */
113*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
114*f80ad8b4SAndroid Build Coastguard Worker /* Set busy loop timeout (in us) */
115*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23,	\
116*f80ad8b4SAndroid Build Coastguard Worker 					 struct vhost_vring_state)
117*f80ad8b4SAndroid Build Coastguard Worker /* Get busy loop timeout (in us) */
118*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24,	\
119*f80ad8b4SAndroid Build Coastguard Worker 					 struct vhost_vring_state)
120*f80ad8b4SAndroid Build Coastguard Worker 
121*f80ad8b4SAndroid Build Coastguard Worker /* Set or get vhost backend capability */
122*f80ad8b4SAndroid Build Coastguard Worker 
123*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
124*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
125*f80ad8b4SAndroid Build Coastguard Worker 
126*f80ad8b4SAndroid Build Coastguard Worker /* VHOST_NET specific defines */
127*f80ad8b4SAndroid Build Coastguard Worker 
128*f80ad8b4SAndroid Build Coastguard Worker /* Attach virtio net ring to a raw socket, or tap device.
129*f80ad8b4SAndroid Build Coastguard Worker  * The socket must be already bound to an ethernet device, this device will be
130*f80ad8b4SAndroid Build Coastguard Worker  * used for transmit.  Pass fd -1 to unbind from the socket and the transmit
131*f80ad8b4SAndroid Build Coastguard Worker  * device.  This can be used to stop the ring (e.g. for migration). */
132*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
133*f80ad8b4SAndroid Build Coastguard Worker 
134*f80ad8b4SAndroid Build Coastguard Worker /* VHOST_SCSI specific defines */
135*f80ad8b4SAndroid Build Coastguard Worker 
136*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SCSI_SET_ENDPOINT _IOW(VHOST_VIRTIO, 0x40, struct vhost_scsi_target)
137*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SCSI_CLEAR_ENDPOINT _IOW(VHOST_VIRTIO, 0x41, struct vhost_scsi_target)
138*f80ad8b4SAndroid Build Coastguard Worker /* Changing this breaks userspace. */
139*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SCSI_GET_ABI_VERSION _IOW(VHOST_VIRTIO, 0x42, int)
140*f80ad8b4SAndroid Build Coastguard Worker /* Set and get the events missed flag */
141*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SCSI_SET_EVENTS_MISSED _IOW(VHOST_VIRTIO, 0x43, __u32)
142*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_SCSI_GET_EVENTS_MISSED _IOW(VHOST_VIRTIO, 0x44, __u32)
143*f80ad8b4SAndroid Build Coastguard Worker 
144*f80ad8b4SAndroid Build Coastguard Worker /* VHOST_VSOCK specific defines */
145*f80ad8b4SAndroid Build Coastguard Worker 
146*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VSOCK_SET_GUEST_CID	_IOW(VHOST_VIRTIO, 0x60, __u64)
147*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VSOCK_SET_RUNNING		_IOW(VHOST_VIRTIO, 0x61, int)
148*f80ad8b4SAndroid Build Coastguard Worker 
149*f80ad8b4SAndroid Build Coastguard Worker /* VHOST_VDPA specific defines */
150*f80ad8b4SAndroid Build Coastguard Worker 
151*f80ad8b4SAndroid Build Coastguard Worker /* Get the device id. The device ids follow the same definition of
152*f80ad8b4SAndroid Build Coastguard Worker  * the device id defined in virtio-spec.
153*f80ad8b4SAndroid Build Coastguard Worker  */
154*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_DEVICE_ID	_IOR(VHOST_VIRTIO, 0x70, __u32)
155*f80ad8b4SAndroid Build Coastguard Worker /* Get and set the status. The status bits follow the same definition
156*f80ad8b4SAndroid Build Coastguard Worker  * of the device status defined in virtio-spec.
157*f80ad8b4SAndroid Build Coastguard Worker  */
158*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_STATUS		_IOR(VHOST_VIRTIO, 0x71, __u8)
159*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_SET_STATUS		_IOW(VHOST_VIRTIO, 0x72, __u8)
160*f80ad8b4SAndroid Build Coastguard Worker /* Get and set the device config. The device config follows the same
161*f80ad8b4SAndroid Build Coastguard Worker  * definition of the device config defined in virtio-spec.
162*f80ad8b4SAndroid Build Coastguard Worker  */
163*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_CONFIG		_IOR(VHOST_VIRTIO, 0x73, \
164*f80ad8b4SAndroid Build Coastguard Worker 					     struct vhost_vdpa_config)
165*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_SET_CONFIG		_IOW(VHOST_VIRTIO, 0x74, \
166*f80ad8b4SAndroid Build Coastguard Worker 					     struct vhost_vdpa_config)
167*f80ad8b4SAndroid Build Coastguard Worker /* Enable/disable the ring. */
168*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_SET_VRING_ENABLE	_IOW(VHOST_VIRTIO, 0x75, \
169*f80ad8b4SAndroid Build Coastguard Worker 					     struct vhost_vring_state)
170*f80ad8b4SAndroid Build Coastguard Worker /* Get the max ring size. */
171*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_VRING_NUM	_IOR(VHOST_VIRTIO, 0x76, __u16)
172*f80ad8b4SAndroid Build Coastguard Worker 
173*f80ad8b4SAndroid Build Coastguard Worker /* Set event fd for config interrupt*/
174*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_SET_CONFIG_CALL	_IOW(VHOST_VIRTIO, 0x77, int)
175*f80ad8b4SAndroid Build Coastguard Worker 
176*f80ad8b4SAndroid Build Coastguard Worker /* Get the valid iova range */
177*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_IOVA_RANGE	_IOR(VHOST_VIRTIO, 0x78, \
178*f80ad8b4SAndroid Build Coastguard Worker 					     struct vhost_vdpa_iova_range)
179*f80ad8b4SAndroid Build Coastguard Worker /* Get the config size */
180*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_CONFIG_SIZE	_IOR(VHOST_VIRTIO, 0x79, __u32)
181*f80ad8b4SAndroid Build Coastguard Worker 
182*f80ad8b4SAndroid Build Coastguard Worker /* Get the number of address spaces. */
183*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_AS_NUM		_IOR(VHOST_VIRTIO, 0x7A, unsigned int)
184*f80ad8b4SAndroid Build Coastguard Worker 
185*f80ad8b4SAndroid Build Coastguard Worker /* Get the group for a virtqueue: read index, write group in num,
186*f80ad8b4SAndroid Build Coastguard Worker  * The virtqueue index is stored in the index field of
187*f80ad8b4SAndroid Build Coastguard Worker  * vhost_vring_state. The group for this specific virtqueue is
188*f80ad8b4SAndroid Build Coastguard Worker  * returned via num field of vhost_vring_state.
189*f80ad8b4SAndroid Build Coastguard Worker  */
190*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_VRING_GROUP	_IOWR(VHOST_VIRTIO, 0x7B,	\
191*f80ad8b4SAndroid Build Coastguard Worker 					      struct vhost_vring_state)
192*f80ad8b4SAndroid Build Coastguard Worker /* Set the ASID for a virtqueue group. The group index is stored in
193*f80ad8b4SAndroid Build Coastguard Worker  * the index field of vhost_vring_state, the ASID associated with this
194*f80ad8b4SAndroid Build Coastguard Worker  * group is stored at num field of vhost_vring_state.
195*f80ad8b4SAndroid Build Coastguard Worker  */
196*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_SET_GROUP_ASID	_IOW(VHOST_VIRTIO, 0x7C, \
197*f80ad8b4SAndroid Build Coastguard Worker 					     struct vhost_vring_state)
198*f80ad8b4SAndroid Build Coastguard Worker 
199*f80ad8b4SAndroid Build Coastguard Worker /* Suspend a device so it does not process virtqueue requests anymore
200*f80ad8b4SAndroid Build Coastguard Worker  *
201*f80ad8b4SAndroid Build Coastguard Worker  * After the return of ioctl the device must preserve all the necessary state
202*f80ad8b4SAndroid Build Coastguard Worker  * (the virtqueue vring base plus the possible device specific states) that is
203*f80ad8b4SAndroid Build Coastguard Worker  * required for restoring in the future. The device must not change its
204*f80ad8b4SAndroid Build Coastguard Worker  * configuration after that point.
205*f80ad8b4SAndroid Build Coastguard Worker  */
206*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_SUSPEND		_IO(VHOST_VIRTIO, 0x7D)
207*f80ad8b4SAndroid Build Coastguard Worker 
208*f80ad8b4SAndroid Build Coastguard Worker /* Resume a device so it can resume processing virtqueue requests
209*f80ad8b4SAndroid Build Coastguard Worker  *
210*f80ad8b4SAndroid Build Coastguard Worker  * After the return of this ioctl the device will have restored all the
211*f80ad8b4SAndroid Build Coastguard Worker  * necessary states and it is fully operational to continue processing the
212*f80ad8b4SAndroid Build Coastguard Worker  * virtqueue descriptors.
213*f80ad8b4SAndroid Build Coastguard Worker  */
214*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_RESUME		_IO(VHOST_VIRTIO, 0x7E)
215*f80ad8b4SAndroid Build Coastguard Worker 
216*f80ad8b4SAndroid Build Coastguard Worker /* Get the group for the descriptor table including driver & device areas
217*f80ad8b4SAndroid Build Coastguard Worker  * of a virtqueue: read index, write group in num.
218*f80ad8b4SAndroid Build Coastguard Worker  * The virtqueue index is stored in the index field of vhost_vring_state.
219*f80ad8b4SAndroid Build Coastguard Worker  * The group ID of the descriptor table for this specific virtqueue
220*f80ad8b4SAndroid Build Coastguard Worker  * is returned via num field of vhost_vring_state.
221*f80ad8b4SAndroid Build Coastguard Worker  */
222*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_VRING_DESC_GROUP	_IOWR(VHOST_VIRTIO, 0x7F,	\
223*f80ad8b4SAndroid Build Coastguard Worker 					      struct vhost_vring_state)
224*f80ad8b4SAndroid Build Coastguard Worker 
225*f80ad8b4SAndroid Build Coastguard Worker 
226*f80ad8b4SAndroid Build Coastguard Worker /* Get the count of all virtqueues */
227*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_VQS_COUNT	_IOR(VHOST_VIRTIO, 0x80, __u32)
228*f80ad8b4SAndroid Build Coastguard Worker 
229*f80ad8b4SAndroid Build Coastguard Worker /* Get the number of virtqueue groups. */
230*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_GROUP_NUM	_IOR(VHOST_VIRTIO, 0x81, __u32)
231*f80ad8b4SAndroid Build Coastguard Worker 
232*f80ad8b4SAndroid Build Coastguard Worker /* Get the queue size of a specific virtqueue.
233*f80ad8b4SAndroid Build Coastguard Worker  * userspace set the vring index in vhost_vring_state.index
234*f80ad8b4SAndroid Build Coastguard Worker  * kernel set the queue size in vhost_vring_state.num
235*f80ad8b4SAndroid Build Coastguard Worker  */
236*f80ad8b4SAndroid Build Coastguard Worker #define VHOST_VDPA_GET_VRING_SIZE	_IOWR(VHOST_VIRTIO, 0x82,	\
237*f80ad8b4SAndroid Build Coastguard Worker 					      struct vhost_vring_state)
238*f80ad8b4SAndroid Build Coastguard Worker #endif
239