xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/virtio_blk.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _LINUX_VIRTIO_BLK_H
8*8d67ca89SAndroid Build Coastguard Worker #define _LINUX_VIRTIO_BLK_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_ids.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_config.h>
12*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_types.h>
13*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_SIZE_MAX 1
14*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_SEG_MAX 2
15*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_GEOMETRY 4
16*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_RO 5
17*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_BLK_SIZE 6
18*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_TOPOLOGY 10
19*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_MQ 12
20*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_DISCARD 13
21*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_WRITE_ZEROES 14
22*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_SECURE_ERASE 16
23*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_ZONED 17
24*8d67ca89SAndroid Build Coastguard Worker #ifndef VIRTIO_BLK_NO_LEGACY
25*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_BARRIER 0
26*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_SCSI 7
27*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_FLUSH 9
28*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_CONFIG_WCE 11
29*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_F_WCE VIRTIO_BLK_F_FLUSH
30*8d67ca89SAndroid Build Coastguard Worker #endif
31*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ID_BYTES 20
32*8d67ca89SAndroid Build Coastguard Worker struct virtio_blk_config {
33*8d67ca89SAndroid Build Coastguard Worker   __virtio64 capacity;
34*8d67ca89SAndroid Build Coastguard Worker   __virtio32 size_max;
35*8d67ca89SAndroid Build Coastguard Worker   __virtio32 seg_max;
36*8d67ca89SAndroid Build Coastguard Worker   struct virtio_blk_geometry {
37*8d67ca89SAndroid Build Coastguard Worker     __virtio16 cylinders;
38*8d67ca89SAndroid Build Coastguard Worker     __u8 heads;
39*8d67ca89SAndroid Build Coastguard Worker     __u8 sectors;
40*8d67ca89SAndroid Build Coastguard Worker   } geometry;
41*8d67ca89SAndroid Build Coastguard Worker   __virtio32 blk_size;
42*8d67ca89SAndroid Build Coastguard Worker   __u8 physical_block_exp;
43*8d67ca89SAndroid Build Coastguard Worker   __u8 alignment_offset;
44*8d67ca89SAndroid Build Coastguard Worker   __virtio16 min_io_size;
45*8d67ca89SAndroid Build Coastguard Worker   __virtio32 opt_io_size;
46*8d67ca89SAndroid Build Coastguard Worker   __u8 wce;
47*8d67ca89SAndroid Build Coastguard Worker   __u8 unused;
48*8d67ca89SAndroid Build Coastguard Worker   __virtio16 num_queues;
49*8d67ca89SAndroid Build Coastguard Worker   __virtio32 max_discard_sectors;
50*8d67ca89SAndroid Build Coastguard Worker   __virtio32 max_discard_seg;
51*8d67ca89SAndroid Build Coastguard Worker   __virtio32 discard_sector_alignment;
52*8d67ca89SAndroid Build Coastguard Worker   __virtio32 max_write_zeroes_sectors;
53*8d67ca89SAndroid Build Coastguard Worker   __virtio32 max_write_zeroes_seg;
54*8d67ca89SAndroid Build Coastguard Worker   __u8 write_zeroes_may_unmap;
55*8d67ca89SAndroid Build Coastguard Worker   __u8 unused1[3];
56*8d67ca89SAndroid Build Coastguard Worker   __virtio32 max_secure_erase_sectors;
57*8d67ca89SAndroid Build Coastguard Worker   __virtio32 max_secure_erase_seg;
58*8d67ca89SAndroid Build Coastguard Worker   __virtio32 secure_erase_sector_alignment;
59*8d67ca89SAndroid Build Coastguard Worker   struct virtio_blk_zoned_characteristics {
60*8d67ca89SAndroid Build Coastguard Worker     __virtio32 zone_sectors;
61*8d67ca89SAndroid Build Coastguard Worker     __virtio32 max_open_zones;
62*8d67ca89SAndroid Build Coastguard Worker     __virtio32 max_active_zones;
63*8d67ca89SAndroid Build Coastguard Worker     __virtio32 max_append_sectors;
64*8d67ca89SAndroid Build Coastguard Worker     __virtio32 write_granularity;
65*8d67ca89SAndroid Build Coastguard Worker     __u8 model;
66*8d67ca89SAndroid Build Coastguard Worker     __u8 unused2[3];
67*8d67ca89SAndroid Build Coastguard Worker   } zoned;
68*8d67ca89SAndroid Build Coastguard Worker } __attribute__((packed));
69*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_IN 0
70*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_OUT 1
71*8d67ca89SAndroid Build Coastguard Worker #ifndef VIRTIO_BLK_NO_LEGACY
72*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_SCSI_CMD 2
73*8d67ca89SAndroid Build Coastguard Worker #endif
74*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_FLUSH 4
75*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_GET_ID 8
76*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_DISCARD 11
77*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_WRITE_ZEROES 13
78*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_SECURE_ERASE 14
79*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_ZONE_APPEND 15
80*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_ZONE_REPORT 16
81*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_ZONE_OPEN 18
82*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_ZONE_CLOSE 20
83*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_ZONE_FINISH 22
84*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_ZONE_RESET 24
85*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_ZONE_RESET_ALL 26
86*8d67ca89SAndroid Build Coastguard Worker #ifndef VIRTIO_BLK_NO_LEGACY
87*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_T_BARRIER 0x80000000
88*8d67ca89SAndroid Build Coastguard Worker #endif
89*8d67ca89SAndroid Build Coastguard Worker struct virtio_blk_outhdr {
90*8d67ca89SAndroid Build Coastguard Worker   __virtio32 type;
91*8d67ca89SAndroid Build Coastguard Worker   __virtio32 ioprio;
92*8d67ca89SAndroid Build Coastguard Worker   __virtio64 sector;
93*8d67ca89SAndroid Build Coastguard Worker };
94*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_Z_NONE 0
95*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_Z_HM 1
96*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_Z_HA 2
97*8d67ca89SAndroid Build Coastguard Worker struct virtio_blk_zone_descriptor {
98*8d67ca89SAndroid Build Coastguard Worker   __virtio64 z_cap;
99*8d67ca89SAndroid Build Coastguard Worker   __virtio64 z_start;
100*8d67ca89SAndroid Build Coastguard Worker   __virtio64 z_wp;
101*8d67ca89SAndroid Build Coastguard Worker   __u8 z_type;
102*8d67ca89SAndroid Build Coastguard Worker   __u8 z_state;
103*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[38];
104*8d67ca89SAndroid Build Coastguard Worker };
105*8d67ca89SAndroid Build Coastguard Worker struct virtio_blk_zone_report {
106*8d67ca89SAndroid Build Coastguard Worker   __virtio64 nr_zones;
107*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[56];
108*8d67ca89SAndroid Build Coastguard Worker   struct virtio_blk_zone_descriptor zones[];
109*8d67ca89SAndroid Build Coastguard Worker };
110*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZT_CONV 1
111*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZT_SWR 2
112*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZT_SWP 3
113*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZS_NOT_WP 0
114*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZS_EMPTY 1
115*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZS_IOPEN 2
116*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZS_EOPEN 3
117*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZS_CLOSED 4
118*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZS_RDONLY 13
119*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZS_FULL 14
120*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_ZS_OFFLINE 15
121*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_WRITE_ZEROES_FLAG_UNMAP 0x00000001
122*8d67ca89SAndroid Build Coastguard Worker struct virtio_blk_discard_write_zeroes {
123*8d67ca89SAndroid Build Coastguard Worker   __le64 sector;
124*8d67ca89SAndroid Build Coastguard Worker   __le32 num_sectors;
125*8d67ca89SAndroid Build Coastguard Worker   __le32 flags;
126*8d67ca89SAndroid Build Coastguard Worker };
127*8d67ca89SAndroid Build Coastguard Worker #ifndef VIRTIO_BLK_NO_LEGACY
128*8d67ca89SAndroid Build Coastguard Worker struct virtio_scsi_inhdr {
129*8d67ca89SAndroid Build Coastguard Worker   __virtio32 errors;
130*8d67ca89SAndroid Build Coastguard Worker   __virtio32 data_len;
131*8d67ca89SAndroid Build Coastguard Worker   __virtio32 sense_len;
132*8d67ca89SAndroid Build Coastguard Worker   __virtio32 residual;
133*8d67ca89SAndroid Build Coastguard Worker };
134*8d67ca89SAndroid Build Coastguard Worker #endif
135*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_S_OK 0
136*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_S_IOERR 1
137*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_S_UNSUPP 2
138*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_S_ZONE_INVALID_CMD 3
139*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_S_ZONE_UNALIGNED_WP 4
140*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_S_ZONE_OPEN_RESOURCE 5
141*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_BLK_S_ZONE_ACTIVE_RESOURCE 6
142*8d67ca89SAndroid Build Coastguard Worker #endif
143