These patches are to fix some issues with epoll event handling for EPOLLERR/EPOLLRDHUP/EPOLLHUP.
In the interrupt handling code, some interrupts are read directly in eal and some just call registered callback which will read the interrupt. v1 version was too aggressively dealing with epoll disconnect/error events by detecting and removing the interrupt in the eal interrupt code and not calling the registered callbacks. This was a problem for virtio, which needs to handle these scenarios itself so it can enable reconnect for vhost server. In v2, if the read is not done in eal then the registered callback will be called and it is up to handlers external to eal to deal with the interrupt as they see fit. This better respects interrupt types like RTE_INTR_HANDLE_EXT and RTE_INTR_HANDLE_VDEV. To deal with the observed issue of mlx5 devx interrupts causing a busy-loop and 100% CPU of dpdk-intr thread, extra handling is added to the devx interrupt handler. 1/2: deals with mlx5 devx interrupt busy-loop 2/2: deals with disconnect/error epoll events for interrupts read in eal The patches are independent but 1/2 is the direct fix for the real life bug observed and reported in https://bugs.dpdk.org/show_bug.cgi?id=1873. v3: - 1/2 and 2/2 fix some coding nits (Stephen/AI/David) - 2/2 Make log level consistant (David) Sending v3 as it is fixing some minor coding issues and is prepared. ***NOTE:*** Slava has raised some concerns on the operation of 1/2 that will need to be discussed further. Kevin Traynor (2): net/mlx5: check for no data read in devx interrupt eal/linux: handle interrupt epoll events drivers/net/mlx5/linux/mlx5_ethdev_os.c | 34 +++++++++--- lib/eal/linux/eal_interrupts.c | 72 ++++++++++++++++--------- 2 files changed, 74 insertions(+), 32 deletions(-) -- 2.52.0

