:::::: :::::: Manual check reason: "low confidence static check warning: drivers/memory/tegra/tegra20-emc.c:645:3: warning: Value stored to 'dram_type_str' is never read [clang-analyzer-deadcode.DeadStores]" ::::::
BCC: l...@intel.com CC: l...@lists.linux.dev CC: kbuild-...@lists.01.org CC: linux-ker...@vger.kernel.org TO: Dmitry Osipenko <dig...@gmail.com> CC: Krzysztof Kozlowski <k...@kernel.org> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 3cc40a443a04d52b0c95255dce264068b01e9bfe commit: 131dd9a436d8f6dbaf3d9597803765d271b2fc19 memory: tegra20-emc: Support matching timings by LPDDR2 configuration date: 10 months ago :::::: branch date: 2 hours ago :::::: commit date: 10 months ago config: arm-randconfig-c002-20220814 (https://download.01.org/0day-ci/archive/20220817/202208170440.tt3tsh2c-...@intel.com/config) compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 3329cec2f79185bafd678f310fafadba2a8c76d2) 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 arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=131dd9a436d8f6dbaf3d9597803765d271b2fc19 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 131dd9a436d8f6dbaf3d9597803765d271b2fc19 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <l...@intel.com> clang-analyzer warnings: (new ones prefixed by >>) 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. 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. 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. 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. drivers/hwmon/occ/common.c:1109:3: warning: Value stored to 'old_offset' is never read [clang-analyzer-deadcode.DeadStores] old_offset = offset; ^ ~~~~~~ drivers/hwmon/occ/common.c:1109:3: note: Value stored to 'old_offset' is never read old_offset = offset; ^ ~~~~~~ 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. 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. 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. 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. 6 warnings generated. >> drivers/memory/tegra/tegra20-emc.c:645:3: warning: Value stored to >> 'dram_type_str' is never read [clang-analyzer-deadcode.DeadStores] dram_type_str = "INVALID"; ^ ~~~~~~~~~ drivers/memory/tegra/tegra20-emc.c:645:3: note: Value stored to 'dram_type_str' is never read dram_type_str = "INVALID"; ^ ~~~~~~~~~ drivers/memory/tegra/tegra20-emc.c:648:3: warning: Value stored to 'dram_type_str' is never read [clang-analyzer-deadcode.DeadStores] dram_type_str = "DDR1"; ^ ~~~~~~ drivers/memory/tegra/tegra20-emc.c:648:3: note: Value stored to 'dram_type_str' is never read dram_type_str = "DDR1"; ^ ~~~~~~ drivers/memory/tegra/tegra20-emc.c:651:3: warning: Value stored to 'dram_type_str' is never read [clang-analyzer-deadcode.DeadStores] dram_type_str = "LPDDR2"; ^ ~~~~~~~~ drivers/memory/tegra/tegra20-emc.c:651:3: note: Value stored to 'dram_type_str' is never read dram_type_str = "LPDDR2"; ^ ~~~~~~~~ drivers/memory/tegra/tegra20-emc.c:654:3: warning: Value stored to 'dram_type_str' is never read [clang-analyzer-deadcode.DeadStores] dram_type_str = "DDR2"; ^ ~~~~~~ drivers/memory/tegra/tegra20-emc.c:654:3: note: Value stored to 'dram_type_str' is never read dram_type_str = "DDR2"; ^ ~~~~~~ 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. 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. 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. 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. 3 warnings generated. include/linux/etherdevice.h:121:2: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] u16 a = *(const u16 *)addr; ^ net/llc/llc_sap.c:425:2: note: Calling 'llc_pdu_decode_da' llc_pdu_decode_da(skb, laddr.mac); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/net/llc_pdu.h:278:6: note: Assuming the condition is false if (skb->protocol == htons(ETH_P_802_2)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/net/llc_pdu.h:278:2: note: Taking false branch if (skb->protocol == htons(ETH_P_802_2)) ^ net/llc/llc_sap.c:425:2: note: Returning from 'llc_pdu_decode_da' llc_pdu_decode_da(skb, laddr.mac); vim +/dram_type_str +645 drivers/memory/tegra/tegra20-emc.c 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 595 96e5da7c842424 Dmitry Osipenko 2018-10-21 596 static int emc_setup_hw(struct tegra_emc *emc) 96e5da7c842424 Dmitry Osipenko 2018-10-21 597 { 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 598 u32 emc_cfg, emc_dbg, emc_fbio, emc_adr_cfg; adbcec8862cd7e Dmitry Osipenko 2020-03-19 599 u32 intmask = EMC_REFRESH_OVERFLOW_INT; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 600 static bool print_sdram_info_once; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 601 enum emc_dram_type dram_type; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 602 const char *dram_type_str; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 603 unsigned int emem_numdev; 96e5da7c842424 Dmitry Osipenko 2018-10-21 604 96e5da7c842424 Dmitry Osipenko 2018-10-21 605 emc_cfg = readl_relaxed(emc->regs + EMC_CFG_2); 96e5da7c842424 Dmitry Osipenko 2018-10-21 606 96e5da7c842424 Dmitry Osipenko 2018-10-21 607 /* 96e5da7c842424 Dmitry Osipenko 2018-10-21 608 * Depending on a memory type, DRAM should enter either self-refresh 96e5da7c842424 Dmitry Osipenko 2018-10-21 609 * or power-down state on EMC clock change. 96e5da7c842424 Dmitry Osipenko 2018-10-21 610 */ 96e5da7c842424 Dmitry Osipenko 2018-10-21 611 if (!(emc_cfg & EMC_CLKCHANGE_PD_ENABLE) && 96e5da7c842424 Dmitry Osipenko 2018-10-21 612 !(emc_cfg & EMC_CLKCHANGE_SR_ENABLE)) { 96e5da7c842424 Dmitry Osipenko 2018-10-21 613 dev_err(emc->dev, 96e5da7c842424 Dmitry Osipenko 2018-10-21 614 "bootloader didn't specify DRAM auto-suspend mode\n"); 96e5da7c842424 Dmitry Osipenko 2018-10-21 615 return -EINVAL; 96e5da7c842424 Dmitry Osipenko 2018-10-21 616 } 96e5da7c842424 Dmitry Osipenko 2018-10-21 617 96e5da7c842424 Dmitry Osipenko 2018-10-21 618 /* enable EMC and CAR to handshake on PLL divider/source changes */ 96e5da7c842424 Dmitry Osipenko 2018-10-21 619 emc_cfg |= EMC_CLKCHANGE_REQ_ENABLE; 96e5da7c842424 Dmitry Osipenko 2018-10-21 620 writel_relaxed(emc_cfg, emc->regs + EMC_CFG_2); 96e5da7c842424 Dmitry Osipenko 2018-10-21 621 96e5da7c842424 Dmitry Osipenko 2018-10-21 622 /* initialize interrupt */ 96e5da7c842424 Dmitry Osipenko 2018-10-21 623 writel_relaxed(intmask, emc->regs + EMC_INTMASK); 96e5da7c842424 Dmitry Osipenko 2018-10-21 624 writel_relaxed(intmask, emc->regs + EMC_INTSTATUS); 96e5da7c842424 Dmitry Osipenko 2018-10-21 625 c72396f941fb9d Dmitry Osipenko 2019-08-12 626 /* ensure that unwanted debug features are disabled */ c72396f941fb9d Dmitry Osipenko 2019-08-12 627 emc_dbg = readl_relaxed(emc->regs + EMC_DBG); c72396f941fb9d Dmitry Osipenko 2019-08-12 628 emc_dbg |= EMC_DBG_CFG_PRIORITY; c72396f941fb9d Dmitry Osipenko 2019-08-12 629 emc_dbg &= ~EMC_DBG_READ_MUX_ASSEMBLY; c72396f941fb9d Dmitry Osipenko 2019-08-12 630 emc_dbg &= ~EMC_DBG_WRITE_MUX_ACTIVE; c72396f941fb9d Dmitry Osipenko 2019-08-12 631 emc_dbg &= ~EMC_DBG_FORCE_UPDATE; c72396f941fb9d Dmitry Osipenko 2019-08-12 632 writel_relaxed(emc_dbg, emc->regs + EMC_DBG); c72396f941fb9d Dmitry Osipenko 2019-08-12 633 d5ef16ba5fbe12 Dmitry Osipenko 2020-11-04 634 emc_fbio = readl_relaxed(emc->regs + EMC_FBIO_CFG5); d5ef16ba5fbe12 Dmitry Osipenko 2020-11-04 635 d5ef16ba5fbe12 Dmitry Osipenko 2020-11-04 636 if (emc_fbio & EMC_FBIO_CFG5_DRAM_WIDTH_X16) d5ef16ba5fbe12 Dmitry Osipenko 2020-11-04 637 emc->dram_bus_width = 16; d5ef16ba5fbe12 Dmitry Osipenko 2020-11-04 638 else d5ef16ba5fbe12 Dmitry Osipenko 2020-11-04 639 emc->dram_bus_width = 32; d5ef16ba5fbe12 Dmitry Osipenko 2020-11-04 640 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 641 dram_type = FIELD_GET(EMC_FBIO_CFG5_DRAM_TYPE, emc_fbio); 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 642 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 643 switch (dram_type) { 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 644 case DRAM_TYPE_RESERVED: 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 @645 dram_type_str = "INVALID"; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 646 break; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 647 case DRAM_TYPE_DDR1: 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 648 dram_type_str = "DDR1"; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 649 break; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 650 case DRAM_TYPE_LPDDR2: 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 651 dram_type_str = "LPDDR2"; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 652 break; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 653 case DRAM_TYPE_DDR2: 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 654 dram_type_str = "DDR2"; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 655 break; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 656 } 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 657 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 658 emc_adr_cfg = readl_relaxed(emc->regs + EMC_ADR_CFG_0); 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 659 emem_numdev = FIELD_GET(EMC_ADR_CFG_0_EMEM_NUMDEV, emc_adr_cfg) + 1; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 660 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 661 dev_info_once(emc->dev, "%ubit DRAM bus, %u %s %s attached\n", 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 662 emc->dram_bus_width, emem_numdev, dram_type_str, 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 663 emem_numdev == 2 ? "devices" : "device"); 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 664 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 665 if (dram_type == DRAM_TYPE_LPDDR2) { 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 666 while (emem_numdev--) 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 667 emc_read_lpddr_sdram_info(emc, emem_numdev, 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 668 !print_sdram_info_once); 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 669 print_sdram_info_once = true; 131dd9a436d8f6 Dmitry Osipenko 2021-10-07 670 } d5ef16ba5fbe12 Dmitry Osipenko 2020-11-04 671 96e5da7c842424 Dmitry Osipenko 2018-10-21 672 return 0; 96e5da7c842424 Dmitry Osipenko 2018-10-21 673 } 96e5da7c842424 Dmitry Osipenko 2018-10-21 674 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org