Re: [PATCH net V2] net/mlx5e: Move representor vnic reporter to eswitch devlink port

From: Simon Horman

Date: Wed Sep 09 2026 - 11:57:16 EST


On Sun, Sep 06, 2026 at 12:07:00PM +0300, Tariq Toukan wrote:
> From: Carolina Jubran <cjubran@xxxxxxxxxx>
>
> The representor vnic devlink health reporter is created and destroyed
> along the representor netdev (un)load path, which is not serialized by
> the devlink instance lock. Destroying the reporter from there triggers
> a devl_assert_locked() splat on driver unbind:
> WARNING: net/devlink/core.c:259 at devl_assert_locked+0x54/0x70, CPU#2: bash/3758
> Modules linked in: mlx5_vdpa vringh vdpa mlx5_ib mlx5_fwctl mlx5_core ...
> CPU: 2 UID: 0 PID: 3758 Comm: bash Tainted: G W 6.19.0+ #1 PREEMPT
> Tainted: [W]=WARN
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), ...
> RIP: 0010:devl_assert_locked+0x54/0x70
> Call Trace:
> <TASK>
> devl_health_reporter_destroy+0x3a/0x1b0
> mlx5e_vport_rep_unload+0x12d/0x2b0 [mlx5_core]
> mlx5_eswitch_unregister_vport_reps+0x1b8/0x220 [mlx5_core]
> ? __esw_offloads_unload_rep+0x190/0x190 [mlx5_core]
> ? kernfs_remove_by_name_ns+0xc3/0xf0
> device_release_driver_internal+0x3b2/0x560
> unbind_store+0xce/0xf0
>
> Move the reporter's lifecycle to the eswitch devlink port (un)register
> paths, which are already serialized by the devlink instance lock, and
> store the handle on mlx5_devlink_port. Use the port's mlx5_vport as the
> reporter priv since the diagnose callback only needs a device handle and
> a vport number, and mlx5_vport carries both and is initialized before
> any representor driver probes.
>
> Fixes: cf14af140a5a ("net/mlx5e: Add vnic devlink health reporter to representors")
> Signed-off-by: Carolina Jubran <cjubran@xxxxxxxxxx>
> Reviewed-by: Cosmin Ratiu <cratiu@xxxxxxxxxx>
> Signed-off-by: Tariq Toukan <tariqt@xxxxxxxxxx>

Reviewed-by: Simon Horman <horms@xxxxxxxxxx>