* [linux-next:master 13574/14242] drivers/perf/cxl_pmu.c:1044 cxl_pmu_probe() warn: right shifting more than type allows 64 vs 64
@ 2026-10-05 14:29 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-10-05 14:29 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
Unfiltered warning: this smatch report is sent as-is and has not been
reviewed for false positives, so please treat it with due skepticism.
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Dave Jiang <dave.jiang@intel.com>
CC: Will Deacon <will@kernel.org>
CC: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: bf1ee2bd5c2da8992f33c8950ef194aaff74ed6c
commit: 05d82cf377f706d0b566b572bc66e3a2057bd68e [13574/14242] perf/cxl: Clear stale overflow status before using a counter
:::::: branch date: 2 hours ago
:::::: commit date: 21 hours ago
config: i386-randconfig-2200-20261005 (https://download.01.org/0day-ci/archive/20261005/202610051608.pBAgujgg-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9187-g5189e3fb
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202610051608.pBAgujgg-lkp@intel.com/
smatch warnings:
drivers/perf/cxl_pmu.c:1044 cxl_pmu_probe() warn: right shifting more than type allows 64 vs 64
vim +1044 drivers/perf/cxl_pmu.c
5d7107c72796df3 Jonathan Cameron 2023-05-26 971
5d7107c72796df3 Jonathan Cameron 2023-05-26 972 static int cxl_pmu_probe(struct device *dev)
5d7107c72796df3 Jonathan Cameron 2023-05-26 973 {
5d7107c72796df3 Jonathan Cameron 2023-05-26 974 struct cxl_pmu *pmu = to_cxl_pmu(dev);
5d7107c72796df3 Jonathan Cameron 2023-05-26 975 struct pci_dev *pdev = to_pci_dev(dev->parent);
5d7107c72796df3 Jonathan Cameron 2023-05-26 976 struct cxl_pmu_info *info;
5d7107c72796df3 Jonathan Cameron 2023-05-26 977 char *irq_name;
5d7107c72796df3 Jonathan Cameron 2023-05-26 978 char *dev_name;
5d7107c72796df3 Jonathan Cameron 2023-05-26 979 int rc, irq;
5d7107c72796df3 Jonathan Cameron 2023-05-26 980
5d7107c72796df3 Jonathan Cameron 2023-05-26 981 info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
5d7107c72796df3 Jonathan Cameron 2023-05-26 982 if (!info)
5d7107c72796df3 Jonathan Cameron 2023-05-26 983 return -ENOMEM;
5d7107c72796df3 Jonathan Cameron 2023-05-26 984
5d7107c72796df3 Jonathan Cameron 2023-05-26 985 dev_set_drvdata(dev, info);
5d7107c72796df3 Jonathan Cameron 2023-05-26 986 INIT_LIST_HEAD(&info->event_caps_fixed);
5d7107c72796df3 Jonathan Cameron 2023-05-26 987 INIT_LIST_HEAD(&info->event_caps_configurable);
5d7107c72796df3 Jonathan Cameron 2023-05-26 988
5d7107c72796df3 Jonathan Cameron 2023-05-26 989 info->base = pmu->base;
5d7107c72796df3 Jonathan Cameron 2023-05-26 990
5d7107c72796df3 Jonathan Cameron 2023-05-26 991 info->on_cpu = -1;
5d7107c72796df3 Jonathan Cameron 2023-05-26 992 rc = cxl_pmu_parse_caps(dev, info);
5d7107c72796df3 Jonathan Cameron 2023-05-26 993 if (rc)
5d7107c72796df3 Jonathan Cameron 2023-05-26 994 return rc;
5d7107c72796df3 Jonathan Cameron 2023-05-26 995
6ae58c74e7aa9aa Alok Tiwari 2025-06-24 996 info->hw_events = devm_kcalloc(dev, info->num_counters,
6ae58c74e7aa9aa Alok Tiwari 2025-06-24 997 sizeof(*info->hw_events), GFP_KERNEL);
5d7107c72796df3 Jonathan Cameron 2023-05-26 998 if (!info->hw_events)
5d7107c72796df3 Jonathan Cameron 2023-05-26 999 return -ENOMEM;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1000
5d7107c72796df3 Jonathan Cameron 2023-05-26 1001 switch (pmu->type) {
5d7107c72796df3 Jonathan Cameron 2023-05-26 1002 case CXL_PMU_MEMDEV:
5d7107c72796df3 Jonathan Cameron 2023-05-26 1003 dev_name = devm_kasprintf(dev, GFP_KERNEL, "cxl_pmu_mem%d.%d",
5d7107c72796df3 Jonathan Cameron 2023-05-26 1004 pmu->assoc_id, pmu->index);
5d7107c72796df3 Jonathan Cameron 2023-05-26 1005 break;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1006 }
5d7107c72796df3 Jonathan Cameron 2023-05-26 1007 if (!dev_name)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1008 return -ENOMEM;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1009
5d7107c72796df3 Jonathan Cameron 2023-05-26 1010 info->pmu = (struct pmu) {
5d7107c72796df3 Jonathan Cameron 2023-05-26 1011 .name = dev_name,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1012 .parent = dev,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1013 .module = THIS_MODULE,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1014 .event_init = cxl_pmu_event_init,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1015 .pmu_enable = cxl_pmu_enable,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1016 .pmu_disable = cxl_pmu_disable,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1017 .add = cxl_pmu_event_add,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1018 .del = cxl_pmu_event_del,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1019 .start = cxl_pmu_event_start,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1020 .stop = cxl_pmu_event_stop,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1021 .read = cxl_pmu_read,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1022 .task_ctx_nr = perf_invalid_context,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1023 .attr_groups = cxl_pmu_attr_groups,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1024 .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1025 };
5d7107c72796df3 Jonathan Cameron 2023-05-26 1026
97fe5d94b7cebff Dave Jiang 2026-08-05 1027 if (info->msi_vec < 0)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1028 return -EINVAL;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1029
97fe5d94b7cebff Dave Jiang 2026-08-05 1030 rc = pci_irq_vector(pdev, info->msi_vec);
5d7107c72796df3 Jonathan Cameron 2023-05-26 1031 if (rc < 0)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1032 return rc;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1033 irq = rc;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1034
3e870815ccf5bc7 Alok Tiwari 2025-06-24 1035 irq_name = devm_kasprintf(dev, GFP_KERNEL, "%s_overflow", dev_name);
5d7107c72796df3 Jonathan Cameron 2023-05-26 1036 if (!irq_name)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1037 return -ENOMEM;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1038
05d82cf377f706d Dave Jiang 2026-08-05 1039 /*
05d82cf377f706d Dave Jiang 2026-08-05 1040 * Same for counters no event owns yet: clear whatever firmware or a
05d82cf377f706d Dave Jiang 2026-08-05 1041 * previous kernel left set before the handler goes live. Bits above the
05d82cf377f706d Dave Jiang 2026-08-05 1042 * implemented counters are reserved, so only write those.
05d82cf377f706d Dave Jiang 2026-08-05 1043 */
05d82cf377f706d Dave Jiang 2026-08-05 @1044 writeq(GENMASK_ULL(info->num_counters - 1, 0),
05d82cf377f706d Dave Jiang 2026-08-05 1045 info->base + CXL_PMU_OVERFLOW_REG);
05d82cf377f706d Dave Jiang 2026-08-05 1046
b899fd3487b0d40 Dave Jiang 2026-08-05 1047 /*
b899fd3487b0d40 Dave Jiang 2026-08-05 1048 * The handler must run on info->on_cpu, so the interrupt cannot be
b899fd3487b0d40 Dave Jiang 2026-08-05 1049 * shared - IRQF_NOBALANCING is only honoured for the first action on a
b899fd3487b0d40 Dave Jiang 2026-08-05 1050 * line, and a co-owner would keep taking the interrupt wherever its own
b899fd3487b0d40 Dave Jiang 2026-08-05 1051 * affinity points.
b899fd3487b0d40 Dave Jiang 2026-08-05 1052 */
b899fd3487b0d40 Dave Jiang 2026-08-05 1053 rc = devm_request_irq(dev, irq, cxl_pmu_irq,
b899fd3487b0d40 Dave Jiang 2026-08-05 1054 IRQF_NO_THREAD | IRQF_NOBALANCING,
5d7107c72796df3 Jonathan Cameron 2023-05-26 1055 irq_name, info);
5d7107c72796df3 Jonathan Cameron 2023-05-26 1056 if (rc)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1057 return rc;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1058 info->irq = irq;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1059
5d7107c72796df3 Jonathan Cameron 2023-05-26 1060 rc = cpuhp_state_add_instance(cxl_pmu_cpuhp_state_num, &info->node);
5d7107c72796df3 Jonathan Cameron 2023-05-26 1061 if (rc)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1062 return rc;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1063
5d7107c72796df3 Jonathan Cameron 2023-05-26 1064 rc = devm_add_action_or_reset(dev, cxl_pmu_cpuhp_remove, info);
5d7107c72796df3 Jonathan Cameron 2023-05-26 1065 if (rc)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1066 return rc;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1067
5d7107c72796df3 Jonathan Cameron 2023-05-26 1068 rc = perf_pmu_register(&info->pmu, info->pmu.name, -1);
5d7107c72796df3 Jonathan Cameron 2023-05-26 1069 if (rc)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1070 return rc;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1071
5d7107c72796df3 Jonathan Cameron 2023-05-26 1072 rc = devm_add_action_or_reset(dev, cxl_pmu_perf_unregister, info);
5d7107c72796df3 Jonathan Cameron 2023-05-26 1073 if (rc)
5d7107c72796df3 Jonathan Cameron 2023-05-26 1074 return rc;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1075
5d7107c72796df3 Jonathan Cameron 2023-05-26 1076 return 0;
5d7107c72796df3 Jonathan Cameron 2023-05-26 1077 }
5d7107c72796df3 Jonathan Cameron 2023-05-26 1078
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-05 14:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-05 14:29 [linux-next:master 13574/14242] drivers/perf/cxl_pmu.c:1044 cxl_pmu_probe() warn: right shifting more than type allows 64 vs 64 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.