[v4] eal: read data buffer on RTE_INTR_HANDLE_VFIO_REQ
Checks
Commit Message
We should call read() on RTE_INTR_HANDLE_VFIO_REQ event
to confirm that event.
Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
---
lib/eal/linux/eal_interrupts.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
Comments
On Tue, Aug 24, 2021 at 12:28 PM Maciej Szwed <maciej.szwed@intel.com> wrote:
>
> We should call read() on RTE_INTR_HANDLE_VFIO_REQ event
> to confirm that event.
Still no review, Cc: maintainers / contributors to this code.
This looks like a fix, if so, please add a Fixes: tag.
Should this be backported to stable branches?
>
> Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
> ---
> lib/eal/linux/eal_interrupts.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/lib/eal/linux/eal_interrupts.c b/lib/eal/linux/eal_interrupts.c
> index 22b3b7bcd9..dc42527344 100644
> --- a/lib/eal/linux/eal_interrupts.c
> +++ b/lib/eal/linux/eal_interrupts.c
> @@ -918,17 +918,16 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)
> bytes_read = sizeof(buf.timerfd_num);
> break;
> #ifdef VFIO_PRESENT
> +#ifdef HAVE_VFIO_DEV_REQ_INTERFACE
> + case RTE_INTR_HANDLE_VFIO_REQ:
> + call = true;
Afaiu, call should be set only if the read() call succeeds.
> +#endif
> + /* fall through */
> case RTE_INTR_HANDLE_VFIO_MSIX:
> case RTE_INTR_HANDLE_VFIO_MSI:
> case RTE_INTR_HANDLE_VFIO_LEGACY:
> bytes_read = sizeof(buf.vfio_intr_count);
> break;
> -#ifdef HAVE_VFIO_DEV_REQ_INTERFACE
> - case RTE_INTR_HANDLE_VFIO_REQ:
> - bytes_read = 0;
> - call = true;
> - break;
> -#endif
> #endif
> case RTE_INTR_HANDLE_VDEV:
> case RTE_INTR_HANDLE_EXT:
> --
> 2.27.0
>
@@ -918,17 +918,16 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)
bytes_read = sizeof(buf.timerfd_num);
break;
#ifdef VFIO_PRESENT
+#ifdef HAVE_VFIO_DEV_REQ_INTERFACE
+ case RTE_INTR_HANDLE_VFIO_REQ:
+ call = true;
+#endif
+ /* fall through */
case RTE_INTR_HANDLE_VFIO_MSIX:
case RTE_INTR_HANDLE_VFIO_MSI:
case RTE_INTR_HANDLE_VFIO_LEGACY:
bytes_read = sizeof(buf.vfio_intr_count);
break;
-#ifdef HAVE_VFIO_DEV_REQ_INTERFACE
- case RTE_INTR_HANDLE_VFIO_REQ:
- bytes_read = 0;
- call = true;
- break;
-#endif
#endif
case RTE_INTR_HANDLE_VDEV:
case RTE_INTR_HANDLE_EXT: