From 20ff1269e0a8c3845034c1232f2d0fd238e4cdd8 Mon Sep 17 00:00:00 2001 From: Besar Wicaksono Date: Tue, 7 Nov 2023 13:08:17 -0600 Subject: [PATCH] NVIDIA: SAUCE: perf: arm_cspmu: nvidia: add revision id matching This is a preparatory patch for new NVIDIA devices that will need to be distinguished by revision and variant bits in PMIIDR register in addition to product id. Signed-off-by: Besar Wicaksono Signed-off-by: Laxman Dewangan Acked-by: Noah Wager Acked-by: Jacob Martin Signed-off-by: Noah Wager --- drivers/perf/arm_cspmu/nvidia_cspmu.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/perf/arm_cspmu/nvidia_cspmu.c b/drivers/perf/arm_cspmu/nvidia_cspmu.c index 5b84b701ad62..213afb7f2702 100644 --- a/drivers/perf/arm_cspmu/nvidia_cspmu.c +++ b/drivers/perf/arm_cspmu/nvidia_cspmu.c @@ -22,7 +22,9 @@ #define NV_GENERIC_FILTER_ID_MASK GENMASK_ULL(31, 0) -#define NV_PRODID_MASK GENMASK(31, 0) +#define NV_PRODID_MASK (ARM_CSPMU_PMIIDR_PRODUCTID | \ + ARM_CSPMU_PMIIDR_VARIANT | \ + ARM_CSPMU_PMIIDR_REVISION) #define NV_FORMAT_NAME_GENERIC 0 @@ -262,7 +264,7 @@ struct nv_cspmu_match { static const struct nv_cspmu_match nv_cspmu_match[] = { { - .prodid = 0x103, + .prodid = 0x10300000, .prodid_mask = NV_PRODID_MASK, .filter_mask = NV_PCIE_FILTER_ID_MASK, .filter_default_val = NV_PCIE_FILTER_ID_MASK, @@ -272,7 +274,7 @@ static const struct nv_cspmu_match nv_cspmu_match[] = { .format_attr = pcie_pmu_format_attrs }, { - .prodid = 0x104, + .prodid = 0x10400000, .prodid_mask = NV_PRODID_MASK, .filter_mask = 0x0, .filter_default_val = NV_NVL_C2C_FILTER_ID_MASK, @@ -282,7 +284,7 @@ static const struct nv_cspmu_match nv_cspmu_match[] = { .format_attr = nvlink_c2c_pmu_format_attrs }, { - .prodid = 0x105, + .prodid = 0x10500000, .prodid_mask = NV_PRODID_MASK, .filter_mask = 0x0, .filter_default_val = NV_NVL_C2C_FILTER_ID_MASK, @@ -292,7 +294,7 @@ static const struct nv_cspmu_match nv_cspmu_match[] = { .format_attr = nvlink_c2c_pmu_format_attrs }, { - .prodid = 0x106, + .prodid = 0x10600000, .prodid_mask = NV_PRODID_MASK, .filter_mask = NV_CNVL_FILTER_ID_MASK, .filter_default_val = NV_CNVL_FILTER_ID_MASK, @@ -302,7 +304,7 @@ static const struct nv_cspmu_match nv_cspmu_match[] = { .format_attr = cnvlink_pmu_format_attrs }, { - .prodid = 0x2CF, + .prodid = 0x2CF00000, .prodid_mask = NV_PRODID_MASK, .filter_mask = 0x0, .filter_default_val = 0x0, @@ -364,7 +366,7 @@ static int nv_cspmu_init_ops(struct arm_cspmu *cspmu) if (!ctx) return -ENOMEM; - prodid = FIELD_GET(ARM_CSPMU_PMIIDR_PRODUCTID, cspmu->impl.pmiidr); + prodid = cspmu->impl.pmiidr; /* Find matching PMU. */ for (; match->prodid; match++) {