All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/pci/controller/pcie-mediatek-gen3.c:239:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
@ 2022-03-12  9:55 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2022-03-12  9:55 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 21661 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Jianjun Wang <jianjun.wang@mediatek.com>
CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   68453767131a5deec1e8f9ac92a9042f929e585d
commit: d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192
date:   11 months ago
:::::: branch date: 13 hours ago
:::::: commit date: 11 months ago
config: riscv-randconfig-c006-20220307 (https://download.01.org/0day-ci/archive/20220312/202203121714.Vn3fLSiW-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
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=d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca
        # 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 >>)
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Taking false branch
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:300:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Loop condition is false.  Exiting loop
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Loop condition is true.  Entering loop body
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:237:7: note: Assuming 'type' is equal to IORESOURCE_IO
                   if (type == IORESOURCE_IO) {
                       ^~~~~~~~~~~~~~~~~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:237:3: note: Taking true branch
                   if (type == IORESOURCE_IO) {
                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:249:9: note: Calling 'mtk_pcie_set_trans_table'
                   err = mtk_pcie_set_trans_table(port, cpu_addr, pci_addr, size,
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:154:6: note: 'num' is < PCIE_MAX_TRANS_TABLES
           if (num >= PCIE_MAX_TRANS_TABLES) {
               ^~~
   drivers/pci/controller/pcie-mediatek-gen3.c:154:2: note: Taking false branch
           if (num >= PCIE_MAX_TRANS_TABLES) {
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:163:2: note: Loop condition is false.  Exiting loop
           writel_relaxed(lower_32_bits(cpu_addr) | PCIE_ATR_SIZE(fls(size) - 1),
           ^
   arch/riscv/include/asm/mmio.h:120:33: note: expanded from macro 'writel_relaxed'
   #define writel_relaxed(v, c)    ({ __io_rbw(); writel_cpu((v), (c)); __io_raw(); })
                                      ^
   arch/riscv/include/asm/mmio.h:111:21: note: expanded from macro '__io_rbw'
   #define __io_rbw()              do {} while (0)
                                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:163:43: note: The result of the left shift is undefined because the left operand is negative
           writel_relaxed(lower_32_bits(cpu_addr) | PCIE_ATR_SIZE(fls(size) - 1),
                                                    ^
   drivers/pci/controller/pcie-mediatek-gen3.c:58:18: note: expanded from macro 'PCIE_ATR_SIZE'
           (((((size) - 1) << 1) & GENMASK(6, 1)) | PCIE_ATR_EN)
                           ^
   arch/riscv/include/asm/mmio.h:120:57: note: expanded from macro 'writel_relaxed'
   #define writel_relaxed(v, c)    ({ __io_rbw(); writel_cpu((v), (c)); __io_raw(); })
                                                  ~~~~~~~~~~~~^~~~~~~~
   arch/riscv/include/asm/mmio.h:93:71: note: expanded from macro 'writel_cpu'
   #define writel_cpu(v, c)        ((void)__raw_writel((__force u32)cpu_to_le32(v), (c)))
                                                                    ~~~~~~~~~~~~^~
   include/uapi/linux/byteorder/little_endian.h:33:51: note: expanded from macro '__cpu_to_le32'
   #define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
                                                     ^
>> drivers/pci/controller/pcie-mediatek-gen3.c:239:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
                           range_type = "IO";
                           ^            ~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:239:4: note: Value stored to 'range_type' is never read
                           range_type = "IO";
                           ^            ~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:242:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
                           range_type = "MEM";
                           ^            ~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:242:4: note: Value stored to 'range_type' is never read
                           range_type = "MEM";
                           ^            ~~~~~
   Suppressed 7 warnings (7 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   15 warnings generated.
   Suppressed 15 warnings (15 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.
   15 warnings generated.
   Suppressed 15 warnings (15 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.

vim +/range_type +239 drivers/pci/controller/pcie-mediatek-gen3.c

d3bf75b579b980 Jianjun Wang 2021-04-20  181  
d3bf75b579b980 Jianjun Wang 2021-04-20  182  static int mtk_pcie_startup_port(struct mtk_pcie_port *port)
d3bf75b579b980 Jianjun Wang 2021-04-20  183  {
d3bf75b579b980 Jianjun Wang 2021-04-20  184  	struct resource_entry *entry;
d3bf75b579b980 Jianjun Wang 2021-04-20  185  	struct pci_host_bridge *host = pci_host_bridge_from_priv(port);
d3bf75b579b980 Jianjun Wang 2021-04-20  186  	unsigned int table_index = 0;
d3bf75b579b980 Jianjun Wang 2021-04-20  187  	int err;
d3bf75b579b980 Jianjun Wang 2021-04-20  188  	u32 val;
d3bf75b579b980 Jianjun Wang 2021-04-20  189  
d3bf75b579b980 Jianjun Wang 2021-04-20  190  	/* Set as RC mode */
d3bf75b579b980 Jianjun Wang 2021-04-20  191  	val = readl_relaxed(port->base + PCIE_SETTING_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  192  	val |= PCIE_RC_MODE;
d3bf75b579b980 Jianjun Wang 2021-04-20  193  	writel_relaxed(val, port->base + PCIE_SETTING_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  194  
d3bf75b579b980 Jianjun Wang 2021-04-20  195  	/* Set class code */
d3bf75b579b980 Jianjun Wang 2021-04-20  196  	val = readl_relaxed(port->base + PCIE_PCI_IDS_1);
d3bf75b579b980 Jianjun Wang 2021-04-20  197  	val &= ~GENMASK(31, 8);
d3bf75b579b980 Jianjun Wang 2021-04-20  198  	val |= PCI_CLASS(PCI_CLASS_BRIDGE_PCI << 8);
d3bf75b579b980 Jianjun Wang 2021-04-20  199  	writel_relaxed(val, port->base + PCIE_PCI_IDS_1);
d3bf75b579b980 Jianjun Wang 2021-04-20  200  
d3bf75b579b980 Jianjun Wang 2021-04-20  201  	/* Assert all reset signals */
d3bf75b579b980 Jianjun Wang 2021-04-20  202  	val = readl_relaxed(port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  203  	val |= PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB;
d3bf75b579b980 Jianjun Wang 2021-04-20  204  	writel_relaxed(val, port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  205  
d3bf75b579b980 Jianjun Wang 2021-04-20  206  	/*
d3bf75b579b980 Jianjun Wang 2021-04-20  207  	 * Described in PCIe CEM specification setctions 2.2 (PERST# Signal)
d3bf75b579b980 Jianjun Wang 2021-04-20  208  	 * and 2.2.1 (Initial Power-Up (G3 to S0)).
d3bf75b579b980 Jianjun Wang 2021-04-20  209  	 * The deassertion of PERST# should be delayed 100ms (TPVPERL)
d3bf75b579b980 Jianjun Wang 2021-04-20  210  	 * for the power and clock to become stable.
d3bf75b579b980 Jianjun Wang 2021-04-20  211  	 */
d3bf75b579b980 Jianjun Wang 2021-04-20  212  	msleep(100);
d3bf75b579b980 Jianjun Wang 2021-04-20  213  
d3bf75b579b980 Jianjun Wang 2021-04-20  214  	/* De-assert reset signals */
d3bf75b579b980 Jianjun Wang 2021-04-20  215  	val &= ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB);
d3bf75b579b980 Jianjun Wang 2021-04-20  216  	writel_relaxed(val, port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  217  
d3bf75b579b980 Jianjun Wang 2021-04-20  218  	/* Check if the link is up or not */
d3bf75b579b980 Jianjun Wang 2021-04-20  219  	err = readl_poll_timeout(port->base + PCIE_LINK_STATUS_REG, val,
d3bf75b579b980 Jianjun Wang 2021-04-20  220  				 !!(val & PCIE_PORT_LINKUP), 20,
d3bf75b579b980 Jianjun Wang 2021-04-20  221  				 PCI_PM_D3COLD_WAIT * USEC_PER_MSEC);
d3bf75b579b980 Jianjun Wang 2021-04-20  222  	if (err) {
d3bf75b579b980 Jianjun Wang 2021-04-20  223  		val = readl_relaxed(port->base + PCIE_LTSSM_STATUS_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  224  		dev_err(port->dev, "PCIe link down, ltssm reg val: %#x\n", val);
d3bf75b579b980 Jianjun Wang 2021-04-20  225  		return err;
d3bf75b579b980 Jianjun Wang 2021-04-20  226  	}
d3bf75b579b980 Jianjun Wang 2021-04-20  227  
d3bf75b579b980 Jianjun Wang 2021-04-20  228  	/* Set PCIe translation windows */
d3bf75b579b980 Jianjun Wang 2021-04-20  229  	resource_list_for_each_entry(entry, &host->windows) {
d3bf75b579b980 Jianjun Wang 2021-04-20  230  		struct resource *res = entry->res;
d3bf75b579b980 Jianjun Wang 2021-04-20  231  		unsigned long type = resource_type(res);
d3bf75b579b980 Jianjun Wang 2021-04-20  232  		resource_size_t cpu_addr;
d3bf75b579b980 Jianjun Wang 2021-04-20  233  		resource_size_t pci_addr;
d3bf75b579b980 Jianjun Wang 2021-04-20  234  		resource_size_t size;
d3bf75b579b980 Jianjun Wang 2021-04-20  235  		const char *range_type;
d3bf75b579b980 Jianjun Wang 2021-04-20  236  
d3bf75b579b980 Jianjun Wang 2021-04-20  237  		if (type == IORESOURCE_IO) {
d3bf75b579b980 Jianjun Wang 2021-04-20  238  			cpu_addr = pci_pio_to_address(res->start);
d3bf75b579b980 Jianjun Wang 2021-04-20 @239  			range_type = "IO";
d3bf75b579b980 Jianjun Wang 2021-04-20  240  		} else if (type == IORESOURCE_MEM) {
d3bf75b579b980 Jianjun Wang 2021-04-20  241  			cpu_addr = res->start;
d3bf75b579b980 Jianjun Wang 2021-04-20  242  			range_type = "MEM";
d3bf75b579b980 Jianjun Wang 2021-04-20  243  		} else {
d3bf75b579b980 Jianjun Wang 2021-04-20  244  			continue;
d3bf75b579b980 Jianjun Wang 2021-04-20  245  		}
d3bf75b579b980 Jianjun Wang 2021-04-20  246  
d3bf75b579b980 Jianjun Wang 2021-04-20  247  		pci_addr = res->start - entry->offset;
d3bf75b579b980 Jianjun Wang 2021-04-20  248  		size = resource_size(res);
d3bf75b579b980 Jianjun Wang 2021-04-20  249  		err = mtk_pcie_set_trans_table(port, cpu_addr, pci_addr, size,
d3bf75b579b980 Jianjun Wang 2021-04-20  250  					       type, table_index);
d3bf75b579b980 Jianjun Wang 2021-04-20  251  		if (err)
d3bf75b579b980 Jianjun Wang 2021-04-20  252  			return err;
d3bf75b579b980 Jianjun Wang 2021-04-20  253  
d3bf75b579b980 Jianjun Wang 2021-04-20  254  		dev_dbg(port->dev, "set %s trans window[%d]: cpu_addr = %#llx, pci_addr = %#llx, size = %#llx\n",
d3bf75b579b980 Jianjun Wang 2021-04-20  255  			range_type, table_index, (unsigned long long)cpu_addr,
d3bf75b579b980 Jianjun Wang 2021-04-20  256  			(unsigned long long)pci_addr, (unsigned long long)size);
d3bf75b579b980 Jianjun Wang 2021-04-20  257  
d3bf75b579b980 Jianjun Wang 2021-04-20  258  		table_index++;
d3bf75b579b980 Jianjun Wang 2021-04-20  259  	}
d3bf75b579b980 Jianjun Wang 2021-04-20  260  
d3bf75b579b980 Jianjun Wang 2021-04-20  261  	return 0;
d3bf75b579b980 Jianjun Wang 2021-04-20  262  }
d3bf75b579b980 Jianjun Wang 2021-04-20  263  

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

* drivers/pci/controller/pcie-mediatek-gen3.c:239:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
@ 2022-03-18  7:35 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2022-03-18  7:35 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 20179 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Jianjun Wang <jianjun.wang@mediatek.com>
CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   551acdc3c3d2b6bc97f11e31dcf960bc36343bfc
commit: d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192
date:   11 months ago
:::::: branch date: 12 hours ago
:::::: commit date: 11 months ago
config: riscv-randconfig-c006-20220307 (https://download.01.org/0day-ci/archive/20220318/202203181552.UVw8Fu8l-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
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=d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca
        # 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 >>)
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Taking false branch
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:300:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Loop condition is false.  Exiting loop
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Loop condition is true.  Entering loop body
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:237:7: note: Assuming 'type' is equal to IORESOURCE_IO
                   if (type == IORESOURCE_IO) {
                       ^~~~~~~~~~~~~~~~~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:237:3: note: Taking true branch
                   if (type == IORESOURCE_IO) {
                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:249:9: note: Calling 'mtk_pcie_set_trans_table'
                   err = mtk_pcie_set_trans_table(port, cpu_addr, pci_addr, size,
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:154:6: note: 'num' is < PCIE_MAX_TRANS_TABLES
           if (num >= PCIE_MAX_TRANS_TABLES) {
               ^~~
   drivers/pci/controller/pcie-mediatek-gen3.c:154:2: note: Taking false branch
           if (num >= PCIE_MAX_TRANS_TABLES) {
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:163:2: note: Loop condition is false.  Exiting loop
           writel_relaxed(lower_32_bits(cpu_addr) | PCIE_ATR_SIZE(fls(size) - 1),
           ^
   arch/riscv/include/asm/mmio.h:120:33: note: expanded from macro 'writel_relaxed'
   #define writel_relaxed(v, c)    ({ __io_rbw(); writel_cpu((v), (c)); __io_raw(); })
                                      ^
   arch/riscv/include/asm/mmio.h:111:21: note: expanded from macro '__io_rbw'
   #define __io_rbw()              do {} while (0)
                                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:163:43: note: The result of the left shift is undefined because the left operand is negative
           writel_relaxed(lower_32_bits(cpu_addr) | PCIE_ATR_SIZE(fls(size) - 1),
                                                    ^
   drivers/pci/controller/pcie-mediatek-gen3.c:58:18: note: expanded from macro 'PCIE_ATR_SIZE'
           (((((size) - 1) << 1) & GENMASK(6, 1)) | PCIE_ATR_EN)
                           ^
   arch/riscv/include/asm/mmio.h:120:57: note: expanded from macro 'writel_relaxed'
   #define writel_relaxed(v, c)    ({ __io_rbw(); writel_cpu((v), (c)); __io_raw(); })
                                                  ~~~~~~~~~~~~^~~~~~~~
   arch/riscv/include/asm/mmio.h:93:71: note: expanded from macro 'writel_cpu'
   #define writel_cpu(v, c)        ((void)__raw_writel((__force u32)cpu_to_le32(v), (c)))
                                                                    ~~~~~~~~~~~~^~
   include/uapi/linux/byteorder/little_endian.h:33:51: note: expanded from macro '__cpu_to_le32'
   #define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
                                                     ^
>> drivers/pci/controller/pcie-mediatek-gen3.c:239:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
                           range_type = "IO";
                           ^            ~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:239:4: note: Value stored to 'range_type' is never read
                           range_type = "IO";
                           ^            ~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:242:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
                           range_type = "MEM";
                           ^            ~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:242:4: note: Value stored to 'range_type' is never read
                           range_type = "MEM";
                           ^            ~~~~~
   Suppressed 7 warnings (7 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.
   Suppressed 7 warnings (7 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   17 warnings generated.
   security/keys/process_keys.c:95:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
           ret = 0;
           ^     ~
   security/keys/process_keys.c:95:2: note: Value stored to 'ret' is never read
           ret = 0;
           ^     ~
   security/keys/process_keys.c:676:11: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
                                   ret = install_session_keyring(user_session);
                                         ^                       ~~~~~~~~~~~~
   security/keys/process_keys.c:621:20: note: 'user_session' declared without an initial value
           struct key *key, *user_session;
                             ^~~~~~~~~~~~
   security/keys/process_keys.c:626:13: note: Left side of '&&' is false
           ctx.cred = get_current_cred();
                      ^
   include/linux/cred.h:330:12: note: expanded from macro 'get_current_cred'
           (get_cred(current_cred()))
                     ^
   include/linux/cred.h:298:2: note: expanded from macro 'current_cred'
           rcu_dereference_protected(current->cred, 1)
           ^
   include/linux/rcupdate.h:562:2: note: expanded from macro 'rcu_dereference_protected'
           __rcu_dereference_protected((p), (c), __rcu)
           ^
   include/linux/rcupdate.h:381:2: note: expanded from macro '__rcu_dereference_protected'
           RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_protected() usage"); \
           ^
   include/linux/rcupdate.h:345:48: note: expanded from macro 'RCU_LOCKDEP_WARN'
   #define RCU_LOCKDEP_WARN(c, s) do { } while (0 && (c))
                                                  ^
   security/keys/process_keys.c:626:13: note: Loop condition is false.  Exiting loop
           ctx.cred = get_current_cred();
                      ^
   include/linux/cred.h:330:12: note: expanded from macro 'get_current_cred'
           (get_cred(current_cred()))
                     ^
   include/linux/cred.h:298:2: note: expanded from macro 'current_cred'
           rcu_dereference_protected(current->cred, 1)
           ^
   include/linux/rcupdate.h:562:2: note: expanded from macro 'rcu_dereference_protected'
           __rcu_dereference_protected((p), (c), __rcu)
           ^
   include/linux/rcupdate.h:381:2: note: expanded from macro '__rcu_dereference_protected'
           RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_protected() usage"); \
           ^
   include/linux/rcupdate.h:345:32: note: expanded from macro 'RCU_LOCKDEP_WARN'
   #define RCU_LOCKDEP_WARN(c, s) do { } while (0 && (c))
                                  ^
   security/keys/process_keys.c:626:13: note: Calling 'get_cred'
           ctx.cred = get_current_cred();
                      ^
   include/linux/cred.h:330:3: note: expanded from macro 'get_current_cred'
           (get_cred(current_cred()))
            ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/cred.h:250:6: note: Assuming 'cred' is non-null
           if (!cred)
               ^~~~~
   include/linux/cred.h:250:2: note: Taking false branch
           if (!cred)
           ^
   include/linux/cred.h:252:2: note: Loop condition is false.  Exiting loop
           validate_creds(cred);
           ^
   include/linux/cred.h:191:33: note: expanded from macro 'validate_creds'
   #define validate_creds(cred)                            \
                                                           ^
   include/linux/cred.h:254:9: note: Calling 'get_new_cred'
           return get_new_cred(nonconst_cred);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/cred.h:231:2: note: Returning without writing to 'cred->session_keyring', which participates in a condition later
           return cred;
           ^
   include/linux/cred.h:254:9: note: Returning from 'get_new_cred'
           return get_new_cred(nonconst_cred);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   security/keys/process_keys.c:626:13: note: Returning from 'get_cred'
           ctx.cred = get_current_cred();
                      ^
   include/linux/cred.h:330:3: note: expanded from macro 'get_current_cred'
           (get_cred(current_cred()))

vim +/range_type +239 drivers/pci/controller/pcie-mediatek-gen3.c

d3bf75b579b980 Jianjun Wang 2021-04-20  181  
d3bf75b579b980 Jianjun Wang 2021-04-20  182  static int mtk_pcie_startup_port(struct mtk_pcie_port *port)
d3bf75b579b980 Jianjun Wang 2021-04-20  183  {
d3bf75b579b980 Jianjun Wang 2021-04-20  184  	struct resource_entry *entry;
d3bf75b579b980 Jianjun Wang 2021-04-20  185  	struct pci_host_bridge *host = pci_host_bridge_from_priv(port);
d3bf75b579b980 Jianjun Wang 2021-04-20  186  	unsigned int table_index = 0;
d3bf75b579b980 Jianjun Wang 2021-04-20  187  	int err;
d3bf75b579b980 Jianjun Wang 2021-04-20  188  	u32 val;
d3bf75b579b980 Jianjun Wang 2021-04-20  189  
d3bf75b579b980 Jianjun Wang 2021-04-20  190  	/* Set as RC mode */
d3bf75b579b980 Jianjun Wang 2021-04-20  191  	val = readl_relaxed(port->base + PCIE_SETTING_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  192  	val |= PCIE_RC_MODE;
d3bf75b579b980 Jianjun Wang 2021-04-20  193  	writel_relaxed(val, port->base + PCIE_SETTING_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  194  
d3bf75b579b980 Jianjun Wang 2021-04-20  195  	/* Set class code */
d3bf75b579b980 Jianjun Wang 2021-04-20  196  	val = readl_relaxed(port->base + PCIE_PCI_IDS_1);
d3bf75b579b980 Jianjun Wang 2021-04-20  197  	val &= ~GENMASK(31, 8);
d3bf75b579b980 Jianjun Wang 2021-04-20  198  	val |= PCI_CLASS(PCI_CLASS_BRIDGE_PCI << 8);
d3bf75b579b980 Jianjun Wang 2021-04-20  199  	writel_relaxed(val, port->base + PCIE_PCI_IDS_1);
d3bf75b579b980 Jianjun Wang 2021-04-20  200  
d3bf75b579b980 Jianjun Wang 2021-04-20  201  	/* Assert all reset signals */
d3bf75b579b980 Jianjun Wang 2021-04-20  202  	val = readl_relaxed(port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  203  	val |= PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB;
d3bf75b579b980 Jianjun Wang 2021-04-20  204  	writel_relaxed(val, port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  205  
d3bf75b579b980 Jianjun Wang 2021-04-20  206  	/*
d3bf75b579b980 Jianjun Wang 2021-04-20  207  	 * Described in PCIe CEM specification setctions 2.2 (PERST# Signal)
d3bf75b579b980 Jianjun Wang 2021-04-20  208  	 * and 2.2.1 (Initial Power-Up (G3 to S0)).
d3bf75b579b980 Jianjun Wang 2021-04-20  209  	 * The deassertion of PERST# should be delayed 100ms (TPVPERL)
d3bf75b579b980 Jianjun Wang 2021-04-20  210  	 * for the power and clock to become stable.
d3bf75b579b980 Jianjun Wang 2021-04-20  211  	 */
d3bf75b579b980 Jianjun Wang 2021-04-20  212  	msleep(100);
d3bf75b579b980 Jianjun Wang 2021-04-20  213  
d3bf75b579b980 Jianjun Wang 2021-04-20  214  	/* De-assert reset signals */
d3bf75b579b980 Jianjun Wang 2021-04-20  215  	val &= ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB);
d3bf75b579b980 Jianjun Wang 2021-04-20  216  	writel_relaxed(val, port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  217  
d3bf75b579b980 Jianjun Wang 2021-04-20  218  	/* Check if the link is up or not */
d3bf75b579b980 Jianjun Wang 2021-04-20  219  	err = readl_poll_timeout(port->base + PCIE_LINK_STATUS_REG, val,
d3bf75b579b980 Jianjun Wang 2021-04-20  220  				 !!(val & PCIE_PORT_LINKUP), 20,
d3bf75b579b980 Jianjun Wang 2021-04-20  221  				 PCI_PM_D3COLD_WAIT * USEC_PER_MSEC);
d3bf75b579b980 Jianjun Wang 2021-04-20  222  	if (err) {
d3bf75b579b980 Jianjun Wang 2021-04-20  223  		val = readl_relaxed(port->base + PCIE_LTSSM_STATUS_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  224  		dev_err(port->dev, "PCIe link down, ltssm reg val: %#x\n", val);
d3bf75b579b980 Jianjun Wang 2021-04-20  225  		return err;
d3bf75b579b980 Jianjun Wang 2021-04-20  226  	}
d3bf75b579b980 Jianjun Wang 2021-04-20  227  
d3bf75b579b980 Jianjun Wang 2021-04-20  228  	/* Set PCIe translation windows */
d3bf75b579b980 Jianjun Wang 2021-04-20  229  	resource_list_for_each_entry(entry, &host->windows) {
d3bf75b579b980 Jianjun Wang 2021-04-20  230  		struct resource *res = entry->res;
d3bf75b579b980 Jianjun Wang 2021-04-20  231  		unsigned long type = resource_type(res);
d3bf75b579b980 Jianjun Wang 2021-04-20  232  		resource_size_t cpu_addr;
d3bf75b579b980 Jianjun Wang 2021-04-20  233  		resource_size_t pci_addr;
d3bf75b579b980 Jianjun Wang 2021-04-20  234  		resource_size_t size;
d3bf75b579b980 Jianjun Wang 2021-04-20  235  		const char *range_type;
d3bf75b579b980 Jianjun Wang 2021-04-20  236  
d3bf75b579b980 Jianjun Wang 2021-04-20  237  		if (type == IORESOURCE_IO) {
d3bf75b579b980 Jianjun Wang 2021-04-20  238  			cpu_addr = pci_pio_to_address(res->start);
d3bf75b579b980 Jianjun Wang 2021-04-20 @239  			range_type = "IO";
d3bf75b579b980 Jianjun Wang 2021-04-20  240  		} else if (type == IORESOURCE_MEM) {
d3bf75b579b980 Jianjun Wang 2021-04-20  241  			cpu_addr = res->start;
d3bf75b579b980 Jianjun Wang 2021-04-20  242  			range_type = "MEM";
d3bf75b579b980 Jianjun Wang 2021-04-20  243  		} else {
d3bf75b579b980 Jianjun Wang 2021-04-20  244  			continue;
d3bf75b579b980 Jianjun Wang 2021-04-20  245  		}
d3bf75b579b980 Jianjun Wang 2021-04-20  246  
d3bf75b579b980 Jianjun Wang 2021-04-20  247  		pci_addr = res->start - entry->offset;
d3bf75b579b980 Jianjun Wang 2021-04-20  248  		size = resource_size(res);
d3bf75b579b980 Jianjun Wang 2021-04-20  249  		err = mtk_pcie_set_trans_table(port, cpu_addr, pci_addr, size,
d3bf75b579b980 Jianjun Wang 2021-04-20  250  					       type, table_index);
d3bf75b579b980 Jianjun Wang 2021-04-20  251  		if (err)
d3bf75b579b980 Jianjun Wang 2021-04-20  252  			return err;
d3bf75b579b980 Jianjun Wang 2021-04-20  253  
d3bf75b579b980 Jianjun Wang 2021-04-20  254  		dev_dbg(port->dev, "set %s trans window[%d]: cpu_addr = %#llx, pci_addr = %#llx, size = %#llx\n",
d3bf75b579b980 Jianjun Wang 2021-04-20  255  			range_type, table_index, (unsigned long long)cpu_addr,
d3bf75b579b980 Jianjun Wang 2021-04-20  256  			(unsigned long long)pci_addr, (unsigned long long)size);
d3bf75b579b980 Jianjun Wang 2021-04-20  257  
d3bf75b579b980 Jianjun Wang 2021-04-20  258  		table_index++;
d3bf75b579b980 Jianjun Wang 2021-04-20  259  	}
d3bf75b579b980 Jianjun Wang 2021-04-20  260  
d3bf75b579b980 Jianjun Wang 2021-04-20  261  	return 0;
d3bf75b579b980 Jianjun Wang 2021-04-20  262  }
d3bf75b579b980 Jianjun Wang 2021-04-20  263  

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

* drivers/pci/controller/pcie-mediatek-gen3.c:239:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
@ 2022-03-15  8:47 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2022-03-15  8:47 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 21317 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Jianjun Wang <jianjun.wang@mediatek.com>
CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   09688c0166e76ce2fb85e86b9d99be8b0084cdf9
commit: d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192
date:   11 months ago
:::::: branch date: 2 days ago
:::::: commit date: 11 months ago
config: riscv-randconfig-c006-20220307 (https://download.01.org/0day-ci/archive/20220315/202203151649.ilNVofK9-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
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=d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout d3bf75b579b980b9d83a76d3b4d8bfb9f55b24ca
        # 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 >>)
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Taking false branch
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:300:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Loop condition is false.  Exiting loop
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:229:2: note: Loop condition is true.  Entering loop body
           resource_list_for_each_entry(entry, &host->windows) {
           ^
   include/linux/resource_ext.h:64:2: note: expanded from macro 'resource_list_for_each_entry'
           list_for_each_entry((entry), (list), node)
           ^
   include/linux/list.h:628:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:237:7: note: Assuming 'type' is equal to IORESOURCE_IO
                   if (type == IORESOURCE_IO) {
                       ^~~~~~~~~~~~~~~~~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:237:3: note: Taking true branch
                   if (type == IORESOURCE_IO) {
                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:249:9: note: Calling 'mtk_pcie_set_trans_table'
                   err = mtk_pcie_set_trans_table(port, cpu_addr, pci_addr, size,
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:154:6: note: 'num' is < PCIE_MAX_TRANS_TABLES
           if (num >= PCIE_MAX_TRANS_TABLES) {
               ^~~
   drivers/pci/controller/pcie-mediatek-gen3.c:154:2: note: Taking false branch
           if (num >= PCIE_MAX_TRANS_TABLES) {
           ^
   drivers/pci/controller/pcie-mediatek-gen3.c:163:2: note: Loop condition is false.  Exiting loop
           writel_relaxed(lower_32_bits(cpu_addr) | PCIE_ATR_SIZE(fls(size) - 1),
           ^
   arch/riscv/include/asm/mmio.h:120:33: note: expanded from macro 'writel_relaxed'
   #define writel_relaxed(v, c)    ({ __io_rbw(); writel_cpu((v), (c)); __io_raw(); })
                                      ^
   arch/riscv/include/asm/mmio.h:111:21: note: expanded from macro '__io_rbw'
   #define __io_rbw()              do {} while (0)
                                   ^
   drivers/pci/controller/pcie-mediatek-gen3.c:163:43: note: The result of the left shift is undefined because the left operand is negative
           writel_relaxed(lower_32_bits(cpu_addr) | PCIE_ATR_SIZE(fls(size) - 1),
                                                    ^
   drivers/pci/controller/pcie-mediatek-gen3.c:58:18: note: expanded from macro 'PCIE_ATR_SIZE'
           (((((size) - 1) << 1) & GENMASK(6, 1)) | PCIE_ATR_EN)
                           ^
   arch/riscv/include/asm/mmio.h:120:57: note: expanded from macro 'writel_relaxed'
   #define writel_relaxed(v, c)    ({ __io_rbw(); writel_cpu((v), (c)); __io_raw(); })
                                                  ~~~~~~~~~~~~^~~~~~~~
   arch/riscv/include/asm/mmio.h:93:71: note: expanded from macro 'writel_cpu'
   #define writel_cpu(v, c)        ((void)__raw_writel((__force u32)cpu_to_le32(v), (c)))
                                                                    ~~~~~~~~~~~~^~
   include/uapi/linux/byteorder/little_endian.h:33:51: note: expanded from macro '__cpu_to_le32'
   #define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
                                                     ^
>> drivers/pci/controller/pcie-mediatek-gen3.c:239:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
                           range_type = "IO";
                           ^            ~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:239:4: note: Value stored to 'range_type' is never read
                           range_type = "IO";
                           ^            ~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:242:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores]
                           range_type = "MEM";
                           ^            ~~~~~
   drivers/pci/controller/pcie-mediatek-gen3.c:242:4: note: Value stored to 'range_type' is never read
                           range_type = "MEM";
                           ^            ~~~~~
   Suppressed 7 warnings (7 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.
   10 warnings generated.
   drivers/pci/controller/dwc/pci-keystone.c:260:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = pci->dev;
                          ^~~   ~~~~~~~~
   drivers/pci/controller/dwc/pci-keystone.c:260:17: note: Value stored to 'dev' during its initialization is never read
           struct device *dev = pci->dev;
                          ^~~   ~~~~~~~~
   drivers/pci/controller/dwc/pci-keystone.c:574:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = pci->dev;
                          ^~~   ~~~~~~~~
   drivers/pci/controller/dwc/pci-keystone.c:574:17: note: Value stored to 'dev' during its initialization is never read
           struct device *dev = pci->dev;
                          ^~~   ~~~~~~~~
   drivers/pci/controller/dwc/pci-keystone.c:619:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = pci->dev;
                          ^~~   ~~~~~~~~
   drivers/pci/controller/dwc/pci-keystone.c:619:17: note: Value stored to 'dev' during its initialization is never read
           struct device *dev = pci->dev;
                          ^~~   ~~~~~~~~
   Suppressed 7 warnings (7 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.
   Suppressed 7 warnings (7 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.
   6 warnings generated.
   drivers/pci/controller/dwc/pcie-artpec6.c:243:18: warning: Value stored to 'pci' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct dw_pcie *pci = artpec6_pcie->pci;
                           ^~~   ~~~~~~~~~~~~~~~~~
   drivers/pci/controller/dwc/pcie-artpec6.c:243:18: note: Value stored to 'pci' during its initialization is never read
           struct dw_pcie *pci = artpec6_pcie->pci;
                           ^~~   ~~~~~~~~~~~~~~~~~
   Suppressed 5 warnings (5 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.
   8 warnings generated.
   Suppressed 8 warnings (7 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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   6 warnings generated.
   Suppressed 6 warnings (6 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.
   lib/radix-tree.c:1045:3: warning: 4th function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
                   node_tag_clear(root, parent, tag, offset);
                   ^                                 ~~~~~~
   lib/radix-tree.c:1031:2: note: 'offset' declared without an initial value
           int offset;
           ^~~~~~~~~~
   lib/radix-tree.c:1034:6: note: Assuming 'index' is <= 'maxindex'
           if (index > maxindex)
               ^~~~~~~~~~~~~~~~
   lib/radix-tree.c:1034:2: note: Taking false branch
           if (index > maxindex)
           ^
   lib/radix-tree.c:1039:2: note: Loop condition is false. Execution continues on line 1044
           while (radix_tree_is_internal_node(node)) {
           ^
   lib/radix-tree.c:1044:6: note: Assuming 'node' is non-null
           if (node)
               ^~~~
   lib/radix-tree.c:1044:2: note: Taking true branch
           if (node)
           ^
   lib/radix-tree.c:1045:3: note: 4th function call argument is an uninitialized value
                   node_tag_clear(root, parent, tag, offset);
                   ^                                 ~~~~~~
   Suppressed 6 warnings (5 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.
   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.
   5 warnings generated.
   Suppressed 5 warnings (5 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.

vim +/range_type +239 drivers/pci/controller/pcie-mediatek-gen3.c

d3bf75b579b980 Jianjun Wang 2021-04-20  181  
d3bf75b579b980 Jianjun Wang 2021-04-20  182  static int mtk_pcie_startup_port(struct mtk_pcie_port *port)
d3bf75b579b980 Jianjun Wang 2021-04-20  183  {
d3bf75b579b980 Jianjun Wang 2021-04-20  184  	struct resource_entry *entry;
d3bf75b579b980 Jianjun Wang 2021-04-20  185  	struct pci_host_bridge *host = pci_host_bridge_from_priv(port);
d3bf75b579b980 Jianjun Wang 2021-04-20  186  	unsigned int table_index = 0;
d3bf75b579b980 Jianjun Wang 2021-04-20  187  	int err;
d3bf75b579b980 Jianjun Wang 2021-04-20  188  	u32 val;
d3bf75b579b980 Jianjun Wang 2021-04-20  189  
d3bf75b579b980 Jianjun Wang 2021-04-20  190  	/* Set as RC mode */
d3bf75b579b980 Jianjun Wang 2021-04-20  191  	val = readl_relaxed(port->base + PCIE_SETTING_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  192  	val |= PCIE_RC_MODE;
d3bf75b579b980 Jianjun Wang 2021-04-20  193  	writel_relaxed(val, port->base + PCIE_SETTING_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  194  
d3bf75b579b980 Jianjun Wang 2021-04-20  195  	/* Set class code */
d3bf75b579b980 Jianjun Wang 2021-04-20  196  	val = readl_relaxed(port->base + PCIE_PCI_IDS_1);
d3bf75b579b980 Jianjun Wang 2021-04-20  197  	val &= ~GENMASK(31, 8);
d3bf75b579b980 Jianjun Wang 2021-04-20  198  	val |= PCI_CLASS(PCI_CLASS_BRIDGE_PCI << 8);
d3bf75b579b980 Jianjun Wang 2021-04-20  199  	writel_relaxed(val, port->base + PCIE_PCI_IDS_1);
d3bf75b579b980 Jianjun Wang 2021-04-20  200  
d3bf75b579b980 Jianjun Wang 2021-04-20  201  	/* Assert all reset signals */
d3bf75b579b980 Jianjun Wang 2021-04-20  202  	val = readl_relaxed(port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  203  	val |= PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB;
d3bf75b579b980 Jianjun Wang 2021-04-20  204  	writel_relaxed(val, port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  205  
d3bf75b579b980 Jianjun Wang 2021-04-20  206  	/*
d3bf75b579b980 Jianjun Wang 2021-04-20  207  	 * Described in PCIe CEM specification setctions 2.2 (PERST# Signal)
d3bf75b579b980 Jianjun Wang 2021-04-20  208  	 * and 2.2.1 (Initial Power-Up (G3 to S0)).
d3bf75b579b980 Jianjun Wang 2021-04-20  209  	 * The deassertion of PERST# should be delayed 100ms (TPVPERL)
d3bf75b579b980 Jianjun Wang 2021-04-20  210  	 * for the power and clock to become stable.
d3bf75b579b980 Jianjun Wang 2021-04-20  211  	 */
d3bf75b579b980 Jianjun Wang 2021-04-20  212  	msleep(100);
d3bf75b579b980 Jianjun Wang 2021-04-20  213  
d3bf75b579b980 Jianjun Wang 2021-04-20  214  	/* De-assert reset signals */
d3bf75b579b980 Jianjun Wang 2021-04-20  215  	val &= ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB);
d3bf75b579b980 Jianjun Wang 2021-04-20  216  	writel_relaxed(val, port->base + PCIE_RST_CTRL_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  217  
d3bf75b579b980 Jianjun Wang 2021-04-20  218  	/* Check if the link is up or not */
d3bf75b579b980 Jianjun Wang 2021-04-20  219  	err = readl_poll_timeout(port->base + PCIE_LINK_STATUS_REG, val,
d3bf75b579b980 Jianjun Wang 2021-04-20  220  				 !!(val & PCIE_PORT_LINKUP), 20,
d3bf75b579b980 Jianjun Wang 2021-04-20  221  				 PCI_PM_D3COLD_WAIT * USEC_PER_MSEC);
d3bf75b579b980 Jianjun Wang 2021-04-20  222  	if (err) {
d3bf75b579b980 Jianjun Wang 2021-04-20  223  		val = readl_relaxed(port->base + PCIE_LTSSM_STATUS_REG);
d3bf75b579b980 Jianjun Wang 2021-04-20  224  		dev_err(port->dev, "PCIe link down, ltssm reg val: %#x\n", val);
d3bf75b579b980 Jianjun Wang 2021-04-20  225  		return err;
d3bf75b579b980 Jianjun Wang 2021-04-20  226  	}
d3bf75b579b980 Jianjun Wang 2021-04-20  227  
d3bf75b579b980 Jianjun Wang 2021-04-20  228  	/* Set PCIe translation windows */
d3bf75b579b980 Jianjun Wang 2021-04-20  229  	resource_list_for_each_entry(entry, &host->windows) {
d3bf75b579b980 Jianjun Wang 2021-04-20  230  		struct resource *res = entry->res;
d3bf75b579b980 Jianjun Wang 2021-04-20  231  		unsigned long type = resource_type(res);
d3bf75b579b980 Jianjun Wang 2021-04-20  232  		resource_size_t cpu_addr;
d3bf75b579b980 Jianjun Wang 2021-04-20  233  		resource_size_t pci_addr;
d3bf75b579b980 Jianjun Wang 2021-04-20  234  		resource_size_t size;
d3bf75b579b980 Jianjun Wang 2021-04-20  235  		const char *range_type;
d3bf75b579b980 Jianjun Wang 2021-04-20  236  
d3bf75b579b980 Jianjun Wang 2021-04-20  237  		if (type == IORESOURCE_IO) {
d3bf75b579b980 Jianjun Wang 2021-04-20  238  			cpu_addr = pci_pio_to_address(res->start);
d3bf75b579b980 Jianjun Wang 2021-04-20 @239  			range_type = "IO";
d3bf75b579b980 Jianjun Wang 2021-04-20  240  		} else if (type == IORESOURCE_MEM) {
d3bf75b579b980 Jianjun Wang 2021-04-20  241  			cpu_addr = res->start;
d3bf75b579b980 Jianjun Wang 2021-04-20  242  			range_type = "MEM";
d3bf75b579b980 Jianjun Wang 2021-04-20  243  		} else {
d3bf75b579b980 Jianjun Wang 2021-04-20  244  			continue;
d3bf75b579b980 Jianjun Wang 2021-04-20  245  		}
d3bf75b579b980 Jianjun Wang 2021-04-20  246  
d3bf75b579b980 Jianjun Wang 2021-04-20  247  		pci_addr = res->start - entry->offset;
d3bf75b579b980 Jianjun Wang 2021-04-20  248  		size = resource_size(res);
d3bf75b579b980 Jianjun Wang 2021-04-20  249  		err = mtk_pcie_set_trans_table(port, cpu_addr, pci_addr, size,
d3bf75b579b980 Jianjun Wang 2021-04-20  250  					       type, table_index);
d3bf75b579b980 Jianjun Wang 2021-04-20  251  		if (err)
d3bf75b579b980 Jianjun Wang 2021-04-20  252  			return err;
d3bf75b579b980 Jianjun Wang 2021-04-20  253  
d3bf75b579b980 Jianjun Wang 2021-04-20  254  		dev_dbg(port->dev, "set %s trans window[%d]: cpu_addr = %#llx, pci_addr = %#llx, size = %#llx\n",
d3bf75b579b980 Jianjun Wang 2021-04-20  255  			range_type, table_index, (unsigned long long)cpu_addr,
d3bf75b579b980 Jianjun Wang 2021-04-20  256  			(unsigned long long)pci_addr, (unsigned long long)size);
d3bf75b579b980 Jianjun Wang 2021-04-20  257  
d3bf75b579b980 Jianjun Wang 2021-04-20  258  		table_index++;
d3bf75b579b980 Jianjun Wang 2021-04-20  259  	}
d3bf75b579b980 Jianjun Wang 2021-04-20  260  
d3bf75b579b980 Jianjun Wang 2021-04-20  261  	return 0;
d3bf75b579b980 Jianjun Wang 2021-04-20  262  }
d3bf75b579b980 Jianjun Wang 2021-04-20  263  

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-03-18  7:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-12  9:55 drivers/pci/controller/pcie-mediatek-gen3.c:239:4: warning: Value stored to 'range_type' is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
2022-03-15  8:47 kernel test robot
2022-03-18  7:35 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.