diff options
Diffstat (limited to 'include/uapi/linux/virtio_pci.h')
| -rw-r--r-- | include/uapi/linux/virtio_pci.h | 68 | 
1 files changed, 68 insertions, 0 deletions
diff --git a/include/uapi/linux/virtio_pci.h b/include/uapi/linux/virtio_pci.h index 44f4dd2add18..ef3810dee7ef 100644 --- a/include/uapi/linux/virtio_pci.h +++ b/include/uapi/linux/virtio_pci.h @@ -175,6 +175,9 @@ struct virtio_pci_modern_common_cfg {  	__le16 queue_notify_data;	/* read-write */  	__le16 queue_reset;		/* read-write */ + +	__le16 admin_queue_index;	/* read-only */ +	__le16 admin_queue_num;		/* read-only */  };  /* Fields in VIRTIO_PCI_CAP_PCI_CFG: */ @@ -215,7 +218,72 @@ struct virtio_pci_cfg_cap {  #define VIRTIO_PCI_COMMON_Q_USEDHI	52  #define VIRTIO_PCI_COMMON_Q_NDATA	56  #define VIRTIO_PCI_COMMON_Q_RESET	58 +#define VIRTIO_PCI_COMMON_ADM_Q_IDX	60 +#define VIRTIO_PCI_COMMON_ADM_Q_NUM	62  #endif /* VIRTIO_PCI_NO_MODERN */ +/* Admin command status. */ +#define VIRTIO_ADMIN_STATUS_OK		0 + +/* Admin command opcode. */ +#define VIRTIO_ADMIN_CMD_LIST_QUERY	0x0 +#define VIRTIO_ADMIN_CMD_LIST_USE	0x1 + +/* Admin command group type. */ +#define VIRTIO_ADMIN_GROUP_TYPE_SRIOV	0x1 + +/* Transitional device admin command. */ +#define VIRTIO_ADMIN_CMD_LEGACY_COMMON_CFG_WRITE	0x2 +#define VIRTIO_ADMIN_CMD_LEGACY_COMMON_CFG_READ		0x3 +#define VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_WRITE		0x4 +#define VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_READ		0x5 +#define VIRTIO_ADMIN_CMD_LEGACY_NOTIFY_INFO		0x6 + +struct __packed virtio_admin_cmd_hdr { +	__le16 opcode; +	/* +	 * 1 - SR-IOV +	 * 2-65535 - reserved +	 */ +	__le16 group_type; +	/* Unused, reserved for future extensions. */ +	__u8 reserved1[12]; +	__le64 group_member_id; +}; + +struct __packed virtio_admin_cmd_status { +	__le16 status; +	__le16 status_qualifier; +	/* Unused, reserved for future extensions. */ +	__u8 reserved2[4]; +}; + +struct __packed virtio_admin_cmd_legacy_wr_data { +	__u8 offset; /* Starting offset of the register(s) to write. */ +	__u8 reserved[7]; +	__u8 registers[]; +}; + +struct __packed virtio_admin_cmd_legacy_rd_data { +	__u8 offset; /* Starting offset of the register(s) to read. */ +}; + +#define VIRTIO_ADMIN_CMD_NOTIFY_INFO_FLAGS_END 0 +#define VIRTIO_ADMIN_CMD_NOTIFY_INFO_FLAGS_OWNER_DEV 0x1 +#define VIRTIO_ADMIN_CMD_NOTIFY_INFO_FLAGS_OWNER_MEM 0x2 + +#define VIRTIO_ADMIN_CMD_MAX_NOTIFY_INFO 4 + +struct __packed virtio_admin_cmd_notify_info_data { +	__u8 flags; /* 0 = end of list, 1 = owner device, 2 = member device */ +	__u8 bar; /* BAR of the member or the owner device */ +	__u8 padding[6]; +	__le64 offset; /* Offset within bar. */ +}; + +struct virtio_admin_cmd_notify_info_result { +	struct virtio_admin_cmd_notify_info_data entries[VIRTIO_ADMIN_CMD_MAX_NOTIFY_INFO]; +}; +  #endif  |