CC: [email protected] CC: [email protected] CC: [email protected] TO: Shawn Guo <[email protected]> CC: Linus Walleij <[email protected]> CC: Bjorn Andersson <[email protected]> CC: Andy Shevchenko <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 2c271fe77d52a0555161926c232cd5bc07178b39 commit: 6d8d67988b1a2db04d9d6083a729e8abfeb725d7 pinctrl: qcom: sc8180x: add ACPI probe support date: 10 months ago :::::: branch date: 14 hours ago :::::: commit date: 10 months ago config: arm-randconfig-c002-20220117 (https://download.01.org/0day-ci/archive/20220121/[email protected]/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c10cbb243cafc0cf42c3e922cb29183279444432) 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=6d8d67988b1a2db04d9d6083a729e8abfeb725d7 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 6d8d67988b1a2db04d9d6083a729e8abfeb725d7 # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 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 >>) 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/setup-bus.c:459:2: note: Loop condition is false. Exiting loop list_for_each_entry(dev_res, head, list) ^ 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) ^ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^ note: (skipping 2 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/setup-bus.c:459:2: note: Loop condition is true. Entering loop body list_for_each_entry(dev_res, head, list) ^ 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/setup-bus.c:460:7: note: Use of memory after it is freed if (dev_res->res->parent) ^~~~~~~~~~~~ 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. 4 warnings generated. Suppressed 4 warnings (4 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. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:1562:26: warning: Value stored to 'npcm' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct npcm7xx_pinctrl *npcm = pinctrl_dev_get_drvdata(pctldev); ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:1562:26: note: Value stored to 'npcm' during its initialization is never read struct npcm7xx_pinctrl *npcm = pinctrl_dev_get_drvdata(pctldev); ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:1590:26: warning: Value stored to 'npcm' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct npcm7xx_pinctrl *npcm = pinctrl_dev_get_drvdata(pctldev); ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:1590:26: note: Value stored to 'npcm' during its initialization is never read struct npcm7xx_pinctrl *npcm = pinctrl_dev_get_drvdata(pctldev); ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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. 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. 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. 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. 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. >> drivers/pinctrl/qcom/pinctrl-sc8180x.c:1664:16: warning: Access to field >> 'start' results in a dereference of an undefined pointer value (loaded from >> variable 'mres') [clang-analyzer-core.NullDereference] res->start = mres->start + info->offset; ^ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1692:6: note: Assuming 'soc_data' is non-null if (!soc_data) ^~~~~~~~~ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1692:2: note: Taking false branch if (!soc_data) ^ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1695:8: note: Calling 'sc8180x_pinctrl_add_tile_resources' ret = sc8180x_pinctrl_add_tile_resources(pdev); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1633:19: note: 'mres' declared without an initial value struct resource *mres, *nres, *res; ^~~~ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1640:6: note: Assuming field 'of_node' is null if (pdev->dev.of_node) ^~~~~~~~~~~~~~~~~ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1640:2: note: Taking false branch if (pdev->dev.of_node) ^ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1645:6: note: Assuming 'nres' is non-null if (!nres) ^~~~~ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1645:2: note: Taking false branch if (!nres) ^ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1650:14: note: Assuming 'i' is >= field 'num_resources' for (i = 0; i < pdev->num_resources; i++) { ^~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1650:2: note: Loop condition is false. Execution continues on line 1661 for (i = 0; i < pdev->num_resources; i++) { ^ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1661:2: note: Loop condition is true. Entering loop body for (i = 0; i < ARRAY_SIZE(sc8180x_tiles); i++, res++) { ^ drivers/pinctrl/qcom/pinctrl-sc8180x.c:1664:16: note: Access to field 'start' results in a dereference of an undefined pointer value (loaded from variable 'mres') res->start = mres->start + info->offset; ^~~~ 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 (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. 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. 10 warnings generated. drivers/md/bcache/btree.c:1921:2: warning: Value stored to 'cur_idx' is never read [clang-analyzer-deadcode.DeadStores] cur_idx = prev_idx = 0; ^ ~~~~~~~~~~~~ drivers/md/bcache/btree.c:1921:2: note: Value stored to 'cur_idx' is never read cur_idx = prev_idx = 0; ^ ~~~~~~~~~~~~ drivers/md/bcache/btree.c:2278:28: warning: The result of the left shift is undefined because the left operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult] bkey_copy_key(&n3->key, &MAX_KEY); ^ include/uapi/linux/bcache.h:81:24: note: expanded from macro 'MAX_KEY' #define MAX_KEY KEY(MAX_KEY_INODE, MAX_KEY_OFFSET, 0) ^~~~~~~~~~~~~ include/uapi/linux/bcache.h:79:31: note: expanded from macro 'MAX_KEY_INODE' #define MAX_KEY_INODE (~(~0 << 20)) ~~ ^ include/uapi/linux/bcache.h:73:51: note: expanded from macro 'KEY' .high = (1ULL << 63) | ((__u64) (size) << 20) | (inode), \ ^~~~~ drivers/md/bcache/btree.c:2204:6: note: Calling 'btree_check_reserve' if (btree_check_reserve(b, op)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/md/bcache/btree.c:1178:6: note: Assuming the condition is false if (fifo_used(&ca->free[RESERVE_BTREE]) < reserve) { ^ drivers/md/bcache/util.h:162:26: note: expanded from macro 'fifo_used' #define fifo_used(fifo) (((fifo)->back - (fifo)->front) & (fifo)->mask) ^ drivers/md/bcache/btree.c:1178:2: note: Taking false branch if (fifo_used(&ca->free[RESERVE_BTREE]) < reserve) { ^ drivers/md/bcache/btree.c:1188:9: note: Calling 'mca_cannibalize_lock' return mca_cannibalize_lock(b->c, op); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/md/bcache/btree.c:846:13: note: Assuming field 'btree_cache_alloc_lock' is not equal to null if (likely(c->btree_cache_alloc_lock == NULL)) { ^ include/linux/compiler.h:77:40: note: expanded from macro 'likely' # define likely(x) __builtin_expect(!!(x), 1) ^ drivers/md/bcache/btree.c:846:2: note: Taking false branch if (likely(c->btree_cache_alloc_lock == NULL)) { ^ drivers/md/bcache/btree.c:848:13: note: Assuming field 'btree_cache_alloc_lock' is equal to field 'task' } else if (c->btree_cache_alloc_lock != current) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/md/bcache/btree.c:848:9: note: Taking false branch } else if (c->btree_cache_alloc_lock != current) { vim +1664 drivers/pinctrl/qcom/pinctrl-sc8180x.c 6d8d67988b1a2db Shawn Guo 2021-03-11 1623 6d8d67988b1a2db Shawn Guo 2021-03-11 1624 /* 6d8d67988b1a2db Shawn Guo 2021-03-11 1625 * ACPI DSDT has one single memory resource for TLMM, which voilates the 6d8d67988b1a2db Shawn Guo 2021-03-11 1626 * hardware layout of 3 sepearte tiles. Let's split the memory resource into 6d8d67988b1a2db Shawn Guo 2021-03-11 1627 * 3 named ones, so that msm_pinctrl_probe() can map memory for ACPI in the 6d8d67988b1a2db Shawn Guo 2021-03-11 1628 * same way as for DT probe. 6d8d67988b1a2db Shawn Guo 2021-03-11 1629 */ 6d8d67988b1a2db Shawn Guo 2021-03-11 1630 static int sc8180x_pinctrl_add_tile_resources(struct platform_device *pdev) 6d8d67988b1a2db Shawn Guo 2021-03-11 1631 { 6d8d67988b1a2db Shawn Guo 2021-03-11 1632 int nres_num = pdev->num_resources + ARRAY_SIZE(sc8180x_tiles) - 1; 6d8d67988b1a2db Shawn Guo 2021-03-11 1633 struct resource *mres, *nres, *res; 6d8d67988b1a2db Shawn Guo 2021-03-11 1634 int i, ret; 6d8d67988b1a2db Shawn Guo 2021-03-11 1635 6d8d67988b1a2db Shawn Guo 2021-03-11 1636 /* 6d8d67988b1a2db Shawn Guo 2021-03-11 1637 * DT already has tiles defined properly, so nothing needs to be done 6d8d67988b1a2db Shawn Guo 2021-03-11 1638 * for DT probe. 6d8d67988b1a2db Shawn Guo 2021-03-11 1639 */ 6d8d67988b1a2db Shawn Guo 2021-03-11 1640 if (pdev->dev.of_node) 6d8d67988b1a2db Shawn Guo 2021-03-11 1641 return 0; 6d8d67988b1a2db Shawn Guo 2021-03-11 1642 6d8d67988b1a2db Shawn Guo 2021-03-11 1643 /* Allocate for new resources */ 6d8d67988b1a2db Shawn Guo 2021-03-11 1644 nres = devm_kzalloc(&pdev->dev, sizeof(*nres) * nres_num, GFP_KERNEL); 6d8d67988b1a2db Shawn Guo 2021-03-11 1645 if (!nres) 6d8d67988b1a2db Shawn Guo 2021-03-11 1646 return -ENOMEM; 6d8d67988b1a2db Shawn Guo 2021-03-11 1647 6d8d67988b1a2db Shawn Guo 2021-03-11 1648 res = nres; 6d8d67988b1a2db Shawn Guo 2021-03-11 1649 6d8d67988b1a2db Shawn Guo 2021-03-11 1650 for (i = 0; i < pdev->num_resources; i++) { 6d8d67988b1a2db Shawn Guo 2021-03-11 1651 struct resource *r = &pdev->resource[i]; 6d8d67988b1a2db Shawn Guo 2021-03-11 1652 6d8d67988b1a2db Shawn Guo 2021-03-11 1653 /* Save memory resource and copy others */ 6d8d67988b1a2db Shawn Guo 2021-03-11 1654 if (resource_type(r) == IORESOURCE_MEM) 6d8d67988b1a2db Shawn Guo 2021-03-11 1655 mres = r; 6d8d67988b1a2db Shawn Guo 2021-03-11 1656 else 6d8d67988b1a2db Shawn Guo 2021-03-11 1657 *res++ = *r; 6d8d67988b1a2db Shawn Guo 2021-03-11 1658 } 6d8d67988b1a2db Shawn Guo 2021-03-11 1659 6d8d67988b1a2db Shawn Guo 2021-03-11 1660 /* Append tile memory resources */ 6d8d67988b1a2db Shawn Guo 2021-03-11 1661 for (i = 0; i < ARRAY_SIZE(sc8180x_tiles); i++, res++) { 6d8d67988b1a2db Shawn Guo 2021-03-11 1662 const struct tile_info *info = &sc8180x_tile_info[i]; 6d8d67988b1a2db Shawn Guo 2021-03-11 1663 6d8d67988b1a2db Shawn Guo 2021-03-11 @1664 res->start = mres->start + info->offset; 6d8d67988b1a2db Shawn Guo 2021-03-11 1665 res->end = mres->start + info->offset + info->size - 1; 6d8d67988b1a2db Shawn Guo 2021-03-11 1666 res->flags = mres->flags; 6d8d67988b1a2db Shawn Guo 2021-03-11 1667 res->name = sc8180x_tiles[i]; 6d8d67988b1a2db Shawn Guo 2021-03-11 1668 6d8d67988b1a2db Shawn Guo 2021-03-11 1669 /* Add new MEM to resource tree */ 6d8d67988b1a2db Shawn Guo 2021-03-11 1670 insert_resource(mres->parent, res); 6d8d67988b1a2db Shawn Guo 2021-03-11 1671 } 6d8d67988b1a2db Shawn Guo 2021-03-11 1672 6d8d67988b1a2db Shawn Guo 2021-03-11 1673 /* Remove old MEM from resource tree */ 6d8d67988b1a2db Shawn Guo 2021-03-11 1674 remove_resource(mres); 6d8d67988b1a2db Shawn Guo 2021-03-11 1675 6d8d67988b1a2db Shawn Guo 2021-03-11 1676 /* Free old resources and install new ones */ 6d8d67988b1a2db Shawn Guo 2021-03-11 1677 ret = platform_device_add_resources(pdev, nres, nres_num); 6d8d67988b1a2db Shawn Guo 2021-03-11 1678 if (ret) { 6d8d67988b1a2db Shawn Guo 2021-03-11 1679 dev_err(&pdev->dev, "failed to add new resources: %d\n", ret); 6d8d67988b1a2db Shawn Guo 2021-03-11 1680 return ret; 6d8d67988b1a2db Shawn Guo 2021-03-11 1681 } 6d8d67988b1a2db Shawn Guo 2021-03-11 1682 6d8d67988b1a2db Shawn Guo 2021-03-11 1683 return 0; 6d8d67988b1a2db Shawn Guo 2021-03-11 1684 } 6d8d67988b1a2db Shawn Guo 2021-03-11 1685 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
