RE: [PATCH v4 3/3] net/mlx5: check devx disconnect/error interrupt events

Slava Ovsiienko
2026-03-03T16:17:12Z

> -----Original Message-----
> From: Kevin Traynor <ktraynor@redhat.com>
> Sent: Thursday, February 19, 2026 4:39 PM
> To: dev@dpdk.org
> Cc: NBU-Contact-Thomas Monjalon (EXTERNAL) <thomas@monjalon.net>;
> david.marchand@redhat.com; Dariusz Sosnowski <dsosnowski@nvidia.com>;
> Slava Ovsiienko <viacheslavo@nvidia.com>; hkalra@marvell.com; Kevin
> Traynor <ktraynor@redhat.com>; stable@dpdk.org
> Subject: [PATCH v4 3/3] net/mlx5: check devx disconnect/error interrupt events
>
> A busy-loop may occur when there are disconnect/error events such as
> EPOLLERR, EPOLLHUP or EPOLLRDHUP on Linux for the devx interrupt fd.
>
> This may happen if the interrupt fd is deleted, if the device is unbound from
> mlx5_core kernel driver or if the device is removed by the mlx5 kernel driver as
> part of LAG setup.
>
> As the interrupt is not removed or condition reset, it causes an interrupt
> processing busy-loop, which leads to the dpdk-intr thread going to 100% CPU.
>
> e.g.
> epoll_wait
> (6, [{events=EPOLLIN|EPOLLRDHUP, data={u32=28, u64=28}}], 8, -1) = 1
> read(28, 0x7f1f5c7fc2f0, 40)
> = -1 EAGAIN (Resource temporarily unavailable) epoll_wait
> (6, [{events=EPOLLIN|EPOLLRDHUP, data={u32=28, u64=28}}], 8, -1) = 1
> read(28, 0x7f1f5c7fc2f0, 40)
> = -1 EAGAIN (Resource temporarily unavailable)
>
> In order to prevent a busy-loop use the eal API rte_intr_active_events() to get
> the interrupt events and check for disconnect/error.
>
> If there is a disconnect/error event, unregister the devx callback.
>
> Bugzilla ID: 1873
> Fixes: f15db67df09c ("net/mlx5: accelerate DV flow counter query")
> Cc: stable@dpdk.org
>
> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>