CC: clang-built-linux(a)googlegroups.com CC: kbuild-all(a)lists.01.org In-Reply-To: <1629121638-3246-1-git-send-email-TonyWWang-oc@zhaoxin.com> References: <1629121638-3246-1-git-send-email-TonyWWang-oc@zhaoxin.com> TO: "Tony W Wang-oc" TO: a.zummo(a)towertech.it TO: alexandre.belloni(a)bootlin.com TO: linux-rtc(a)vger.kernel.org TO: linux-kernel(a)vger.kernel.org CC: TimGuo-oc(a)zhaoxin.com CC: CooperYan(a)zhaoxin.com CC: QiyuanWang(a)zhaoxin.com CC: HerryYang(a)zhaoxin.com CC: CobeChen(a)zhaoxin.com CC: YanchenSun(a)zhaoxin.com Hi Tony, I love your patch! Perhaps something to improve: [auto build test WARNING on abelloni/rtc-next] [also build test WARNING on v5.14-rc6 next-20210816] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Tony-W-Wang-oc/rtc-Fix-set-RTC-time-delay-500ms-on-some-Zhaoxin-SOCs/20210816-140350 base: https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git rtc-next :::::: branch date: 27 hours ago :::::: commit date: 27 hours ago config: x86_64-randconfig-c007-20210816 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 44d0a99a12ec7ead4d2f5ef649ba05b40f6d463d) 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 # https://github.com/0day-ci/linux/commit/f7e050c4ec0065943e88d900811d57e36ad92a36 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Tony-W-Wang-oc/rtc-Fix-set-RTC-time-delay-500ms-on-some-Zhaoxin-SOCs/20210816-140350 git checkout f7e050c4ec0065943e88d900811d57e36ad92a36 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot clang-analyzer warnings: (new ones prefixed by >>) 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. 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. 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. 4 warnings generated. drivers/mfd/vx855.c:89:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = mfd_add_devices(&pdev->dev, -1, vx855_cells, ARRAY_SIZE(vx855_cells), ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/mfd/vx855.c:89:2: note: Value stored to 'ret' is never read ret = mfd_add_devices(&pdev->dev, -1, vx855_cells, ARRAY_SIZE(vx855_cells), ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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. 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. 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. 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. 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. 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. 6 warnings generated. arch/x86/crypto/des3_ede_glue.c:167:10: warning: Although the value stored to 'nbytes' is used in the enclosing expression, the value is never actually read from 'nbytes' [clang-analyzer-deadcode.DeadStores] while ((nbytes = walk.nbytes)) { ^ ~~~~~~~~~~~ arch/x86/crypto/des3_ede_glue.c:167:10: note: Although the value stored to 'nbytes' is used in the enclosing expression, the value is never actually read from 'nbytes' while ((nbytes = walk.nbytes)) { ^ ~~~~~~~~~~~ arch/x86/crypto/des3_ede_glue.c:246:10: warning: Although the value stored to 'nbytes' is used in the enclosing expression, the value is never actually read from 'nbytes' [clang-analyzer-deadcode.DeadStores] while ((nbytes = walk.nbytes)) { ^ ~~~~~~~~~~~ arch/x86/crypto/des3_ede_glue.c:246:10: note: Although the value stored to 'nbytes' is used in the enclosing expression, the value is never actually read from 'nbytes' while ((nbytes = walk.nbytes)) { ^ ~~~~~~~~~~~ Suppressed 4 warnings (3 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. 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. 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. 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. 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. 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. 4 warnings generated. Suppressed 4 warnings (3 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. 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. 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. 5 warnings generated. >> drivers/rtc/rtc-mc146818-lib.c:227:3: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT); ^ arch/x86/include/asm/mc146818rtc.h:94:31: note: expanded from macro 'CMOS_WRITE' #define CMOS_WRITE(val, addr) rtc_cmos_write(val, addr) ^ ~~~ drivers/rtc/rtc-mc146818-lib.c:128:30: note: 'save_freq_select' declared without an initial value unsigned char save_control, save_freq_select; ^~~~~~~~~~~~~~~~ drivers/rtc/rtc-mc146818-lib.c:142:6: note: Assuming 'yrs' is <= 255 if (yrs > 255) /* They are unsigned */ ^~~~~~~~~ drivers/rtc/rtc-mc146818-lib.c:142:2: note: Taking false branch if (yrs > 255) /* They are unsigned */ ^ drivers/rtc/rtc-mc146818-lib.c:163:6: note: Assuming field 'revision' is < FADT2_REVISION_ID if (acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID && ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/rtc/rtc-mc146818-lib.c:163:57: note: Left side of '&&' is false if (acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID && ^ drivers/rtc/rtc-mc146818-lib.c:173:6: note: Assuming 'yrs' is <= 169 if (yrs > 169) ^~~~~~~~~ drivers/rtc/rtc-mc146818-lib.c:173:2: note: Taking false branch if (yrs > 169) ^ drivers/rtc/rtc-mc146818-lib.c:176:6: note: Assuming 'yrs' is < 100 if (yrs >= 100) ^~~~~~~~~~ drivers/rtc/rtc-mc146818-lib.c:176:2: note: Taking false branch if (yrs >= 100) ^ drivers/rtc/rtc-mc146818-lib.c:179:6: note: Assuming the condition is true if (!(CMOS_READ(RTC_CONTROL) & RTC_DM_BINARY) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/rtc/rtc-mc146818-lib.c:180:6: note: Left side of '||' is true || RTC_ALWAYS_BCD) { ^ drivers/rtc/rtc-mc146818-lib.c:181:9: note: '?' condition is false sec = bin2bcd(sec); ^ include/linux/bcd.h:13:4: note: expanded from macro 'bin2bcd' (__builtin_constant_p((u8 )(x)) ? \ ^ drivers/rtc/rtc-mc146818-lib.c:182:9: note: '?' condition is false min = bin2bcd(min); ^ include/linux/bcd.h:13:4: note: expanded from macro 'bin2bcd' (__builtin_constant_p((u8 )(x)) ? \ ^ drivers/rtc/rtc-mc146818-lib.c:183:9: note: '?' condition is false hrs = bin2bcd(hrs); ^ include/linux/bcd.h:13:4: note: expanded from macro 'bin2bcd' (__builtin_constant_p((u8 )(x)) ? \ ^ drivers/rtc/rtc-mc146818-lib.c:184:9: note: '?' condition is false day = bin2bcd(day); ^ include/linux/bcd.h:13:4: note: expanded from macro 'bin2bcd' (__builtin_constant_p((u8 )(x)) ? \ ^ drivers/rtc/rtc-mc146818-lib.c:185:9: note: '?' condition is false mon = bin2bcd(mon); ^ include/linux/bcd.h:13:4: note: expanded from macro 'bin2bcd' (__builtin_constant_p((u8 )(x)) ? \ ^ drivers/rtc/rtc-mc146818-lib.c:186:9: note: '?' condition is false yrs = bin2bcd(yrs); ^ include/linux/bcd.h:13:4: note: expanded from macro 'bin2bcd' (__builtin_constant_p((u8 )(x)) ? \ ^ drivers/rtc/rtc-mc146818-lib.c:187:13: note: '?' condition is false century = bin2bcd(century); ^ include/linux/bcd.h:13:4: note: expanded from macro 'bin2bcd' (__builtin_constant_p((u8 )(x)) ? \ ^ drivers/rtc/rtc-mc146818-lib.c:190:2: note: Loop condition is false. Exiting loop spin_lock_irqsave(&rtc_lock, flags); ^ include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave' raw_spin_lock_irqsave(spinlock_check(lock), flags); \ ^ include/linux/spinlock.h:250:2: note: expanded from macro 'raw_spin_lock_irqsave' do { \ ^ drivers/rtc/rtc-mc146818-lib.c:190:2: note: Loop condition is false. Exiting loop spin_lock_irqsave(&rtc_lock, flags); ^ include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave' #define spin_lock_irqsave(lock, flags) \ ^ drivers/rtc/rtc-mc146818-lib.c:195:9: note: Assuming field 'x86_vendor' is equal to X86_VENDOR_CENTAUR if (!((boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/rtc/rtc-mc146818-lib.c:195:56: note: Left side of '||' is true if (!((boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR || vim +227 drivers/rtc/rtc-mc146818-lib.c d6faca40f40b62 Arnd Bergmann 2016-06-01 220 d6faca40f40b62 Arnd Bergmann 2016-06-01 221 CMOS_WRITE(save_control, RTC_CONTROL); f7e050c4ec0065 Tony W Wang-oc 2021-08-16 222 f7e050c4ec0065 Tony W Wang-oc 2021-08-16 223 #ifdef CONFIG_X86 f7e050c4ec0065 Tony W Wang-oc 2021-08-16 224 if (!((boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR || f7e050c4ec0065 Tony W Wang-oc 2021-08-16 225 boot_cpu_data.x86_vendor == X86_VENDOR_ZHAOXIN) && f7e050c4ec0065 Tony W Wang-oc 2021-08-16 226 (boot_cpu_data.x86 <= 7 && boot_cpu_data.x86_model <= 59))) d6faca40f40b62 Arnd Bergmann 2016-06-01 @227 CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT); --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org