CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Thierry Reding <[email protected]>
CC: Bartosz Golaszewski <[email protected]>
CC: Linus Walleij <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   57ae8a492116910bad2b3497ffe555b3a4b4180f
commit: 2103868047456e5f3e431ebb253d87e1fb806c76 gpio: tegra186: Support 
multiple interrupts per bank
date:   7 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 7 months ago
config: riscv-randconfig-c006-20220427 
(https://download.01.org/0day-ci/archive/20220501/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
1cddcfdc3c683b393df1a5c9063252eb60e52818)
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/torvalds/linux.git/commit/?id=2103868047456e5f3e431ebb253d87e1fb806c76
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 2103868047456e5f3e431ebb253d87e1fb806c76
        # save the config file
        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 <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/dma/sun6i-dma.c:601:18: note: '?' condition is false
   drivers/dma/sun6i-dma.c:602:3: note:  Execution continues on line 607
                   break;
                   ^
   drivers/dma/sun6i-dma.c:607:6: note: Assuming the condition is false
           if (!(BIT(src_addr_width) & sdev->slave.src_addr_widths))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/dma/sun6i-dma.c:607:2: note: Taking false branch
           if (!(BIT(src_addr_width) & sdev->slave.src_addr_widths))
           ^
   drivers/dma/sun6i-dma.c:609:6: note: Assuming the condition is false
           if (!(BIT(dst_addr_width) & sdev->slave.dst_addr_widths))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/dma/sun6i-dma.c:609:2: note: Taking false branch
           if (!(BIT(dst_addr_width) & sdev->slave.dst_addr_widths))
           ^
   drivers/dma/sun6i-dma.c:611:6: note: Assuming the condition is false
           if (!(BIT(src_maxburst) & sdev->cfg->src_burst_lengths))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/dma/sun6i-dma.c:611:2: note: Taking false branch
           if (!(BIT(src_maxburst) & sdev->cfg->src_burst_lengths))
           ^
   drivers/dma/sun6i-dma.c:613:6: note: Assuming the condition is false
           if (!(BIT(dst_maxburst) & sdev->cfg->dst_burst_lengths))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/dma/sun6i-dma.c:613:2: note: Taking false branch
           if (!(BIT(dst_maxburst) & sdev->cfg->dst_burst_lengths))
           ^
   drivers/dma/sun6i-dma.c:626:2: note: Returning zero, which participates in a 
