xref: /dpdk/examples/vdpa/vdpa_blk_compact.h (revision d5499149983b62d114dcc8522cfb4e93a9b71ce8)
1*d5499149SAndy Pei /* SPDX-License-Identifier: BSD-3-Clause
2*d5499149SAndy Pei  * Copyright(c) 2022 Intel Corporation
3*d5499149SAndy Pei  */
4*d5499149SAndy Pei 
5*d5499149SAndy Pei #ifndef _VDPA_BLK_COMPACT_H_
6*d5499149SAndy Pei #define _VDPA_BLK_COMPACT_H_
7*d5499149SAndy Pei 
8*d5499149SAndy Pei #include <rte_vhost.h>
9*d5499149SAndy Pei 
10*d5499149SAndy Pei /* Feature bits */
11*d5499149SAndy Pei #define VIRTIO_BLK_F_SIZE_MAX     1    /* Indicates maximum segment size */
12*d5499149SAndy Pei #define VIRTIO_BLK_F_SEG_MAX      2    /* Indicates maximum # of segments */
13*d5499149SAndy Pei #define VIRTIO_BLK_F_GEOMETRY     4    /* Legacy geometry available  */
14*d5499149SAndy Pei #define VIRTIO_BLK_F_BLK_SIZE     6    /* Block size of disk is available */
15*d5499149SAndy Pei #define VIRTIO_BLK_F_TOPOLOGY     10   /* Topology information is available */
16*d5499149SAndy Pei #define VIRTIO_BLK_F_MQ           12   /* support more than one vq */
17*d5499149SAndy Pei 
18*d5499149SAndy Pei /* Legacy feature bits */
19*d5499149SAndy Pei #define VIRTIO_BLK_F_BARRIER      0    /* Does host support barriers? */
20*d5499149SAndy Pei #define VIRTIO_BLK_F_SCSI         7    /* Supports scsi command passthru */
21*d5499149SAndy Pei #define VIRTIO_BLK_F_CONFIG_WCE   11   /* Writeback mode available in config */
22*d5499149SAndy Pei 
23*d5499149SAndy Pei #define VHOST_BLK_FEATURES_BASE ((1ULL << VHOST_F_LOG_ALL) | \
24*d5499149SAndy Pei 	(1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | \
25*d5499149SAndy Pei 	(1ULL << VIRTIO_RING_F_INDIRECT_DESC) | \
26*d5499149SAndy Pei 	(1ULL << VIRTIO_RING_F_EVENT_IDX) | \
27*d5499149SAndy Pei 	(1ULL << VHOST_USER_F_PROTOCOL_FEATURES) | \
28*d5499149SAndy Pei 	(1ULL << VIRTIO_F_VERSION_1))
29*d5499149SAndy Pei 
30*d5499149SAndy Pei #define VHOST_BLK_DISABLED_FEATURES_BASE ((1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | \
31*d5499149SAndy Pei 	(1ULL << VIRTIO_RING_F_EVENT_IDX))
32*d5499149SAndy Pei 
33*d5499149SAndy Pei #define VHOST_BLK_FEATURES (VHOST_BLK_FEATURES_BASE | \
34*d5499149SAndy Pei 	(1ULL << VIRTIO_BLK_F_SIZE_MAX) | (1ULL << VIRTIO_BLK_F_SEG_MAX) | \
35*d5499149SAndy Pei 	(1ULL << VIRTIO_BLK_F_GEOMETRY) | (1ULL << VIRTIO_BLK_F_BLK_SIZE) | \
36*d5499149SAndy Pei 	(1ULL << VIRTIO_BLK_F_TOPOLOGY) | (1ULL << VIRTIO_BLK_F_BARRIER)  | \
37*d5499149SAndy Pei 	(1ULL << VIRTIO_BLK_F_SCSI)     | (1ULL << VIRTIO_BLK_F_CONFIG_WCE) | \
38*d5499149SAndy Pei 	(1ULL << VIRTIO_BLK_F_MQ))
39*d5499149SAndy Pei 
40*d5499149SAndy Pei /* Not supported features */
41*d5499149SAndy Pei #define VHOST_BLK_DISABLED_FEATURES (VHOST_BLK_DISABLED_FEATURES_BASE | \
42*d5499149SAndy Pei 	(1ULL << VIRTIO_BLK_F_GEOMETRY) | (1ULL << VIRTIO_BLK_F_BARRIER) | \
43*d5499149SAndy Pei 	(1ULL << VIRTIO_BLK_F_SCSI)  | (1ULL << VIRTIO_BLK_F_CONFIG_WCE))
44*d5499149SAndy Pei 
45*d5499149SAndy Pei /* Vhost-blk support protocol features */
46*d5499149SAndy Pei #define VHOST_BLK_PROTOCOL_FEATURES \
47*d5499149SAndy Pei 	((1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD) | \
48*d5499149SAndy Pei 	(1ULL << VHOST_USER_PROTOCOL_F_CONFIG))
49*d5499149SAndy Pei 
50*d5499149SAndy Pei #endif /* _VDPA_BLK_COMPACT_H_ */
51