tree:
https://github.com/cminyard/linux-ipmi ipmi-wdt-rework
head: a22010ce71ef67492980e4c55ad7864679826b53
commit: d8aebbc6501b431180c705c6e8a4fc4e129325ec [5/10] watchdog: Export an interface to
start the watchdog
config: x86_64-allyesconfig (attached as .config)
compiler: clang version 11.0.0 (
https://github.com/llvm/llvm-project
487ca07fcc75d52755c9fe2ee05bcb3b6eeeec44)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout d8aebbc6501b431180c705c6e8a4fc4e129325ec
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/hwmon/sch56xx-common.c:245:12: error: static declaration of
'watchdog_set_timeout' follows non-static declaration
static int watchdog_set_timeout(struct watchdog_device *wddev,
^
include/linux/watchdog.h:205:5: note: previous declaration is here
int watchdog_set_timeout(struct watchdog_device *wdd, unsigned int timeout);
^
> drivers/hwmon/sch56xx-common.c:289:12: error: static declaration
of 'watchdog_start' follows non-static declaration
static int
watchdog_start(struct watchdog_device *wddev)
^
include/linux/watchdog.h:209:5: note: previous declaration is here
int watchdog_start(struct watchdog_device *wdd);
^
2 errors generated.
--
drivers/watchdog/f71808e_wdt.c:221:12: error: static declaration of
'watchdog_set_timeout' follows non-static declaration
static int watchdog_set_timeout(int timeout)
^
include/linux/watchdog.h:205:5: note: previous declaration is here
int watchdog_set_timeout(struct watchdog_device *wdd, unsigned int timeout);
^
> drivers/watchdog/f71808e_wdt.c:330:12: error: static declaration
of 'watchdog_start' follows non-static declaration
static int
watchdog_start(void)
^
include/linux/watchdog.h:209:5: note: previous declaration is here
int watchdog_start(struct watchdog_device *wdd);
^
> drivers/watchdog/f71808e_wdt.c:519:23: error: too few arguments
to function call, single argument 'wdd' was not specified
err =
watchdog_start();
~~~~~~~~~~~~~~ ^
include/linux/watchdog.h:209:5: note: 'watchdog_start' declared here
int watchdog_start(struct watchdog_device *wdd);
^
drivers/watchdog/f71808e_wdt.c:631:26: error: too few arguments to function call,
single argument 'wdd' was not specified
return watchdog_start();
~~~~~~~~~~~~~~ ^
include/linux/watchdog.h:209:5: note: 'watchdog_start' declared here
int watchdog_start(struct watchdog_device *wdd);
^
drivers/watchdog/f71808e_wdt.c:642:39: error: too few arguments to function call,
expected 2, have 1
if (watchdog_set_timeout(new_timeout))
~~~~~~~~~~~~~~~~~~~~ ^
include/linux/watchdog.h:205:5: note: 'watchdog_set_timeout' declared here
int watchdog_set_timeout(struct watchdog_device *wdd, unsigned int timeout);
^
drivers/watchdog/f71808e_wdt.c:711:36: error: too few arguments to function call,
expected 2, have 1
err = watchdog_set_timeout(timeout);
~~~~~~~~~~~~~~~~~~~~ ^
include/linux/watchdog.h:205:5: note: 'watchdog_set_timeout' declared here
int watchdog_set_timeout(struct watchdog_device *wdd, unsigned int timeout);
^
drivers/watchdog/f71808e_wdt.c:737:24: error: too few arguments to function call,
single argument 'wdd' was not specified
err = watchdog_start();
~~~~~~~~~~~~~~ ^
include/linux/watchdog.h:209:5: note: 'watchdog_start' declared here
int watchdog_start(struct watchdog_device *wdd);
^
7 errors generated.
vim +/watchdog_start +289 drivers/hwmon/sch56xx-common.c
312869ec935ab3 Hans de Goede 2012-03-18 288
fb551405c0f8e1 Hans de Goede 2012-05-22 @289 static int watchdog_start(struct
watchdog_device *wddev)
312869ec935ab3 Hans de Goede 2012-03-18 290 {
fb551405c0f8e1 Hans de Goede 2012-05-22 291 struct sch56xx_watchdog_data *data =
watchdog_get_drvdata(wddev);
312869ec935ab3 Hans de Goede 2012-03-18 292 int ret;
312869ec935ab3 Hans de Goede 2012-03-18 293 u8 val;
312869ec935ab3 Hans de Goede 2012-03-18 294
312869ec935ab3 Hans de Goede 2012-03-18 295 /*
312869ec935ab3 Hans de Goede 2012-03-18 296 * The sch56xx's watchdog cannot really
be started / stopped
312869ec935ab3 Hans de Goede 2012-03-18 297 * it is always running, but we can avoid
the timer expiring
312869ec935ab3 Hans de Goede 2012-03-18 298 * from causing a system reset by clearing
the output enable bit.
312869ec935ab3 Hans de Goede 2012-03-18 299 *
312869ec935ab3 Hans de Goede 2012-03-18 300 * The sch56xx's watchdog will set the
watchdog event bit, bit 0
312869ec935ab3 Hans de Goede 2012-03-18 301 * of the second interrupt source register
(at base-address + 9),
312869ec935ab3 Hans de Goede 2012-03-18 302 * when the timer expires.
312869ec935ab3 Hans de Goede 2012-03-18 303 *
312869ec935ab3 Hans de Goede 2012-03-18 304 * This will only cause a system reset if
the 0-1 flank happens when
312869ec935ab3 Hans de Goede 2012-03-18 305 * output enable is true. Setting output
enable after the flank will
312869ec935ab3 Hans de Goede 2012-03-18 306 * not cause a reset, nor will the timer
expiring a second time.
312869ec935ab3 Hans de Goede 2012-03-18 307 * This means we must clear the watchdog
event bit in case it is set.
312869ec935ab3 Hans de Goede 2012-03-18 308 *
312869ec935ab3 Hans de Goede 2012-03-18 309 * The timer may still be running (after a
recent watchdog_stop) and
312869ec935ab3 Hans de Goede 2012-03-18 310 * mere milliseconds away from expiring, so
the timer must be reset
312869ec935ab3 Hans de Goede 2012-03-18 311 * first!
312869ec935ab3 Hans de Goede 2012-03-18 312 */
312869ec935ab3 Hans de Goede 2012-03-18 313
312869ec935ab3 Hans de Goede 2012-03-18 314 mutex_lock(data->io_lock);
312869ec935ab3 Hans de Goede 2012-03-18 315
312869ec935ab3 Hans de Goede 2012-03-18 316 /* 1. Reset the watchdog countdown counter
*/
312869ec935ab3 Hans de Goede 2012-03-18 317 ret =
sch56xx_write_virtual_reg(data->addr, SCH56XX_REG_WDOG_PRESET,
312869ec935ab3 Hans de Goede 2012-03-18 318 data->watchdog_preset);
312869ec935ab3 Hans de Goede 2012-03-18 319 if (ret)
312869ec935ab3 Hans de Goede 2012-03-18 320 goto leave;
312869ec935ab3 Hans de Goede 2012-03-18 321
85a2e40cb50535 Hans de Goede 2012-05-22 322 /* 2. Enable output */
85a2e40cb50535 Hans de Goede 2012-05-22 323 val = data->watchdog_output_enable |
SCH56XX_WDOG_OUTPUT_ENABLE;
312869ec935ab3 Hans de Goede 2012-03-18 324 ret =
sch56xx_write_virtual_reg(data->addr,
85a2e40cb50535 Hans de Goede 2012-05-22 325 SCH56XX_REG_WDOG_OUTPUT_ENABLE, val);
312869ec935ab3 Hans de Goede 2012-03-18 326 if (ret)
312869ec935ab3 Hans de Goede 2012-03-18 327 goto leave;
312869ec935ab3 Hans de Goede 2012-03-18 328
312869ec935ab3 Hans de Goede 2012-03-18 329 data->watchdog_output_enable = val;
312869ec935ab3 Hans de Goede 2012-03-18 330
312869ec935ab3 Hans de Goede 2012-03-18 331 /* 3. Clear the watchdog event bit if set
*/
312869ec935ab3 Hans de Goede 2012-03-18 332 val = inb(data->addr + 9);
312869ec935ab3 Hans de Goede 2012-03-18 333 if (val & 0x01)
312869ec935ab3 Hans de Goede 2012-03-18 334 outb(0x01, data->addr + 9);
312869ec935ab3 Hans de Goede 2012-03-18 335
312869ec935ab3 Hans de Goede 2012-03-18 336 leave:
312869ec935ab3 Hans de Goede 2012-03-18 337 mutex_unlock(data->io_lock);
312869ec935ab3 Hans de Goede 2012-03-18 338 return ret;
312869ec935ab3 Hans de Goede 2012-03-18 339 }
312869ec935ab3 Hans de Goede 2012-03-18 340
:::::: The code at line 289 was first introduced by commit
:::::: fb551405c0f8e15d6fc7ae6e16a5e15382f8b8ac watchdog: sch56xx: Use watchdog core
:::::: TO: Hans de Goede <hdegoede(a)redhat.com>
:::::: CC: Wim Van Sebroeck <wim(a)iguana.be>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org