condition later
           return 0;
           ^~~~~~~~
   drivers/dma/sun6i-dma.c:779:8: note: Returning from 'set_config'
           ret = set_config(sdev, sconfig, dir, &lli_cfg);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/dma/sun6i-dma.c:780:6: note: 'ret' is 0
           if (ret) {
               ^~~
   drivers/dma/sun6i-dma.c:780:2: note: Taking false branch
           if (ret) {
           ^
   drivers/dma/sun6i-dma.c:785:8: note: Calling 'kzalloc'
           txd = kzalloc(sizeof(*txd), GFP_NOWAIT);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/slab.h:721:9: note: Calling 'kmalloc'
           return kmalloc(size, flags | __GFP_ZERO);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/slab.h:579:2: note: Taking false branch
           if (__builtin_constant_p(size)) {
           ^
   include/linux/slab.h:596:2: note: Returning pointer, which participates in a 
condition later
           return __kmalloc(size, flags);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/slab.h:721:9: note: Returning from 'kmalloc'
           return kmalloc(size, flags | __GFP_ZERO);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/slab.h:721:2: note: Returning pointer, which participates in a 
condition later
           return kmalloc(size, flags | __GFP_ZERO);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/dma/sun6i-dma.c:785:8: note: Returning from 'kzalloc'
           txd = kzalloc(sizeof(*txd), GFP_NOWAIT);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/dma/sun6i-dma.c:786:6: note: Assuming 'txd' is non-null
           if (!txd)
               ^~~~
   drivers/dma/sun6i-dma.c:786:2: note: Taking false branch
           if (!txd)
           ^
   drivers/dma/sun6i-dma.c:789:14: note: Assuming 'i' is >= 'periods'
           for (i = 0; i < periods; i++) {
                       ^~~~~~~~~~~
   drivers/dma/sun6i-dma.c:789:2: note: Loop condition is false. Execution 
continues on line 816
           for (i = 0; i < periods; i++) {
           ^
   drivers/dma/sun6i-dma.c:816:19: note: Access to field 'p_lli_next' results 
in a dereference of a null pointer (loaded from variable 'prev')
           prev->p_lli_next = txd->p_lli;          /* cyclic list */
           ~~~~             ^
   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.
   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.
   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.
   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.
   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/gpio/gpio-tegra186.c:577:17: warning: Value stored to 'dev' during 
>> its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = gpio->gpio.parent;
                          ^~~   ~~~~~~~~~~~~~~~~~
   drivers/gpio/gpio-tegra186.c:577:17: note: Value stored to 'dev' during its 
initialization is never read
           struct device *dev = gpio->gpio.parent;
                          ^~~   ~~~~~~~~~~~~~~~~~
   drivers/gpio/gpio-tegra186.c:616:6: warning: Value stored to 'value' is 
never read [clang-analyzer-deadcode.DeadStores]
                                           value = readl(base + offset);
                                           ^
   drivers/gpio/gpio-tegra186.c:616:6: note: Value stored to 'value' is never 
read
   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 (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.
   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 (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.
   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 (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.
   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 (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.
   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.
   4 warnings generated.
   drivers/regulator/bd9571mwv-regulator.c:91:6: warning: Assigned value is 
garbage or undefined [clang-analyzer-core.uninitialized.Assign]
           val >>= ffs(rdev->desc->vsel_mask) - 1;
               ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/regulator/bd9571mwv-regulator.c:83:6: note: Assuming 'ret' is >= 0
           if (ret < 0)
               ^~~~~~~
   drivers/regulator/bd9571mwv-regulator.c:83:2: note: Taking false branch
           if (ret < 0)
           ^
   drivers/regulator/bd9571mwv-regulator.c:87:6: note: Assuming 'ret' is equal 
to 0
           if (ret != 0)
               ^~~~~~~~
   drivers/regulator/bd9571mwv-regulator.c:87:2: note: Taking false branch
           if (ret != 0)
           ^
   drivers/regulator/bd9571mwv-regulator.c:91:6: note: Assigned value is 
garbage or undefined
           val >>= ffs(rdev->desc->vsel_mask) - 1;
               ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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.
   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.
   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.
   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.
   7 warnings generated.
   drivers/clk/clk-gemini.c:334:2: warning: Value stored to 'hw' is never read 
[clang-analyzer-deadcode.DeadStores]
           hw = clk_hw_register_fixed_factor(NULL, "secdiv", "ahb", 0, mult, 
div);
           ^    
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-gemini.c:334:2: note: Value stored to 'hw' is never read
           hw = clk_hw_register_fixed_factor(NULL, "secdiv", "ahb", 0, mult, 
div);
           ^    
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-gemini.c:359:2: warning: Value stored to 'mult' is never 
read [clang-analyzer-deadcode.DeadStores]
           mult = 1;
           ^      ~
   drivers/clk/clk-gemini.c:359:2: note: Value stored to 'mult' is never read
           mult = 1;
           ^      ~
   drivers/clk/clk-gemini.c:362:2: warning: Value stored to 'div' is never read 
[clang-analyzer-deadcode.DeadStores]
           div += 1;
           ^      ~
   drivers/clk/clk-gemini.c:362:2: note: Value stored to 'div' is never read
           div += 1;
           ^      ~
   drivers/clk/clk-gemini.c:440:2: warning: Value stored to 'hw' is never read 
[clang-analyzer-deadcode.DeadStores]
           hw = clk_hw_register_fixed_rate(NULL, "xtal", NULL, 0, freq);
           ^
   drivers/clk/clk-gemini.c:440:2: note: Value stored to 'hw' is never read
   drivers/clk/clk-gemini.c:449:2: warning: Value stored to 'hw' is never read 
[clang-analyzer-deadcode.DeadStores]
           hw = clk_hw_register_fixed_factor(NULL, "vco", "xtal", 0, mult, div);
           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vim +/dev +577 drivers/gpio/gpio-tegra186.c

5b2b135a87fcfb Thierry Reding 2017-11-07  574  
22635ed8a20d47 Thierry Reding 2019-11-08  575  static void 
tegra186_gpio_init_route_mapping(struct tegra_gpio *gpio)
22635ed8a20d47 Thierry Reding 2019-11-08  576  {
2103868047456e Thierry Reding 2021-09-17 @577   struct device *dev = 
gpio->gpio.parent;
22635ed8a20d47 Thierry Reding 2019-11-08  578   unsigned int i, j;
22635ed8a20d47 Thierry Reding 2019-11-08  579   u32 value;
22635ed8a20d47 Thierry Reding 2019-11-08  580  
22635ed8a20d47 Thierry Reding 2019-11-08  581   for (i = 0; i < 
gpio->soc->num_ports; i++) {
22635ed8a20d47 Thierry Reding 2019-11-08  582           const struct 
tegra_gpio_port *port = &gpio->soc->ports[i];
22635ed8a20d47 Thierry Reding 2019-11-08  583           unsigned int offset, p 
= port->port;
22635ed8a20d47 Thierry Reding 2019-11-08  584           void __iomem *base;
22635ed8a20d47 Thierry Reding 2019-11-08  585  
22635ed8a20d47 Thierry Reding 2019-11-08  586           base = gpio->secure + 
port->bank * 0x1000 + 0x800;
22635ed8a20d47 Thierry Reding 2019-11-08  587  
22635ed8a20d47 Thierry Reding 2019-11-08  588           value = readl(base + 
TEGRA186_GPIO_CTL_SCR);
22635ed8a20d47 Thierry Reding 2019-11-08  589  
22635ed8a20d47 Thierry Reding 2019-11-08  590           /*
22635ed8a20d47 Thierry Reding 2019-11-08  591            * For controllers that 
haven't been locked down yet, make
22635ed8a20d47 Thierry Reding 2019-11-08  592            * sure to program the 
default interrupt route mapping.
22635ed8a20d47 Thierry Reding 2019-11-08  593            */
22635ed8a20d47 Thierry Reding 2019-11-08  594           if ((value & 
TEGRA186_GPIO_CTL_SCR_SEC_REN) == 0 &&
22635ed8a20d47 Thierry Reding 2019-11-08  595               (value & 
TEGRA186_GPIO_CTL_SCR_SEC_WEN) == 0) {
2103868047456e Thierry Reding 2021-09-17  596                   /*
2103868047456e Thierry Reding 2021-09-17  597                    * On Tegra194 
and later, each pin can be routed to one or more
2103868047456e Thierry Reding 2021-09-17  598                    * interrupts.
2103868047456e Thierry Reding 2021-09-17  599                    */
2103868047456e Thierry Reding 2021-09-17  600                   for (j = 0; j < 
gpio->num_irqs_per_bank; j++) {
2103868047456e Thierry Reding 2021-09-17  601                           
dev_dbg(dev, "programming default interrupt routing for port %s\n",
2103868047456e Thierry Reding 2021-09-17  602                                   
port->name);
2103868047456e Thierry Reding 2021-09-17  603  
22635ed8a20d47 Thierry Reding 2019-11-08  604                           offset 
= TEGRA186_GPIO_INT_ROUTE_MAPPING(p, j);
22635ed8a20d47 Thierry Reding 2019-11-08  605  
2103868047456e Thierry Reding 2021-09-17  606                           /*
2103868047456e Thierry Reding 2021-09-17  607                            * By 
default we only want to route GPIO pins to IRQ 0. This works
2103868047456e Thierry Reding 2021-09-17  608                            * only 
under the assumption that we're running as the host kernel
2103868047456e Thierry Reding 2021-09-17  609                            * and 
hence all GPIO pins are owned by Linux.
2103868047456e Thierry Reding 2021-09-17  610                            *
2103868047456e Thierry Reding 2021-09-17  611                            * For 
cases where Linux is the guest OS, the hypervisor will have
2103868047456e Thierry Reding 2021-09-17  612                            * to 
configure the interrupt routing and pass only the valid
2103868047456e Thierry Reding 2021-09-17  613                            * 
interrupts via device tree.
2103868047456e Thierry Reding 2021-09-17  614                            */
2103868047456e Thierry Reding 2021-09-17  615                           if (j 
== 0) {
22635ed8a20d47 Thierry Reding 2019-11-08  616                                   
value = readl(base + offset);
22635ed8a20d47 Thierry Reding 2019-11-08  617                                   
value = BIT(port->pins) - 1;
22635ed8a20d47 Thierry Reding 2019-11-08  618                                   
writel(value, base + offset);
22635ed8a20d47 Thierry Reding 2019-11-08  619                           }
22635ed8a20d47 Thierry Reding 2019-11-08  620                   }
22635ed8a20d47 Thierry Reding 2019-11-08  621           }
22635ed8a20d47 Thierry Reding 2019-11-08  622   }
2103868047456e Thierry Reding 2021-09-17  623  }
22635ed8a20d47 Thierry Reding 2019-11-08  624  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to