enable req notifier */
| 340 | #ifdef HAVE_VFIO_DEV_REQ_INTERFACE |
| 341 | /* enable req notifier */ |
| 342 | static int |
| 343 | vfio_enable_req(const struct rte_intr_handle *intr_handle) |
| 344 | { |
| 345 | int len, ret; |
| 346 | char irq_set_buf[IRQ_SET_BUF_LEN]; |
| 347 | struct vfio_irq_set *irq_set; |
| 348 | int *fd_ptr, vfio_dev_fd; |
| 349 | |
| 350 | len = sizeof(irq_set_buf); |
| 351 | |
| 352 | irq_set = (struct vfio_irq_set *) irq_set_buf; |
| 353 | irq_set->argsz = len; |
| 354 | irq_set->count = 1; |
| 355 | irq_set->flags = VFIO_IRQ_SET_DATA_EVENTFD | |
| 356 | VFIO_IRQ_SET_ACTION_TRIGGER; |
| 357 | irq_set->index = VFIO_PCI_REQ_IRQ_INDEX; |
| 358 | irq_set->start = 0; |
| 359 | fd_ptr = (int *) &irq_set->data; |
| 360 | *fd_ptr = rte_intr_fd_get(intr_handle); |
| 361 | |
| 362 | vfio_dev_fd = rte_intr_dev_fd_get(intr_handle); |
| 363 | ret = ioctl(vfio_dev_fd, VFIO_DEVICE_SET_IRQS, irq_set); |
| 364 | |
| 365 | if (ret) { |
| 366 | RTE_LOG(ERR, EAL, "Error enabling req interrupts for fd %d\n", |
| 367 | rte_intr_fd_get(intr_handle)); |
| 368 | return -1; |
| 369 | } |
| 370 | |
| 371 | return 0; |
| 372 | } |
| 373 | |
| 374 | /* disable req notifier */ |
| 375 | static int |
no test coverage detected