* [palmer:riscv-pmu 8/10] drivers/perf/riscv_pmu_sbi.c:627:8: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch]
@ 2021-12-15 4:47 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-12-15 4:47 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 17630 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Atish Patra <atish.patra@wdc.com>
CC: Palmer Dabbelt <palmer@rivosinc.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/palmer/linux.git riscv-pmu
head: 7a94c6fb363cfe62906cb0503d763204b0fe32b8
commit: e4dfe5f987b44eb72dac27ead70b8fd722fdae63 [8/10] RISC-V: Add interrupt support for perf
:::::: branch date: 27 hours ago
:::::: commit date: 27 hours ago
config: riscv-randconfig-c006-20211214 (https://download.01.org/0day-ci/archive/20211215/202112151246.KPvcvopj-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a2ddb6c8ac29412b1361810972e15221fa021c)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/palmer/linux.git/commit/?id=e4dfe5f987b44eb72dac27ead70b8fd722fdae63
git remote add palmer https://git.kernel.org/pub/scm/linux/kernel/git/palmer/linux.git
git fetch --no-tags palmer riscv-pmu
git checkout e4dfe5f987b44eb72dac27ead70b8fd722fdae63
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^~~
drivers/hwmon/asc7621.c:422:11: note: '?' condition is true
reqval = clamp_val(reqval, -32000, 31750);
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^
include/linux/minmax.h:124:36: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
^
include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
#define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
^
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^
drivers/hwmon/asc7621.c:423:2: note: The value -32 is assigned to 'i'
i = reqval / 1000;
^~~~~~~~~~~~~~~~~
drivers/hwmon/asc7621.c:425:11: note: The result of the left shift is undefined because the left operand is negative
temp = i << 2;
~ ^
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
block/partitions/atari.c:143:5: warning: Value stored to 'part_fmt' is never read [clang-analyzer-deadcode.DeadStores]
part_fmt = 2;
^ ~
block/partitions/atari.c:143:5: note: Value stored to 'part_fmt' is never read
part_fmt = 2;
^ ~
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (2 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
block/partitions/ldm.c:739:3: warning: Value stored to 'r_cols' is never read [clang-analyzer-deadcode.DeadStores]
r_cols = 0;
^ ~
block/partitions/ldm.c:739:3: note: Value stored to 'r_cols' is never read
r_cols = 0;
^ ~
block/partitions/ldm.c:787:3: warning: Value stored to 'r_id1' is never read [clang-analyzer-deadcode.DeadStores]
r_id1 = 0;
^ ~
block/partitions/ldm.c:787:3: note: Value stored to 'r_id1' is never read
r_id1 = 0;
^ ~
block/partitions/ldm.c:788:3: warning: Value stored to 'r_id2' is never read [clang-analyzer-deadcode.DeadStores]
r_id2 = 0;
^ ~
block/partitions/ldm.c:788:3: note: Value stored to 'r_id2' is never read
r_id2 = 0;
^ ~
block/partitions/ldm.c:830:3: warning: Value stored to 'r_id1' is never read [clang-analyzer-deadcode.DeadStores]
r_id1 = 0;
^ ~
block/partitions/ldm.c:830:3: note: Value stored to 'r_id1' is never read
r_id1 = 0;
^ ~
block/partitions/ldm.c:831:3: warning: Value stored to 'r_id2' is never read [clang-analyzer-deadcode.DeadStores]
r_id2 = 0;
^ ~
block/partitions/ldm.c:831:3: note: Value stored to 'r_id2' is never read
r_id2 = 0;
^ ~
block/partitions/ldm.c:967:3: warning: Value stored to 'r_index' is never read [clang-analyzer-deadcode.DeadStores]
r_index = 0;
^ ~
block/partitions/ldm.c:967:3: note: Value stored to 'r_index' is never read
r_index = 0;
^ ~
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
2 warnings generated.
Suppressed 2 warnings (2 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
>> drivers/perf/riscv_pmu_sbi.c:627:8: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch]
if (ret) {
^~~
drivers/perf/riscv_pmu_sbi.c:583:23: note: 'ret' declared without an initial value
int i = 0, num_irqs, ret;
^~~
drivers/perf/riscv_pmu_sbi.c:590:6: note: Assuming 'num_irqs' is > 0
if (num_irqs <= 0) {
^~~~~~~~~~~~~
drivers/perf/riscv_pmu_sbi.c:590:2: note: Taking false branch
if (num_irqs <= 0) {
^
drivers/perf/riscv_pmu_sbi.c:595:14: note: 'i' is < 'num_irqs'
for (i = 0; i < num_irqs; i++) {
^
drivers/perf/riscv_pmu_sbi.c:595:2: note: Loop condition is true. Entering loop body
for (i = 0; i < num_irqs; i++) {
^
drivers/perf/riscv_pmu_sbi.c:600:7: note: Assuming the condition is false
if (of_irq_parse_one(node, i, &parent)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/perf/riscv_pmu_sbi.c:600:3: note: Taking false branch
if (of_irq_parse_one(node, i, &parent)) {
^
drivers/perf/riscv_pmu_sbi.c:605:7: note: Assuming the condition is false
if (parent.args[0] != RV_IRQ_PMU) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/perf/riscv_pmu_sbi.c:605:3: note: Taking false branch
if (parent.args[0] != RV_IRQ_PMU) {
^
drivers/perf/riscv_pmu_sbi.c:611:7: note: Assuming 'hartid' is >= 0
if (hartid < 0) {
^~~~~~~~~~
drivers/perf/riscv_pmu_sbi.c:611:3: note: Taking false branch
if (hartid < 0) {
^
drivers/perf/riscv_pmu_sbi.c:617:7: note: 'cpu' is >= 0
if (cpu < 0) {
^~~
drivers/perf/riscv_pmu_sbi.c:617:3: note: Taking false branch
if (cpu < 0) {
^
drivers/perf/riscv_pmu_sbi.c:621:8: note: 'pmu_irq' is 0
if (!pmu_irq && irq_find_host(parent.np)) {
^~~~~~~
drivers/perf/riscv_pmu_sbi.c:621:7: note: Left side of '&&' is true
if (!pmu_irq && irq_find_host(parent.np)) {
^
drivers/perf/riscv_pmu_sbi.c:621:19: note: Calling 'irq_find_host'
if (!pmu_irq && irq_find_host(parent.np)) {
^~~~~~~~~~~~~~~~~~~~~~~~
include/linux/irqdomain.h:325:6: note: Assuming 'd' is non-null, which participates in a condition later
if (!d)
^~
include/linux/irqdomain.h:325:2: note: Taking false branch
if (!d)
^
include/linux/irqdomain.h:328:2: note: Returning pointer (loaded from 'd'), which participates in a condition later
return d;
^~~~~~~~
drivers/perf/riscv_pmu_sbi.c:621:19: note: Returning from 'irq_find_host'
if (!pmu_irq && irq_find_host(parent.np)) {
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/perf/riscv_pmu_sbi.c:621:3: note: Taking true branch
if (!pmu_irq && irq_find_host(parent.np)) {
^
drivers/perf/riscv_pmu_sbi.c:623:4: note: Left side of '&&' is true
pr_err("%s: found irq %lu\n", __func__, pmu_irq);
^
include/linux/printk.h:489:2: note: expanded from macro 'pr_err'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:446:26: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
__printk_index_emit(_fmt, NULL, NULL); \
^
include/linux/printk.h:370:7: note: expanded from macro '__printk_index_emit'
if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \
^
drivers/perf/riscv_pmu_sbi.c:623:4: note: Taking true branch
pr_err("%s: found irq %lu\n", __func__, pmu_irq);
^
include/linux/printk.h:489:2: note: expanded from macro 'pr_err'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:446:26: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
__printk_index_emit(_fmt, NULL, NULL); \
^
include/linux/printk.h:370:3: note: expanded from macro '__printk_index_emit'
if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \
^
drivers/perf/riscv_pmu_sbi.c:623:4: note: '?' condition is true
pr_err("%s: found irq %lu\n", __func__, pmu_irq);
^
include/linux/printk.h:489:2: note: expanded from macro 'pr_err'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
vim +627 drivers/perf/riscv_pmu_sbi.c
5e8bc35a23314c Atish Patra 2021-10-25 580
e4dfe5f987b44e Atish Patra 2021-10-25 581 static int pmu_sbi_setup_irqs(struct riscv_pmu *pmu, struct platform_device *pdev)
e4dfe5f987b44e Atish Patra 2021-10-25 582 {
e4dfe5f987b44e Atish Patra 2021-10-25 583 int i = 0, num_irqs, ret;
e4dfe5f987b44e Atish Patra 2021-10-25 584 struct cpu_hw_events __percpu *hw_events = pmu->hw_events;
e4dfe5f987b44e Atish Patra 2021-10-25 585 struct device *dev = &pdev->dev;
e4dfe5f987b44e Atish Patra 2021-10-25 586 struct device_node *node = dev->of_node;
e4dfe5f987b44e Atish Patra 2021-10-25 587
e4dfe5f987b44e Atish Patra 2021-10-25 588 num_irqs = of_irq_count(node);
e4dfe5f987b44e Atish Patra 2021-10-25 589
e4dfe5f987b44e Atish Patra 2021-10-25 590 if (num_irqs <= 0) {
e4dfe5f987b44e Atish Patra 2021-10-25 591 dev_warn(dev, "no irqs for PMU, sampling events not supported\n");
e4dfe5f987b44e Atish Patra 2021-10-25 592 return -EPERM;
e4dfe5f987b44e Atish Patra 2021-10-25 593 }
e4dfe5f987b44e Atish Patra 2021-10-25 594
e4dfe5f987b44e Atish Patra 2021-10-25 595 for (i = 0; i < num_irqs; i++) {
e4dfe5f987b44e Atish Patra 2021-10-25 596 struct of_phandle_args parent;
e4dfe5f987b44e Atish Patra 2021-10-25 597 irq_hw_number_t pmu_irq = 0;
e4dfe5f987b44e Atish Patra 2021-10-25 598 int cpu, hartid;
e4dfe5f987b44e Atish Patra 2021-10-25 599
e4dfe5f987b44e Atish Patra 2021-10-25 600 if (of_irq_parse_one(node, i, &parent)) {
e4dfe5f987b44e Atish Patra 2021-10-25 601 pr_err("%pOFP: failed to parse parent for irq %d.\n", node, i);
e4dfe5f987b44e Atish Patra 2021-10-25 602 continue;
e4dfe5f987b44e Atish Patra 2021-10-25 603 }
e4dfe5f987b44e Atish Patra 2021-10-25 604
e4dfe5f987b44e Atish Patra 2021-10-25 605 if (parent.args[0] != RV_IRQ_PMU) {
e4dfe5f987b44e Atish Patra 2021-10-25 606 pr_err("%pOFP: invalid irq %d for hwirq %d.\n", node, i, parent.args[0]);
e4dfe5f987b44e Atish Patra 2021-10-25 607 continue;
e4dfe5f987b44e Atish Patra 2021-10-25 608 }
e4dfe5f987b44e Atish Patra 2021-10-25 609
e4dfe5f987b44e Atish Patra 2021-10-25 610 hartid = riscv_of_parent_hartid(parent.np);
e4dfe5f987b44e Atish Patra 2021-10-25 611 if (hartid < 0) {
e4dfe5f987b44e Atish Patra 2021-10-25 612 pr_warn("failed to parse hart ID for irq %d.\n", i);
e4dfe5f987b44e Atish Patra 2021-10-25 613 continue;
e4dfe5f987b44e Atish Patra 2021-10-25 614 }
e4dfe5f987b44e Atish Patra 2021-10-25 615
e4dfe5f987b44e Atish Patra 2021-10-25 616 cpu = riscv_hartid_to_cpuid(hartid);
e4dfe5f987b44e Atish Patra 2021-10-25 617 if (cpu < 0) {
e4dfe5f987b44e Atish Patra 2021-10-25 618 pr_warn("Invalid cpuid for irq %d\n", i);
e4dfe5f987b44e Atish Patra 2021-10-25 619 continue;
e4dfe5f987b44e Atish Patra 2021-10-25 620 }
e4dfe5f987b44e Atish Patra 2021-10-25 621 if (!pmu_irq && irq_find_host(parent.np)) {
e4dfe5f987b44e Atish Patra 2021-10-25 622 pmu_irq = irq_of_parse_and_map(node, i);
e4dfe5f987b44e Atish Patra 2021-10-25 623 pr_err("%s: found irq %lu\n", __func__, pmu_irq);
e4dfe5f987b44e Atish Patra 2021-10-25 624 if (pmu_irq)
e4dfe5f987b44e Atish Patra 2021-10-25 625 ret = request_percpu_irq(pmu_irq, pmu_sbi_ovf_handler,
e4dfe5f987b44e Atish Patra 2021-10-25 626 "riscv-pmu", hw_events);
e4dfe5f987b44e Atish Patra 2021-10-25 @627 if (ret) {
e4dfe5f987b44e Atish Patra 2021-10-25 628 pr_err("registering percpu irq failed [%d]\n", ret);
e4dfe5f987b44e Atish Patra 2021-10-25 629 return ret;
e4dfe5f987b44e Atish Patra 2021-10-25 630 }
e4dfe5f987b44e Atish Patra 2021-10-25 631 if (per_cpu(hw_events->irq, cpu)) {
e4dfe5f987b44e Atish Patra 2021-10-25 632 pr_warn("PMU irq already set!!");
e4dfe5f987b44e Atish Patra 2021-10-25 633 return -EINVAL;
e4dfe5f987b44e Atish Patra 2021-10-25 634 }
e4dfe5f987b44e Atish Patra 2021-10-25 635 per_cpu(hw_events->irq, cpu) = pmu_irq;
e4dfe5f987b44e Atish Patra 2021-10-25 636 per_cpu(hw_events->sscof_ext_present, cpu) = true;
e4dfe5f987b44e Atish Patra 2021-10-25 637 }
e4dfe5f987b44e Atish Patra 2021-10-25 638 }
e4dfe5f987b44e Atish Patra 2021-10-25 639
e4dfe5f987b44e Atish Patra 2021-10-25 640 return 0;
e4dfe5f987b44e Atish Patra 2021-10-25 641 }
e4dfe5f987b44e Atish Patra 2021-10-25 642
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-12-15 4:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-15 4:47 [palmer:riscv-pmu 8/10] drivers/perf/riscv_pmu_sbi.c:627:8: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch] 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.