CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Dmitry Osipenko <[email protected]>
CC: Krzysztof Kozlowski <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   c8c109546a19613d323a319d0c921cb1f317e629
commit: 131dd9a436d8f6dbaf3d9597803765d271b2fc19 memory: tegra20-emc: Support 
matching timings by LPDDR2 configuration
date:   4 weeks ago
:::::: branch date: 8 hours ago
:::::: commit date: 4 weeks ago
config: riscv-randconfig-c006-20211114 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
c3dddeeafb529e769cde87bd29ef6271ac6bfa5c)
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=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 attached .config 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 <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/clk/clk-cdce706.c:293:32: note: Taking false branch
           struct cdce706_hw_data *hwd = to_hw_data(hw);
                                         ^
   drivers/clk/clk-cdce706.c:65:26: note: expanded from macro 'to_hw_data'
   #define to_hw_data(phw) (container_of((phw), struct cdce706_hw_data, hw))
                            ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:322:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:310:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:302:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/clk/clk-cdce706.c:293:32: note: Loop condition is false.  Exiting 
loop
           struct cdce706_hw_data *hwd = to_hw_data(hw);
                                         ^
   drivers/clk/clk-cdce706.c:65:26: note: expanded from macro 'to_hw_data'
   #define to_hw_data(phw) (container_of((phw), struct cdce706_hw_data, hw))
                            ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:322:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:310:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:300:2: note: expanded from macro 
'__compiletime_assert'
           do {                                                            \
           ^
   drivers/clk/clk-cdce706.c:297:2: note: Taking false branch
           dev_dbg(&hwd->dev_data->client->dev,
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/clk/clk-cdce706.c:304:6: note: Assuming 'mul' is not equal to 0
           if (!mul)
               ^~~~
   drivers/clk/clk-cdce706.c:304:2: note: Taking false branch
           if (!mul)
           ^
   drivers/clk/clk-cdce706.c:307:6: note: Assuming the condition is true
           if (clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-cdce706.c:307:2: note: Taking true branch
           if (clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT) {
           ^
   drivers/clk/clk-cdce706.c:309:3: note: 'best_div' initialized to 0
                   unsigned long best_div = 0;
                   ^~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-cdce706.c:311:27: note: Assuming 'gp_clk' is null
                   unsigned long gp_rate = gp_clk ? clk_get_rate(gp_clk) : 0;
                                           ^~~~~~
   drivers/clk/clk-cdce706.c:311:27: note: '?' condition is false
   drivers/clk/clk-cdce706.c:313:43: note: 'best_diff' is not equal to 0
                   for (div = CDCE706_PLL_FREQ_MIN / rate; best_diff &&
                                                           ^~~~~~~~~
   drivers/clk/clk-cdce706.c:313:43: note: Left side of '&&' is true
   drivers/clk/clk-cdce706.c:314:8: note: Assuming the condition is false
                        div <= CDCE706_PLL_FREQ_MAX / rate; ++div) {
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-cdce706.c:313:3: note: Loop condition is false. Execution 
continues on line 342
                   for (div = CDCE706_PLL_FREQ_MIN / rate; best_diff &&
                   ^
   drivers/clk/clk-cdce706.c:342:3: note: The value 0 is assigned to 'div'
                   div = best_div;
                   ^~~~~~~~~~~~~~
   drivers/clk/clk-cdce706.c:344:3: note: Taking false branch
                   dev_dbg(&hwd->dev_data->client->dev,
                   ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/clk/clk-cdce706.c:351:2: note: Taking false branch
           dev_dbg(&hwd->dev_data->client->dev,
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/clk/clk-cdce706.c:355:22: note: Division by zero
           return *parent_rate / div;
                  ~~~~~~~~~~~~~^~~~~
   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.
   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.
   13 warnings generated.
   Suppressed 13 warnings (13 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.
   drivers/hwtracing/intel_th/core.c:390:2: warning: Call to function 'strcpy' 
is insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(thdev->name, name);
           ^~~~~~
   drivers/hwtracing/intel_th/core.c:390:2: note: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119
           strcpy(thdev->name, name);
           ^~~~~~
   drivers/hwtracing/intel_th/core.c:1023:35: warning: Dereference of null 
pointer [clang-analyzer-core.NullDereference]
           struct intel_th_driver *hubdrv = to_intel_th_driver(hub->dev.driver);
                                            ^
   drivers/hwtracing/intel_th/intel_th.h:192:2: note: expanded from macro 
'to_intel_th_driver'
           container_of((_d), struct intel_th_driver, driver)
           ^
   include/linux/kernel.h:494:25: note: expanded from macro 'container_of'
           void *__mptr = (void *)(ptr);                                   \
                                  ^
   drivers/hwtracing/intel_th/core.c:308:34: note: Left side of '&&' is false
           struct intel_th_device *thdev = to_intel_th_device(dev);
                                           ^
   drivers/hwtracing/intel_th/intel_th.h:93:2: note: expanded from macro 
'to_intel_th_device'
           container_of((_d), struct intel_th_device, dev)
           ^
   include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/hwtracing/intel_th/core.c:308:34: note: Taking false branch
           struct intel_th_device *thdev = to_intel_th_device(dev);
                                           ^
   drivers/hwtracing/intel_th/intel_th.h:93:2: note: expanded from macro 
'to_intel_th_device'
           container_of((_d), struct intel_th_device, dev)
           ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:322:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:310:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:302:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/hwtracing/intel_th/core.c:308:34: note: Loop condition is false.  
Exiting loop
           struct intel_th_device *thdev = to_intel_th_device(dev);
                                           ^
   drivers/hwtracing/intel_th/intel_th.h:93:2: note: expanded from macro 
'to_intel_th_device'
           container_of((_d), struct intel_th_device, dev)
           ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:322:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)

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, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to