]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net/mlx5: Expose uar access and odp page fault counters
authorAkiva Goldberger <agoldberger@nvidia.com>
Thu, 25 Sep 2025 10:45:30 +0000 (13:45 +0300)
committerJakub Kicinski <kuba@kernel.org>
Sat, 27 Sep 2025 15:53:50 +0000 (08:53 -0700)
Add three counters to vnic health reporter:
bar_uar_access, odp_local_triggered_page_fault, and
odp_remote_triggered_page_fault.

- bar_uar_access
    number of WRITE or READ access operations to the UAR on the PCIe
    BAR.
- odp_local_triggered_page_fault
    number of locally-triggered page-faults due to ODP.
- odp_remote_triggered_page_fault
    number of remotly-triggered page-faults due to ODP.

Example access:
    $ devlink health diagnose pci/0000:08:00.0 reporter vnic
vNIC env counters:
total_error_queues: 0 send_queue_priority_update_flow: 0
comp_eq_overrun: 0 async_eq_overrun: 0 cq_overrun: 0
invalid_command: 0 quota_exceeded_command: 0
nic_receive_steering_discard: 0 icm_consumption: 1032
bar_uar_access: 1279 odp_local_triggered_page_fault: 20
odp_remote_triggered_page_fault: 34

Signed-off-by: Akiva Goldberger <agoldberger@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/1758797130-829564-1-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Documentation/networking/devlink/mlx5.rst
drivers/net/ethernet/mellanox/mlx5/core/diag/reporter_vnic.c

index 41c9b716699eaa778f4649b377028c08036c9532..0e5f9c76e51418b8d55e4751a84d280774d79114 100644 (file)
@@ -385,6 +385,12 @@ Description of the vnic counters:
         amount of Interconnect Host Memory (ICM) consumed by the vnic in
         granularity of 4KB. ICM is host memory allocated by SW upon HCA request
         and is used for storing data structures that control HCA operation.
+- bar_uar_access
+        number of WRITE or READ access operations to the UAR on the PCIe BAR.
+- odp_local_triggered_page_fault
+        number of locally-triggered page-faults due to ODP.
+- odp_remote_triggered_page_fault
+        number of remotly-triggered page-faults due to ODP.
 
 User commands examples:
 
index a17f82321c255fe527a575c8cf27b129593ba218..7cae0c6e5e8aa779db032c8ef9290a25feb3aae2 100644 (file)
@@ -107,6 +107,15 @@ void mlx5_reporter_vnic_diagnose_counters(struct mlx5_core_dev *dev,
        }
        if (MLX5_CAP_GEN(dev, nic_cap_reg))
                mlx5_reporter_vnic_diagnose_counter_icm(dev, fmsg, vport_num, other_vport);
+       if (MLX5_CAP_GEN(dev, vnic_env_cnt_bar_uar_access))
+               devlink_fmsg_u32_pair_put(fmsg, "bar_uar_access",
+                                         VNIC_ENV_GET(&vnic, bar_uar_access));
+       if (MLX5_CAP_GEN(dev, vnic_env_cnt_odp_page_fault)) {
+               devlink_fmsg_u32_pair_put(fmsg, "odp_local_triggered_page_fault",
+                                         VNIC_ENV_GET(&vnic, odp_local_triggered_page_fault));
+               devlink_fmsg_u32_pair_put(fmsg, "odp_remote_triggered_page_fault",
+                                         VNIC_ENV_GET(&vnic, odp_remote_triggered_page_fault));
+       }
 
        devlink_fmsg_obj_nest_end(fmsg);
        devlink_fmsg_pair_nest_end(fmsg);