CC: [email protected] CC: [email protected] BCC: [email protected] CC: Alison Schofield <[email protected]> CC: Vishal Verma <[email protected]> CC: Ira Weiny <[email protected]> CC: Ben Widawsky <[email protected]> CC: Dan Williams <[email protected]> CC: [email protected] TO: Ben Widawsky <[email protected]> CC: Dan Williams <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git preview head: 9b688fc651b9d2b633e8d959454670aba1c39162 commit: 786e9e583773745bcd55c225d3a2643454dcca84 [55/78] cxl/region: Introduce a cxl_region driver :::::: branch date: 10 weeks ago :::::: commit date: 3 months ago config: riscv-randconfig-c006-20220504 (https://download.01.org/0day-ci/archive/20220506/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 5e004fb787698440a387750db7f8028e7cb14cfc) 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/cxl/cxl.git/commit/?id=786e9e583773745bcd55c225d3a2643454dcca84 git remote add cxl https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git git fetch --no-tags cxl preview git checkout 786e9e583773745bcd55c225d3a2643454dcca84 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^ ~~~~~~~~~~~~ fs/xfs/libxfs/xfs_dir2_node.c:1572:3: warning: Value stored to 'ents' is never read [clang-analyzer-deadcode.DeadStores] ents = hdr2.ents; ^ ~~~~~~~~~ fs/xfs/libxfs/xfs_dir2_node.c:1572:3: note: Value stored to 'ents' is never read ents = hdr2.ents; ^ ~~~~~~~~~ Suppressed 15 warnings (8 in non-user code, 7 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. 13 warnings generated. Suppressed 13 warnings (6 in non-user code, 7 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. 13 warnings generated. Suppressed 13 warnings (6 in non-user code, 7 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. 12 warnings generated. Suppressed 12 warnings (5 in non-user code, 7 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. 12 warnings generated. Suppressed 12 warnings (5 in non-user code, 7 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. 15 warnings generated. drivers/clk/clk-max9485.c:199:9: warning: Access to field 'out' results in a dereference of a null pointer (loaded from variable 'prev') [clang-analyzer-core.NullDereference] return prev->out; ^~~~ drivers/clk/clk-max9485.c:165:36: note: 'prev' initialized to a null pointer value const struct max9485_rate *curr, *prev = NULL; ^~~~ drivers/clk/clk-max9485.c:167:29: note: Assuming field 'out' is equal to 0 for (curr = max9485_rates; curr->out != 0; curr++) { ^~~~~~~~~~~~~~ drivers/clk/clk-max9485.c:167:2: note: Loop condition is false. Execution continues on line 199 for (curr = max9485_rates; curr->out != 0; curr++) { ^ drivers/clk/clk-max9485.c:199:9: note: Access to field 'out' results in a dereference of a null pointer (loaded from variable 'prev') return prev->out; ^~~~ drivers/clk/clk-max9485.c:202:8: warning: Excessive padding in 'struct max9485_clk' (11 padding bytes, where 3 is optimal). Optimal fields order: name, ops, parent_index, enable_bit, consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding] struct max9485_clk { ~~~~~~~^~~~~~~~~~~~~ drivers/clk/clk-max9485.c:202:8: note: Excessive padding in 'struct max9485_clk' (11 padding bytes, where 3 is optimal). Optimal fields order: name, ops, parent_index, enable_bit, consider reordering the fields or adding explicit padding members struct max9485_clk { ~~~~~~~^~~~~~~~~~~~~ Suppressed 13 warnings (6 in non-user code, 7 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. 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. 12 warnings generated. Suppressed 12 warnings (5 in non-user code, 7 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. 15 warnings generated. Suppressed 15 warnings (8 in non-user code, 7 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. 15 warnings generated. Suppressed 15 warnings (8 in non-user code, 7 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. 15 warnings generated. Suppressed 15 warnings (8 in non-user code, 7 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. 16 warnings generated. fs/btrfs/free-space-tree.c:1476:3: warning: Value stored to 'total_found' is never read [clang-analyzer-deadcode.DeadStores] total_found += add_new_free_space(block_group, extent_start, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/btrfs/free-space-tree.c:1476:3: note: Value stored to 'total_found' is never read total_found += add_new_free_space(block_group, extent_start, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 15 warnings (8 in non-user code, 7 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. 15 warnings generated. Suppressed 15 warnings (8 in non-user code, 7 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. 16 warnings generated. fs/btrfs/space-info.c:1565:3: warning: Value stored to 'used' is never read [clang-analyzer-deadcode.DeadStores] used += orig_bytes; ^ ~~~~~~~~~~ fs/btrfs/space-info.c:1565:3: note: Value stored to 'used' is never read used += orig_bytes; ^ ~~~~~~~~~~ Suppressed 15 warnings (8 in non-user code, 7 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. 16 warnings generated. fs/btrfs/block-rsv.c:115:3: warning: Value stored to 'qgroup_to_release' is never read [clang-analyzer-deadcode.DeadStores] qgroup_to_release = block_rsv->qgroup_rsv_size; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/btrfs/block-rsv.c:115:3: note: Value stored to 'qgroup_to_release' is never read qgroup_to_release = block_rsv->qgroup_rsv_size; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 15 warnings (8 in non-user code, 7 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. 15 warnings generated. Suppressed 15 warnings (8 in non-user code, 7 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. 14 warnings generated. >> drivers/cxl/region.c:104:24: warning: Division by zero >> [clang-analyzer-core.DivideZero] if (cxlr->config.size % (SZ_256M * iw)) { ^ drivers/cxl/region.c:289:6: note: Assuming field 'active' is false if (cxlr->active) ^~~~~~~~~~~~ drivers/cxl/region.c:289:2: note: Taking false branch if (cxlr->active) ^ drivers/cxl/region.c:292:2: note: Taking false branch if (uuid_is_null(&cxlr->config.uuid)) ^ drivers/cxl/region.c:297:8: note: Calling 'sanitize_region' ret = sanitize_region(cxlr); ^~~~~~~~~~~~~~~~~~~~~ drivers/cxl/region.c:85:32: note: Assuming the condition is false if (dev_WARN_ONCE(&cxlr->dev, !is_cxl_region_configured(cxlr), ^ include/linux/dev_printk.h:274:12: note: expanded from macro 'dev_WARN_ONCE' WARN_ONCE(condition, "%s %s: " format, \ ^~~~~~~~~ include/asm-generic/bug.h:150:18: note: expanded from macro 'WARN_ONCE' DO_ONCE_LITE_IF(condition, WARN, 1, format) ^~~~~~~~~ include/linux/once_lite.h:15:27: note: expanded from macro 'DO_ONCE_LITE_IF' bool __ret_do_once = !!(condition); \ ^~~~~~~~~ drivers/cxl/region.c:85:6: note: '__ret_do_once' is false if (dev_WARN_ONCE(&cxlr->dev, !is_cxl_region_configured(cxlr), ^ include/linux/dev_printk.h:274:2: note: expanded from macro 'dev_WARN_ONCE' WARN_ONCE(condition, "%s %s: " format, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/asm-generic/bug.h:150:2: note: expanded from macro 'WARN_ONCE' DO_ONCE_LITE_IF(condition, WARN, 1, format) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/once_lite.h:17:16: note: expanded from macro 'DO_ONCE_LITE_IF' if (unlikely(__ret_do_once && !__already_done)) { \ ^~~~~~~~~~~~~ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ drivers/cxl/region.c:85:6: note: Left side of '&&' is false if (dev_WARN_ONCE(&cxlr->dev, !is_cxl_region_configured(cxlr), ^ include/linux/dev_printk.h:274:2: note: expanded from macro 'dev_WARN_ONCE' WARN_ONCE(condition, "%s %s: " format, \ ^ include/asm-generic/bug.h:150:2: note: expanded from macro 'WARN_ONCE' DO_ONCE_LITE_IF(condition, WARN, 1, format) ^ include/linux/once_lite.h:17:30: note: expanded from macro 'DO_ONCE_LITE_IF' if (unlikely(__ret_do_once && !__already_done)) { \ ^ drivers/cxl/region.c:85:6: note: Taking false branch if (dev_WARN_ONCE(&cxlr->dev, !is_cxl_region_configured(cxlr), ^ include/linux/dev_printk.h:274:2: note: expanded from macro 'dev_WARN_ONCE' WARN_ONCE(condition, "%s %s: " format, \ ^ include/asm-generic/bug.h:150:2: note: expanded from macro 'WARN_ONCE' DO_ONCE_LITE_IF(condition, WARN, 1, format) ^ include/linux/once_lite.h:17:3: note: expanded from macro 'DO_ONCE_LITE_IF' if (unlikely(__ret_do_once && !__already_done)) { \ ^ drivers/cxl/region.c:85:2: note: Taking false branch if (dev_WARN_ONCE(&cxlr->dev, !is_cxl_region_configured(cxlr), ^ drivers/cxl/region.c:94:2: note: Taking false branch if (!cxl_is_interleave_ways_valid(iw)) { ^ drivers/cxl/region.c:99:2: note: Taking false branch if (!cxl_is_interleave_granularity_valid(ig)) { ^ drivers/cxl/region.c:104:24: note: Division by zero if (cxlr->config.size % (SZ_256M * iw)) { ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ Suppressed 13 warnings (6 in non-user code, 7 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. 16 warnings generated. include/linux/list.h:137:13: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc] __list_del(entry->prev, entry->next); ^ drivers/base/regmap/regmap-debugfs.c:657:6: note: Assuming field 'debugfs' is non-null if (map->debugfs) { ^~~~~~~~~~~~ drivers/base/regmap/regmap-debugfs.c:657:2: note: Taking true branch if (map->debugfs) { ^ drivers/base/regmap/regmap-debugfs.c:660:3: note: Calling 'regmap_debugfs_free_dump_cache' regmap_debugfs_free_dump_cache(map); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/base/regmap/regmap-debugfs.c:71:2: note: Loop condition is true. Entering loop body while (!list_empty(&map->debugfs_off_cache)) { ^ drivers/base/regmap/regmap-debugfs.c:76:3: note: Memory is released kfree(c); ^~~~~~~~ drivers/base/regmap/regmap-debugfs.c:71:2: note: Loop condition is true. Entering loop body while (!list_empty(&map->debugfs_off_cache)) { vim +104 drivers/cxl/region.c 786e9e58377374 Ben Widawsky 2022-02-11 66 786e9e58377374 Ben Widawsky 2022-02-11 67 /** 786e9e58377374 Ben Widawsky 2022-02-11 68 * sanitize_region() - Check is region is reasonably configured 786e9e58377374 Ben Widawsky 2022-02-11 69 * @cxlr: The region to check 786e9e58377374 Ben Widawsky 2022-02-11 70 * 786e9e58377374 Ben Widawsky 2022-02-11 71 * Determination as to whether or not a region can possibly be configured is 786e9e58377374 Ben Widawsky 2022-02-11 72 * described in CXL Memory Device SW Guide. In order to implement the algorithms 786e9e58377374 Ben Widawsky 2022-02-11 73 * described there, certain more basic configuration parameters must first need 786e9e58377374 Ben Widawsky 2022-02-11 74 * to be validated. That is accomplished by this function. 786e9e58377374 Ben Widawsky 2022-02-11 75 * 786e9e58377374 Ben Widawsky 2022-02-11 76 * Returns 0 if the region is reasonably configured, else returns a negative 786e9e58377374 Ben Widawsky 2022-02-11 77 * error code. 786e9e58377374 Ben Widawsky 2022-02-11 78 */ 786e9e58377374 Ben Widawsky 2022-02-11 79 static int sanitize_region(const struct cxl_region *cxlr) 786e9e58377374 Ben Widawsky 2022-02-11 80 { 786e9e58377374 Ben Widawsky 2022-02-11 81 const int ig = region_granularity(cxlr); 786e9e58377374 Ben Widawsky 2022-02-11 82 const int iw = region_ways(cxlr); 786e9e58377374 Ben Widawsky 2022-02-11 83 int i; 786e9e58377374 Ben Widawsky 2022-02-11 84 786e9e58377374 Ben Widawsky 2022-02-11 85 if (dev_WARN_ONCE(&cxlr->dev, !is_cxl_region_configured(cxlr), 786e9e58377374 Ben Widawsky 2022-02-11 86 "unconfigured regions can't be probed (race?)\n")) { 786e9e58377374 Ben Widawsky 2022-02-11 87 return -ENXIO; 786e9e58377374 Ben Widawsky 2022-02-11 88 } 786e9e58377374 Ben Widawsky 2022-02-11 89 786e9e58377374 Ben Widawsky 2022-02-11 90 /* 786e9e58377374 Ben Widawsky 2022-02-11 91 * Interleave attributes should be caught by later math, but it's 786e9e58377374 Ben Widawsky 2022-02-11 92 * easiest to find those issues here, now. 786e9e58377374 Ben Widawsky 2022-02-11 93 */ 786e9e58377374 Ben Widawsky 2022-02-11 94 if (!cxl_is_interleave_ways_valid(iw)) { 786e9e58377374 Ben Widawsky 2022-02-11 95 dev_dbg(&cxlr->dev, "Invalid number of ways\n"); 786e9e58377374 Ben Widawsky 2022-02-11 96 return -ENXIO; 786e9e58377374 Ben Widawsky 2022-02-11 97 } 786e9e58377374 Ben Widawsky 2022-02-11 98 786e9e58377374 Ben Widawsky 2022-02-11 99 if (!cxl_is_interleave_granularity_valid(ig)) { 786e9e58377374 Ben Widawsky 2022-02-11 100 dev_dbg(&cxlr->dev, "Invalid interleave granularity\n"); 786e9e58377374 Ben Widawsky 2022-02-11 101 return -ENXIO; 786e9e58377374 Ben Widawsky 2022-02-11 102 } 786e9e58377374 Ben Widawsky 2022-02-11 103 786e9e58377374 Ben Widawsky 2022-02-11 @104 if (cxlr->config.size % (SZ_256M * iw)) { 786e9e58377374 Ben Widawsky 2022-02-11 105 dev_dbg(&cxlr->dev, "Invalid size. Must be multiple of %uM\n", 786e9e58377374 Ben Widawsky 2022-02-11 106 256 * iw); 786e9e58377374 Ben Widawsky 2022-02-11 107 return -ENXIO; 786e9e58377374 Ben Widawsky 2022-02-11 108 } 786e9e58377374 Ben Widawsky 2022-02-11 109 786e9e58377374 Ben Widawsky 2022-02-11 110 for (i = 0; i < iw; i++) { 786e9e58377374 Ben Widawsky 2022-02-11 111 if (!cxlr->config.targets[i]) { 786e9e58377374 Ben Widawsky 2022-02-11 112 dev_dbg(&cxlr->dev, "Missing memory device target%u", 786e9e58377374 Ben Widawsky 2022-02-11 113 i); 786e9e58377374 Ben Widawsky 2022-02-11 114 return -ENXIO; 786e9e58377374 Ben Widawsky 2022-02-11 115 } 786e9e58377374 Ben Widawsky 2022-02-11 116 if (!cxlr->config.targets[i]->dev.driver) { 786e9e58377374 Ben Widawsky 2022-02-11 117 dev_dbg(&cxlr->dev, "%s isn't CXL.mem capable\n", 786e9e58377374 Ben Widawsky 2022-02-11 118 dev_name(&cxlr->config.targets[i]->dev)); 786e9e58377374 Ben Widawsky 2022-02-11 119 return -ENODEV; 786e9e58377374 Ben Widawsky 2022-02-11 120 } 786e9e58377374 Ben Widawsky 2022-02-11 121 } 786e9e58377374 Ben Widawsky 2022-02-11 122 786e9e58377374 Ben Widawsky 2022-02-11 123 return 0; 786e9e58377374 Ben Widawsky 2022-02-11 124 } 786e9e58377374 Ben Widawsky 2022-02-11 125 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
