enable MSI interrupts */
| 217 | |
| 218 | /* enable MSI interrupts */ |
| 219 | static int |
| 220 | vfio_enable_msi(const struct rte_intr_handle *intr_handle) { |
| 221 | int len, ret; |
| 222 | char irq_set_buf[IRQ_SET_BUF_LEN]; |
| 223 | struct vfio_irq_set *irq_set; |
| 224 | int *fd_ptr, vfio_dev_fd; |
| 225 | |
| 226 | len = sizeof(irq_set_buf); |
| 227 | |
| 228 | irq_set = (struct vfio_irq_set *) irq_set_buf; |
| 229 | irq_set->argsz = len; |
| 230 | irq_set->count = 1; |
| 231 | irq_set->flags = VFIO_IRQ_SET_DATA_EVENTFD | VFIO_IRQ_SET_ACTION_TRIGGER; |
| 232 | irq_set->index = VFIO_PCI_MSI_IRQ_INDEX; |
| 233 | irq_set->start = 0; |
| 234 | fd_ptr = (int *) &irq_set->data; |
| 235 | *fd_ptr = rte_intr_fd_get(intr_handle); |
| 236 | |
| 237 | vfio_dev_fd = rte_intr_dev_fd_get(intr_handle); |
| 238 | ret = ioctl(vfio_dev_fd, VFIO_DEVICE_SET_IRQS, irq_set); |
| 239 | |
| 240 | if (ret) { |
| 241 | RTE_LOG(ERR, EAL, "Error enabling MSI interrupts for fd %d\n", |
| 242 | rte_intr_fd_get(intr_handle)); |
| 243 | return -1; |
| 244 | } |
| 245 | return 0; |
| 246 | } |
| 247 | |
| 248 | /* disable MSI interrupts */ |
| 249 | static int |
no test coverage detected