Hi Wang, Thank you for the patch! Yet something to improve: [auto build test ERROR on hwmon/hwmon-next] [also build test ERROR on soc/for-next linus/master v5.12-rc8 next-20210421] [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/Wang-Qing/watchdog-mtk-support-dual-mode-when-the-bark-irq-is-available/20210421-160730 base: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next config: nds32-randconfig-r021-20210421 (attached as .config) compiler: nds32le-linux-gcc (GCC) 9.3.0 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/bb28c4d8391120b54c691e2407dae46761ef69af git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Wang-Qing/watchdog-mtk-support-dual-mode-when-the-bark-irq-is-available/20210421-160730 git checkout bb28c4d8391120b54c691e2407dae46761ef69af # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=nds32 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): In file included from include/linux/sched.h:12, from include/linux/ptrace.h:6, from include/uapi/asm-generic/bpf_perf_event.h:4, from ./arch/nds32/include/generated/uapi/asm/bpf_perf_event.h:1, from include/uapi/linux/bpf_perf_event.h:11, from include/linux/perf_event.h:18, from arch/nds32/kernel/perf_event_cpu.c:9: arch/nds32/kernel/perf_event_cpu.c: In function 'unwind_frame_kernel': >> arch/nds32/include/asm/current.h:10:13: error: '$r25' undeclared (first use in this function) 10 | #define tsk $r25 | ^~~~ arch/nds32/kernel/perf_event_cpu.c:1255:8: note: in expansion of macro 'tsk' 1255 | (tsk, &graph, frame->lp, NULL); | ^~~ arch/nds32/include/asm/current.h:10:13: note: each undeclared identifier is reported only once for each function it appears in 10 | #define tsk $r25 | ^~~~ arch/nds32/kernel/perf_event_cpu.c:1255:8: note: in expansion of macro 'tsk' 1255 | (tsk, &graph, frame->lp, NULL); | ^~~ arch/nds32/kernel/perf_event_cpu.c:1257:13: warning: assignment to 'long unsigned int' from 'long unsigned int *' makes integer from pointer without a cast [-Wint-conversion] 1257 | frame->sp = ((unsigned long *)frame->sp) + 1; | ^ -- drivers/watchdog/mtk_wdt.c: In function 'mtk_wdt_probe': drivers/watchdog/mtk_wdt.c:327:16: warning: missing terminating " character 327 | dev_info(dev, "Watchdog enabled (timeout=%d sec, nowayout=%d, | ^ In file included from include/linux/device.h:15, from include/linux/node.h:18, from include/linux/cpu.h:17, from include/linux/of_device.h:5, from drivers/watchdog/mtk_wdt.c:23: >> drivers/watchdog/mtk_wdt.c:327:16: error: missing terminating " character 327 | dev_info(dev, "Watchdog enabled (timeout=%d sec, nowayout=%d, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/dev_printk.h:19:22: note: in definition of macro 'dev_fmt' 19 | #define dev_fmt(fmt) fmt | ^~~ drivers/watchdog/mtk_wdt.c:327:2: note: in expansion of macro 'dev_info' 327 | dev_info(dev, "Watchdog enabled (timeout=%d sec, nowayout=%d, | ^~~~~~~~ >> drivers/watchdog/mtk_wdt.c:328:14: error: expected expression before '%' token 328 | dual_mode=%d)\n", mtk_wdt->wdt_dev.timeout, nowayout, dual_mode); | ^ include/linux/dev_printk.h:19:22: note: in definition of macro 'dev_fmt' 19 | #define dev_fmt(fmt) fmt | ^~~ drivers/watchdog/mtk_wdt.c:327:2: note: in expansion of macro 'dev_info' 327 | dev_info(dev, "Watchdog enabled (timeout=%d sec, nowayout=%d, | ^~~~~~~~ drivers/watchdog/mtk_wdt.c:328:17: error: stray '\' in program 328 | dual_mode=%d)\n", mtk_wdt->wdt_dev.timeout, nowayout, dual_mode); | ^ >> drivers/watchdog/mtk_wdt.c:328:18: error: expected ';' before 'n' 328 | dual_mode=%d)\n", mtk_wdt->wdt_dev.timeout, nowayout, dual_mode); | ^ drivers/watchdog/mtk_wdt.c:328:19: warning: missing terminating " character 328 | dual_mode=%d)\n", mtk_wdt->wdt_dev.timeout, nowayout, dual_mode); | ^ drivers/watchdog/mtk_wdt.c:328:19: error: missing terminating " character 328 | dual_mode=%d)\n", mtk_wdt->wdt_dev.timeout, nowayout, dual_mode); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +327 drivers/watchdog/mtk_wdt.c 276 277 static int mtk_wdt_probe(struct platform_device *pdev) 278 { 279 struct device *dev = &pdev->dev; 280 struct mtk_wdt_dev *mtk_wdt; 281 const struct mtk_wdt_data *wdt_data; 282 int err, irq; 283 284 mtk_wdt = devm_kzalloc(dev, sizeof(*mtk_wdt), GFP_KERNEL); 285 if (!mtk_wdt) 286 return -ENOMEM; 287 288 platform_set_drvdata(pdev, mtk_wdt); 289 290 mtk_wdt->wdt_base = devm_platform_ioremap_resource(pdev, 0); 291 if (IS_ERR(mtk_wdt->wdt_base)) 292 return PTR_ERR(mtk_wdt->wdt_base); 293 294 if (dual_mode) { 295 irq = platform_get_irq(pdev, 0); 296 if (irq > 0) { 297 err = devm_request_irq(&pdev->dev, irq, mtk_wdt_isr, 0, "wdt_bark", 298 &mtk_wdt->wdt_dev); 299 if (err) 300 return err; 301 } else { 302 dual_mode = 0; 303 dev_info(&pdev->dev, "couldn't get wdt irq, set dual_mode = 0\n"); 304 } 305 } 306 307 mtk_wdt->wdt_dev.info = &mtk_wdt_info; 308 mtk_wdt->wdt_dev.ops = &mtk_wdt_ops; 309 mtk_wdt->wdt_dev.timeout = WDT_MAX_TIMEOUT; 310 mtk_wdt->wdt_dev.max_hw_heartbeat_ms = WDT_MAX_TIMEOUT * 1000; 311 mtk_wdt->wdt_dev.min_timeout = WDT_MIN_TIMEOUT; 312 mtk_wdt->wdt_dev.parent = dev; 313 314 watchdog_init_timeout(&mtk_wdt->wdt_dev, timeout, dev); 315 watchdog_set_nowayout(&mtk_wdt->wdt_dev, nowayout); 316 watchdog_set_restart_priority(&mtk_wdt->wdt_dev, 128); 317 318 watchdog_set_drvdata(&mtk_wdt->wdt_dev, mtk_wdt); 319 320 mtk_wdt_init(&mtk_wdt->wdt_dev); 321 322 watchdog_stop_on_reboot(&mtk_wdt->wdt_dev); 323 err = devm_watchdog_register_device(dev, &mtk_wdt->wdt_dev); 324 if (unlikely(err)) 325 return err; 326 > 327 dev_info(dev, "Watchdog enabled (timeout=%d sec, nowayout=%d, > 328 dual_mode=%d)\n", mtk_wdt->wdt_dev.timeout, nowayout, dual_mode); 329 330 wdt_data = of_device_get_match_data(dev); 331 if (wdt_data) { 332 err = toprgu_register_reset_controller(pdev, 333 wdt_data->toprgu_sw_rst_num); 334 if (err) 335 return err; 336 } 337 return 0; 338 } 339 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org