Web lists-archives.com

drivers/watchdog/rave-sp-wdt.c:278: undefined reference to `nvmem_cell_get'




tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   178e834c47b0d01352c48730235aae69898fbc02
commit: c3bb333457218ca4ed9553be47c0f567b4ef8a38 watchdog: Add RAVE SP watchdog driver
date:   5 weeks ago
config: x86_64-randconfig-u0-02131401 (attached as .config)
compiler: gcc-5 (Debian 5.5.0-3) 5.4.1 20171010
reproduce:
        git checkout c3bb333457218ca4ed9553be47c0f567b4ef8a38
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers/watchdog/rave-sp-wdt.o: In function `rave_sp_wdt_probe':
>> drivers/watchdog/rave-sp-wdt.c:278: undefined reference to `nvmem_cell_get'
>> drivers/watchdog/rave-sp-wdt.c:281: undefined reference to `nvmem_cell_read'
>> drivers/watchdog/rave-sp-wdt.c:287: undefined reference to `nvmem_cell_put'
   make[2]: *** [vmlinux] Error 1

vim +278 drivers/watchdog/rave-sp-wdt.c

   252	
   253	static int rave_sp_wdt_probe(struct platform_device *pdev)
   254	{
   255		struct device *dev = &pdev->dev;
   256		struct watchdog_device *wdd;
   257		struct rave_sp_wdt *sp_wd;
   258		struct nvmem_cell *cell;
   259		__le16 timeout = 0;
   260		int ret;
   261	
   262		sp_wd = devm_kzalloc(dev, sizeof(*sp_wd), GFP_KERNEL);
   263		if (!sp_wd)
   264			return -ENOMEM;
   265	
   266		sp_wd->variant = of_device_get_match_data(dev);
   267		sp_wd->sp      = dev_get_drvdata(dev->parent);
   268	
   269		wdd              = &sp_wd->wdd;
   270		wdd->parent      = dev;
   271		wdd->info        = &rave_sp_wdt_info;
   272		wdd->ops         = &rave_sp_wdt_ops;
   273		wdd->min_timeout = sp_wd->variant->min_timeout;
   274		wdd->max_timeout = sp_wd->variant->max_timeout;
   275		wdd->status      = WATCHDOG_NOWAYOUT_INIT_STATUS;
   276		wdd->timeout     = 60;
   277	
 > 278		cell = nvmem_cell_get(dev, "wdt-timeout");
   279		if (!IS_ERR(cell)) {
   280			size_t len;
 > 281			void *value = nvmem_cell_read(cell, &len);
   282	
   283			if (!IS_ERR(value)) {
   284				memcpy(&timeout, value, min(len, sizeof(timeout)));
   285				kfree(value);
   286			}
 > 287			nvmem_cell_put(cell);
   288		}
   289		watchdog_init_timeout(wdd, le16_to_cpu(timeout), dev);
   290		watchdog_set_restart_priority(wdd, 255);
   291		watchdog_stop_on_unregister(wdd);
   292	
   293		sp_wd->reboot_notifier.notifier_call = rave_sp_wdt_reboot_notifier;
   294		ret = devm_register_reboot_notifier(dev, &sp_wd->reboot_notifier);
   295		if (ret) {
   296			dev_err(dev, "Failed to register reboot notifier\n");
   297			return ret;
   298		}
   299	
   300		/*
   301		 * We don't know if watchdog is running now. To be sure, let's
   302		 * start it and depend on watchdog core to ping it
   303		 */
   304		wdd->max_hw_heartbeat_ms = wdd->max_timeout * 1000;
   305		ret = rave_sp_wdt_start(wdd);
   306		if (ret) {
   307			dev_err(dev, "Watchdog didn't start\n");
   308			return ret;
   309		}
   310	
   311		ret = devm_watchdog_register_device(dev, wdd);
   312		if (ret) {
   313			dev_err(dev, "Failed to register watchdog device\n");
   314			rave_sp_wdt_stop(wdd);
   315			return ret;
   316		}
   317	
   318		return 0;
   319	}
   320	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip