[PATCH v1 3/8] Revert "UBUNTU: SAUCE: mlxbf-pmc: Fix error when reading unprogrammed events"
Shravan Kumar Ramani
shravankr at nvidia.com
Tue Oct 17 11:29:40 UTC 2023
BugLink: https://bugs.launchpad.net/bugs/2039561
This reverts commit ae65968c10fd1de8f2640e6564ebbf013523032c.
Signed-off-by: Shravan Kumar Ramani <shravankr at nvidia.com>
---
drivers/platform/mellanox/mlxbf-pmc.c | 32 ++++++++++++++++++++++-----
drivers/platform/mellanox/mlxbf-pmc.h | 6 -----
2 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/drivers/platform/mellanox/mlxbf-pmc.c b/drivers/platform/mellanox/mlxbf-pmc.c
index c4ebaf5f56c3..fb3b770d092c 100644
--- a/drivers/platform/mellanox/mlxbf-pmc.c
+++ b/drivers/platform/mellanox/mlxbf-pmc.c
@@ -19,7 +19,7 @@
#include "mlxbf-pmc.h"
-#define DRIVER_VERSION 2.3
+#define DRIVER_VERSION 2.2
static struct mlxbf_pmc_context *pmc;
@@ -562,7 +562,7 @@ int mlxbf_read_event(int blk_num, uint32_t cnt_num, bool is_l3,
uint64_t *result)
{
uint32_t perfcfg_offset, perfval_offset;
- uint64_t perfmon_cfg, perfevt;
+ uint64_t perfmon_cfg, perfevt, perfctl;
if (cnt_num >= pmc->block[blk_num].counters)
return -EINVAL;
@@ -573,6 +573,26 @@ int mlxbf_read_event(int blk_num, uint32_t cnt_num, bool is_l3,
perfcfg_offset = cnt_num * 8;
perfval_offset = perfcfg_offset + pmc->block[blk_num].counters * 8;
+ /* Set counter in "read" mode */
+ perfmon_cfg = 0;
+ perfmon_cfg |= FIELD_PREP(MLXBF_GEN_PERFMON_CONFIG__ADDR,
+ MLXBF_PERFCTL);
+ perfmon_cfg |= FIELD_PREP(MLXBF_GEN_PERFMON_CONFIG__STROBE, 1);
+ perfmon_cfg |= FIELD_PREP(MLXBF_GEN_PERFMON_CONFIG__WR_R_B, 0);
+
+ if (mlxbf_pmc_writeq(perfmon_cfg,
+ pmc->block[blk_num].mmio_base + perfcfg_offset))
+ return -EFAULT;
+
+ /* Check if the counter is enabled */
+
+ if (mlxbf_pmc_readq(&perfctl,
+ pmc->block[blk_num].mmio_base + perfval_offset))
+ return -EFAULT;
+
+ if (FIELD_GET(MLXBF_GEN_PERFCTL__EN0, perfctl) == 0)
+ return -EINVAL;
+
/* Set counter in "read" mode */
perfmon_cfg = 0;
perfmon_cfg |= FIELD_PREP(MLXBF_GEN_PERFMON_CONFIG__ADDR,
@@ -792,10 +812,10 @@ static ssize_t mlxbf_print_event_list(struct kobject *ko,
buf[0] = '\0';
while (events[i].evt_name != NULL) {
size += snprintf(e_info,
- sizeof(e_info),
- "%x: %s\n",
- events[i].evt_num,
- events[i].evt_name);
+ sizeof(e_info),
+ "%x: %s\n",
+ events[i].evt_num,
+ events[i].evt_name);
if (size >= PAGE_SIZE)
break;
strcat(buf, e_info);
diff --git a/drivers/platform/mellanox/mlxbf-pmc.h b/drivers/platform/mellanox/mlxbf-pmc.h
index a6f7aade4bce..41fe15085930 100644
--- a/drivers/platform/mellanox/mlxbf-pmc.h
+++ b/drivers/platform/mellanox/mlxbf-pmc.h
@@ -186,7 +186,6 @@ struct mlxbf_pmc_events mlxbf_smgen_events[] = {
};
struct mlxbf_pmc_events mlxbf1_trio_events[] = {
-{0x00, "DISABLE"},
{0xa0, "TPIO_DATA_BEAT"},
{0xa1, "TDMA_DATA_BEAT"},
{0xa2, "MAP_DATA_BEAT"},
@@ -211,7 +210,6 @@ struct mlxbf_pmc_events mlxbf1_trio_events[] = {
};
struct mlxbf_pmc_events mlxbf2_trio_events[] = {
-{0x00, "DISABLE"},
{0xa0, "TPIO_DATA_BEAT"},
{0xa1, "TDMA_DATA_BEAT"},
{0xa2, "MAP_DATA_BEAT"},
@@ -245,7 +243,6 @@ struct mlxbf_pmc_events mlxbf2_trio_events[] = {
};
struct mlxbf_pmc_events mlxbf_ecc_events[] = {
-{0x00, "DISABLE"},
{0x100, "ECC_SINGLE_ERROR_CNT"},
{0x104, "ECC_DOUBLE_ERROR_CNT"},
{0x114, "SERR_INJ"},
@@ -259,7 +256,6 @@ struct mlxbf_pmc_events mlxbf_ecc_events[] = {
};
struct mlxbf_pmc_events mlxbf_mss_events[] = {
-{0x00, "DISABLE"},
{0xc0, "RXREQ_MSS"},
{0xc1, "RXDAT_MSS"},
{0xc2, "TXRSP_MSS"},
@@ -268,7 +264,6 @@ struct mlxbf_pmc_events mlxbf_mss_events[] = {
};
struct mlxbf_pmc_events mlxbf_hnf_events[] = {
-{0x00, "DISABLE"},
{0x45, "HNF_REQUESTS"},
{0x46, "HNF_REJECTS"},
{0x47, "ALL_BUSY"},
@@ -328,7 +323,6 @@ struct mlxbf_pmc_events mlxbf_hnf_events[] = {
};
struct mlxbf_pmc_events mlxbf2_hnfnet_events[] = {
-{0x00, "DISABLE"},
{0x12, "CDN_REQ"},
{0x13, "DDN_REQ"},
{0x14, "NDN_REQ"},
--
2.30.1
More information about the kernel-team
mailing list