CC: l...@lists.linux.dev CC: kbuild-...@lists.01.org BCC: l...@intel.com CC: linux-ker...@vger.kernel.org TO: Jianqun Xu <jay...@rock-chips.com> CC: Linus Walleij <linus.wall...@linaro.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: f443e374ae131c168a065ea1748feac6b2e76613 commit: 3bcbd1a85b68e5f864029fd6f0bb0bcc8e2f1082 gpio/rockchip: support next version gpio controller date: 7 months ago :::::: branch date: 11 hours ago :::::: commit date: 7 months ago config: arm-randconfig-c002-20220312 (https://download.01.org/0day-ci/archive/20220321/202203211417.w5bsttg6-...@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 276ca87382b8f16a65bddac700202924228982f6) 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=3bcbd1a85b68e5f864029fd6f0bb0bcc8e2f1082 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 3bcbd1a85b68e5f864029fd6f0bb0bcc8e2f1082 # 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 <l...@intel.com> clang-analyzer warnings: (new ones prefixed by >>) 8 warnings generated. block/partitions/acorn.c:285:4: warning: Value stored to 'slot' is never read [clang-analyzer-deadcode.DeadStores] slot = riscix_partition(state, start_sect, slot, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block/partitions/acorn.c:285:4: note: Value stored to 'slot' is never read slot = riscix_partition(state, start_sect, slot, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block/partitions/acorn.c:291:4: warning: Value stored to 'slot' is never read [clang-analyzer-deadcode.DeadStores] slot = linux_partition(state, start_sect, slot, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block/partitions/acorn.c:291:4: note: Value stored to 'slot' is never read slot = linux_partition(state, start_sect, slot, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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. 8 warnings generated. drivers/misc/cardreader/rtsx_pcr.c:1254:7: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign] val &= ~(1<<9); ~~~ ^ drivers/misc/cardreader/rtsx_pcr.c:1250:2: note: 'val' declared without an initial value u16 val; ^~~~~~~ drivers/misc/cardreader/rtsx_pcr.c:1252:7: note: Assuming field 'device' is not equal to PID_525A if ((PCI_PID(pcr) != PID_525A) && (PCI_PID(pcr) != PID_5260)) { ^ include/linux/rtsx_pci.h:1277:24: note: expanded from macro 'PCI_PID' #define PCI_PID(pcr) ((pcr)->pci->device) ^ drivers/misc/cardreader/rtsx_pcr.c:1252:6: note: Left side of '&&' is true if ((PCI_PID(pcr) != PID_525A) && (PCI_PID(pcr) != PID_5260)) { ^ drivers/misc/cardreader/rtsx_pcr.c:1252:37: note: Assuming field 'device' is not equal to PID_5260 if ((PCI_PID(pcr) != PID_525A) && (PCI_PID(pcr) != PID_5260)) { ^ include/linux/rtsx_pci.h:1277:24: note: expanded from macro 'PCI_PID' #define PCI_PID(pcr) ((pcr)->pci->device) ^ drivers/misc/cardreader/rtsx_pcr.c:1252:2: note: Taking true branch if ((PCI_PID(pcr) != PID_525A) && (PCI_PID(pcr) != PID_5260)) { ^ drivers/misc/cardreader/rtsx_pcr.c:1253:3: note: Calling 'rtsx_pci_read_phy_register' rtsx_pci_read_phy_register(pcr, 0x01, &val); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/cardreader/rtsx_pcr.c:291:6: note: Assuming field 'read_phy' is null if (pcr->ops->read_phy) ^~~~~~~~~~~~~~~~~~ drivers/misc/cardreader/rtsx_pcr.c:291:2: note: Taking false branch if (pcr->ops->read_phy) ^ drivers/misc/cardreader/rtsx_pcr.c:294:9: note: Calling '__rtsx_pci_read_phy_register' return __rtsx_pci_read_phy_register(pcr, addr, val); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/cardreader/rtsx_pcr.c:265:2: note: Loop condition is true. Entering loop body for (i = 0; i < 100000; i++) { ^ drivers/misc/cardreader/rtsx_pcr.c:267:7: note: Assuming 'err' is < 0 if (err < 0) ^~~~~~~ drivers/misc/cardreader/rtsx_pcr.c:267:3: note: Taking true branch if (err < 0) ^ drivers/misc/cardreader/rtsx_pcr.c:268:4: note: Returning without writing to '*val' return err; ^ drivers/misc/cardreader/rtsx_pcr.c:294:9: note: Returning from '__rtsx_pci_read_phy_register' return __rtsx_pci_read_phy_register(pcr, addr, val); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/cardreader/rtsx_pcr.c:294:2: note: Returning without writing to '*' return __rtsx_pci_read_phy_register(pcr, addr, val); ^ drivers/misc/cardreader/rtsx_pcr.c:1253:3: note: Returning from 'rtsx_pci_read_phy_register' rtsx_pci_read_phy_register(pcr, 0x01, &val); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/cardreader/rtsx_pcr.c:1254:7: note: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage val &= ~(1<<9); ~~~ ^ drivers/misc/cardreader/rtsx_pcr.c:1305:3: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores] err = rtsx_pci_write_register(pcr, RTS5261_FW_CFG1, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/cardreader/rtsx_pcr.c:1305:3: note: Value stored to 'err' is never read err = rtsx_pci_write_register(pcr, RTS5261_FW_CFG1, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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. 1 warning generated. >> drivers/gpio/gpio-rockchip.c:201:53: warning: Division by zero >> [clang-analyzer-core.DivideZero] max_debounce = (GENMASK(23, 0) + 1) * 2 * 1000000 / freq; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ drivers/gpio/gpio-rockchip.c:198:7: note: Calling 'IS_ERR' if (!IS_ERR(bank->db_clk)) { ^~~~~~~~~~~~~~~~~~~~ include/linux/err.h:36:9: note: Assuming the condition is false return IS_ERR_VALUE((unsigned long)ptr); ^ include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE' #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO) ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ include/linux/err.h:36:2: note: Returning zero, which participates in a condition later return IS_ERR_VALUE((unsigned long)ptr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpio/gpio-rockchip.c:198:7: note: Returning from 'IS_ERR' if (!IS_ERR(bank->db_clk)) { ^~~~~~~~~~~~~~~~~~~~ drivers/gpio/gpio-rockchip.c:198:2: note: Taking true branch if (!IS_ERR(bank->db_clk)) { ^ drivers/gpio/gpio-rockchip.c:200:10: note: Calling 'clk_get_rate' freq = clk_get_rate(bank->db_clk); ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/clk.h:882:2: note: Returning zero return 0; ^~~~~~~~ drivers/gpio/gpio-rockchip.c:200:10: note: Returning from 'clk_get_rate' freq = clk_get_rate(bank->db_clk); ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpio/gpio-rockchip.c:200:3: note: The value 0 is assigned to 'freq' freq = clk_get_rate(bank->db_clk); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpio/gpio-rockchip.c:201:53: note: Division by zero max_debounce = (GENMASK(23, 0) + 1) * 2 * 1000000 / freq; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ 10 warnings generated. drivers/scsi/mvumi.c:516:2: warning: Value stored to 'ob_write' is never read [clang-analyzer-deadcode.DeadStores] ob_write = ioread32(regs->outb_read_pointer); ^ drivers/scsi/mvumi.c:516:2: note: Value stored to 'ob_write' is never read drivers/scsi/mvumi.c:863:3: warning: Value stored to 'hs_page3' is never read [clang-analyzer-deadcode.DeadStores] hs_page3 = (struct mvumi_hs_page3 *) hs_header; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/mvumi.c:863:3: note: Value stored to 'hs_page3' is never read hs_page3 = (struct mvumi_hs_page3 *) hs_header; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/list.h:135:13: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc] __list_del(entry->prev, entry->next); ^ drivers/scsi/mvumi.c:2538:6: note: Assuming field 'dm_thread' is null if (mhba->dm_thread) { ^~~~~~~~~~~~~~~ drivers/scsi/mvumi.c:2538:2: note: Taking false branch if (mhba->dm_thread) { ^ drivers/scsi/mvumi.c:2550:2: note: Calling 'mvumi_release_fw' mvumi_release_fw(mhba); ^~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/mvumi.c:757:2: note: Calling 'mvumi_free_cmds' mvumi_free_cmds(mhba); ^~~~~~~~~~~~~~~~~~~~~ drivers/scsi/mvumi.c:350:2: note: Loop condition is true. Entering loop body while (!list_empty(&mhba->cmd_pool)) { ^ drivers/scsi/mvumi.c:351:9: note: Left side of '&&' is false cmd = list_first_entry(&mhba->cmd_pool, struct mvumi_cmd, ^ 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) ^ include/linux/kernel.h:495:61: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ drivers/scsi/mvumi.c:351:9: note: Taking false branch cmd = list_first_entry(&mhba->cmd_pool, struct mvumi_cmd, ^ 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) ^ include/linux/kernel.h:495:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert' __compiletime_assert(condition, msg, prefix, suffix) ^ include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert' if (!(condition)) \ vim +201 drivers/gpio/gpio-rockchip.c 936ee2675eee1f Jianqun Xu 2021-08-16 186 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 187 static int rockchip_gpio_set_debounce(struct gpio_chip *gc, 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 188 unsigned int offset, 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 189 unsigned int debounce) 936ee2675eee1f Jianqun Xu 2021-08-16 190 { 936ee2675eee1f Jianqun Xu 2021-08-16 191 struct rockchip_pin_bank *bank = gpiochip_get_data(gc); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 192 const struct rockchip_gpio_regs *reg = bank->gpio_regs; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 193 unsigned long flags, div_reg, freq, max_debounce; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 194 bool div_debounce_support; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 195 unsigned int cur_div_reg; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 196 u64 div; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 197 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 198 if (!IS_ERR(bank->db_clk)) { 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 199 div_debounce_support = true; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 200 freq = clk_get_rate(bank->db_clk); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 @201 max_debounce = (GENMASK(23, 0) + 1) * 2 * 1000000 / freq; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 202 if (debounce > max_debounce) 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 203 return -EINVAL; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 204 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 205 div = debounce * freq; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 206 div_reg = DIV_ROUND_CLOSEST_ULL(div, 2 * USEC_PER_SEC) - 1; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 207 } else { 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 208 div_debounce_support = false; 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 209 } 936ee2675eee1f Jianqun Xu 2021-08-16 210 936ee2675eee1f Jianqun Xu 2021-08-16 211 raw_spin_lock_irqsave(&bank->slock, flags); 936ee2675eee1f Jianqun Xu 2021-08-16 212 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 213 /* Only the v1 needs to configure div_en and div_con for dbclk */ 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 214 if (debounce) { 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 215 if (div_debounce_support) { 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 216 /* Configure the max debounce from consumers */ 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 217 cur_div_reg = readl(bank->reg_base + 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 218 reg->dbclk_div_con); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 219 if (cur_div_reg < div_reg) 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 220 writel(div_reg, bank->reg_base + 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 221 reg->dbclk_div_con); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 222 rockchip_gpio_writel_bit(bank, offset, 1, 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 223 reg->dbclk_div_en); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 224 } 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 225 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 226 rockchip_gpio_writel_bit(bank, offset, 1, reg->debounce); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 227 } else { 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 228 if (div_debounce_support) 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 229 rockchip_gpio_writel_bit(bank, offset, 0, 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 230 reg->dbclk_div_en); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 231 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 232 rockchip_gpio_writel_bit(bank, offset, 0, reg->debounce); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 233 } 936ee2675eee1f Jianqun Xu 2021-08-16 234 936ee2675eee1f Jianqun Xu 2021-08-16 235 raw_spin_unlock_irqrestore(&bank->slock, flags); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 236 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 237 /* Enable or disable dbclk at last */ 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 238 if (div_debounce_support) { 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 239 if (debounce) 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 240 clk_prepare_enable(bank->db_clk); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 241 else 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 242 clk_disable_unprepare(bank->db_clk); 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 243 } 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 244 3bcbd1a85b68e5 Jianqun Xu 2021-08-16 245 return 0; 936ee2675eee1f Jianqun Xu 2021-08-16 246 } 936ee2675eee1f Jianqun Xu 2021-08-16 247 -- 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