diff options
Diffstat (limited to 'include/uapi/linux/virtio_pci.h')
-rw-r--r-- | include/uapi/linux/virtio_pci.h | 93 |
1 files changed, 92 insertions, 1 deletions
diff --git a/include/uapi/linux/virtio_pci.h b/include/uapi/linux/virtio_pci.h index 35b552c7f330..75301468359f 100644 --- a/include/uapi/linux/virtio_pci.h +++ b/include/uapi/linux/virtio_pci.h | |||
@@ -39,7 +39,7 @@ | |||
39 | #ifndef _LINUX_VIRTIO_PCI_H | 39 | #ifndef _LINUX_VIRTIO_PCI_H |
40 | #define _LINUX_VIRTIO_PCI_H | 40 | #define _LINUX_VIRTIO_PCI_H |
41 | 41 | ||
42 | #include <linux/virtio_config.h> | 42 | #include <linux/types.h> |
43 | 43 | ||
44 | #ifndef VIRTIO_PCI_NO_LEGACY | 44 | #ifndef VIRTIO_PCI_NO_LEGACY |
45 | 45 | ||
@@ -99,4 +99,95 @@ | |||
99 | /* Vector value used to disable MSI for queue */ | 99 | /* Vector value used to disable MSI for queue */ |
100 | #define VIRTIO_MSI_NO_VECTOR 0xffff | 100 | #define VIRTIO_MSI_NO_VECTOR 0xffff |
101 | 101 | ||
102 | #ifndef VIRTIO_PCI_NO_MODERN | ||
103 | |||
104 | /* IDs for different capabilities. Must all exist. */ | ||
105 | |||
106 | /* Common configuration */ | ||
107 | #define VIRTIO_PCI_CAP_COMMON_CFG 1 | ||
108 | /* Notifications */ | ||
109 | #define VIRTIO_PCI_CAP_NOTIFY_CFG 2 | ||
110 | /* ISR access */ | ||
111 | #define VIRTIO_PCI_CAP_ISR_CFG 3 | ||
112 | /* Device specific configuration */ | ||
113 | #define VIRTIO_PCI_CAP_DEVICE_CFG 4 | ||
114 | /* PCI configuration access */ | ||
115 | #define VIRTIO_PCI_CAP_PCI_CFG 5 | ||
116 | |||
117 | /* This is the PCI capability header: */ | ||
118 | struct virtio_pci_cap { | ||
119 | __u8 cap_vndr; /* Generic PCI field: PCI_CAP_ID_VNDR */ | ||
120 | __u8 cap_next; /* Generic PCI field: next ptr. */ | ||
121 | __u8 cap_len; /* Generic PCI field: capability length */ | ||
122 | __u8 cfg_type; /* Identifies the structure. */ | ||
123 | __u8 bar; /* Where to find it. */ | ||
124 | __u8 padding[3]; /* Pad to full dword. */ | ||
125 | __le32 offset; /* Offset within bar. */ | ||
126 | __le32 length; /* Length of the structure, in bytes. */ | ||
127 | }; | ||
128 | |||
129 | struct virtio_pci_notify_cap { | ||
130 | struct virtio_pci_cap cap; | ||
131 | __le32 notify_off_multiplier; /* Multiplier for queue_notify_off. */ | ||
132 | }; | ||
133 | |||
134 | /* Fields in VIRTIO_PCI_CAP_COMMON_CFG: */ | ||
135 | struct virtio_pci_common_cfg { | ||
136 | /* About the whole device. */ | ||
137 | __le32 device_feature_select; /* read-write */ | ||
138 | __le32 device_feature; /* read-only */ | ||
139 | __le32 guest_feature_select; /* read-write */ | ||
140 | __le32 guest_feature; /* read-write */ | ||
141 | __le16 msix_config; /* read-write */ | ||
142 | __le16 num_queues; /* read-only */ | ||
143 | __u8 device_status; /* read-write */ | ||
144 | __u8 config_generation; /* read-only */ | ||
145 | |||
146 | /* About a specific virtqueue. */ | ||
147 | __le16 queue_select; /* read-write */ | ||
148 | __le16 queue_size; /* read-write, power of 2. */ | ||
149 | __le16 queue_msix_vector; /* read-write */ | ||
150 | __le16 queue_enable; /* read-write */ | ||
151 | __le16 queue_notify_off; /* read-only */ | ||
152 | __le32 queue_desc_lo; /* read-write */ | ||
153 | __le32 queue_desc_hi; /* read-write */ | ||
154 | __le32 queue_avail_lo; /* read-write */ | ||
155 | __le32 queue_avail_hi; /* read-write */ | ||
156 | __le32 queue_used_lo; /* read-write */ | ||
157 | __le32 queue_used_hi; /* read-write */ | ||
158 | }; | ||
159 | |||
160 | /* Macro versions of offsets for the Old Timers! */ | ||
161 | #define VIRTIO_PCI_CAP_VNDR 0 | ||
162 | #define VIRTIO_PCI_CAP_NEXT 1 | ||
163 | #define VIRTIO_PCI_CAP_LEN 2 | ||
164 | #define VIRTIO_PCI_CAP_CFG_TYPE 3 | ||
165 | #define VIRTIO_PCI_CAP_BAR 4 | ||
166 | #define VIRTIO_PCI_CAP_OFFSET 8 | ||
167 | #define VIRTIO_PCI_CAP_LENGTH 12 | ||
168 | |||
169 | #define VIRTIO_PCI_NOTIFY_CAP_MULT 16 | ||
170 | |||
171 | #define VIRTIO_PCI_COMMON_DFSELECT 0 | ||
172 | #define VIRTIO_PCI_COMMON_DF 4 | ||
173 | #define VIRTIO_PCI_COMMON_GFSELECT 8 | ||
174 | #define VIRTIO_PCI_COMMON_GF 12 | ||
175 | #define VIRTIO_PCI_COMMON_MSIX 16 | ||
176 | #define VIRTIO_PCI_COMMON_NUMQ 18 | ||
177 | #define VIRTIO_PCI_COMMON_STATUS 20 | ||
178 | #define VIRTIO_PCI_COMMON_CFGGENERATION 21 | ||
179 | #define VIRTIO_PCI_COMMON_Q_SELECT 22 | ||
180 | #define VIRTIO_PCI_COMMON_Q_SIZE 24 | ||
181 | #define VIRTIO_PCI_COMMON_Q_MSIX 26 | ||
182 | #define VIRTIO_PCI_COMMON_Q_ENABLE 28 | ||
183 | #define VIRTIO_PCI_COMMON_Q_NOFF 30 | ||
184 | #define VIRTIO_PCI_COMMON_Q_DESCLO 32 | ||
185 | #define VIRTIO_PCI_COMMON_Q_DESCHI 36 | ||
186 | #define VIRTIO_PCI_COMMON_Q_AVAILLO 40 | ||
187 | #define VIRTIO_PCI_COMMON_Q_AVAILHI 44 | ||
188 | #define VIRTIO_PCI_COMMON_Q_USEDLO 48 | ||
189 | #define VIRTIO_PCI_COMMON_Q_USEDHI 52 | ||
190 | |||
191 | #endif /* VIRTIO_PCI_NO_MODERN */ | ||
192 | |||
102 | #endif | 193 | #endif |