All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.