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