[PATCH v2] platform/mellanox: mlxbf-pmc: add sysfs_attr_init() to count_clock init

David Thompson posted 1 patch 2 months ago
drivers/platform/mellanox/mlxbf-pmc.c | 1 +
1 file changed, 1 insertion(+)
[PATCH v2] platform/mellanox: mlxbf-pmc: add sysfs_attr_init() to count_clock init
Posted by David Thompson 2 months ago
The lock-related debug logic (CONFIG_LOCK_STAT) in the kernel is noting
the following warning when the BlueField-3 SOC is booted:

[   10.231318] BUG: key ffff00008a3402a8 has not been registered!
[   10.237249] ------------[ cut here ]------------
[   10.241914] DEBUG_LOCKS_WARN_ON(1)
[   10.241927] WARNING: CPU: 4 PID: 592 at kernel/locking/lockdep.c:4801 lockdep_init_map_type+0x1d4/0x2a0
<snip>
[   10.385415] Call trace:
[   10.385417]  lockdep_init_map_type+0x1d4/0x2a0
[   10.385423]  __kernfs_create_file+0x84/0x140
[   10.385428]  sysfs_add_file_mode_ns+0xcc/0x1cc
[   10.385431]  internal_create_group+0x110/0x3d4
[   10.385434]  internal_create_groups.part.0+0x54/0xcc
[   10.385436]  sysfs_create_groups+0x24/0x40
[   10.385438]  device_add+0x6e8/0x93c
[   10.444559]  device_register+0x28/0x40
[   10.448299]  __hwmon_device_register+0x4b0/0x8a0
[   10.452907]  devm_hwmon_device_register_with_groups+0x7c/0xe0
[   10.458641]  mlxbf_pmc_probe+0x1e8/0x3e0 [mlxbf_pmc]
[   10.463598]  platform_probe+0x70/0x110

The mlxbf_pmc driver must call sysfs_attr_init() during the
initialization of the "count_clock" data structure to avoid
this warning.

Fixes: 5efc800975d9 ("platform/mellanox: mlxbf-pmc: Add support for monitoring cycle count")
Reviewed-by: Shravan Kumar Ramani <shravankr@nvidia.com>
Signed-off-by: David Thompson <davthompson@nvidia.com>
---
v2: trimmed excess info from splat, fixed Tags section
---
 drivers/platform/mellanox/mlxbf-pmc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/platform/mellanox/mlxbf-pmc.c b/drivers/platform/mellanox/mlxbf-pmc.c
index 4776013e0764..16a2fd9fdd9b 100644
--- a/drivers/platform/mellanox/mlxbf-pmc.c
+++ b/drivers/platform/mellanox/mlxbf-pmc.c
@@ -2015,6 +2015,7 @@ static int mlxbf_pmc_init_perftype_counter(struct device *dev, unsigned int blk_
 	if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_CRSPACE) {
 		/* Program crspace counters to count clock cycles using "count_clock" sysfs */
 		attr = &pmc->block[blk_num].attr_count_clock;
+		sysfs_attr_init(&attr->dev_attr.attr);
 		attr->dev_attr.attr.mode = 0644;
 		attr->dev_attr.show = mlxbf_pmc_count_clock_show;
 		attr->dev_attr.store = mlxbf_pmc_count_clock_store;
-- 
2.43.0