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: s390-allyesconfig (attached as .config)
compiler: s390-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
git checkout d8aebbc6501b431180c705c6e8a4fc4e129325ec
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=s390
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
245 | static int watchdog_set_timeout(struct watchdog_device *wddev,
| ^~~~~~~~~~~~~~~~~~~~
In file included from drivers/hwmon/sch56xx-common.c:17:
include/linux/watchdog.h:205:5: note: previous declaration of
'watchdog_set_timeout' was here
205 | 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
289 | static int
watchdog_start(struct watchdog_device *wddev)
| ^~~~~~~~~~~~~~
In file included from drivers/hwmon/sch56xx-common.c:17:
include/linux/watchdog.h:209:5: note: previous declaration of 'watchdog_start'
was here
209 | int watchdog_start(struct watchdog_device *wdd);
| ^~~~~~~~~~~~~~
vim +/watchdog_start +289 drivers/hwmon/sch56xx-common.c
312869ec935ab3b Hans de Goede 2012-03-18 288
fb551405c0f8e15 Hans de Goede 2012-05-22 @289 static int watchdog_start(struct
watchdog_device *wddev)
312869ec935ab3b Hans de Goede 2012-03-18 290 {
fb551405c0f8e15 Hans de Goede 2012-05-22 291 struct sch56xx_watchdog_data *data =
watchdog_get_drvdata(wddev);
312869ec935ab3b Hans de Goede 2012-03-18 292 int ret;
312869ec935ab3b Hans de Goede 2012-03-18 293 u8 val;
312869ec935ab3b Hans de Goede 2012-03-18 294
312869ec935ab3b Hans de Goede 2012-03-18 295 /*
312869ec935ab3b Hans de Goede 2012-03-18 296 * The sch56xx's watchdog cannot
really be started / stopped
312869ec935ab3b Hans de Goede 2012-03-18 297 * it is always running, but we can avoid
the timer expiring
312869ec935ab3b Hans de Goede 2012-03-18 298 * from causing a system reset by clearing
the output enable bit.
312869ec935ab3b Hans de Goede 2012-03-18 299 *
312869ec935ab3b Hans de Goede 2012-03-18 300 * The sch56xx's watchdog will set the
watchdog event bit, bit 0
312869ec935ab3b Hans de Goede 2012-03-18 301 * of the second interrupt source register
(at base-address + 9),
312869ec935ab3b Hans de Goede 2012-03-18 302 * when the timer expires.
312869ec935ab3b Hans de Goede 2012-03-18 303 *
312869ec935ab3b Hans de Goede 2012-03-18 304 * This will only cause a system reset if
the 0-1 flank happens when
312869ec935ab3b Hans de Goede 2012-03-18 305 * output enable is true. Setting output
enable after the flank will
312869ec935ab3b Hans de Goede 2012-03-18 306 * not cause a reset, nor will the timer
expiring a second time.
312869ec935ab3b Hans de Goede 2012-03-18 307 * This means we must clear the watchdog
event bit in case it is set.
312869ec935ab3b Hans de Goede 2012-03-18 308 *
312869ec935ab3b Hans de Goede 2012-03-18 309 * The timer may still be running (after a
recent watchdog_stop) and
312869ec935ab3b Hans de Goede 2012-03-18 310 * mere milliseconds away from expiring,
so the timer must be reset
312869ec935ab3b Hans de Goede 2012-03-18 311 * first!
312869ec935ab3b Hans de Goede 2012-03-18 312 */
312869ec935ab3b Hans de Goede 2012-03-18 313
312869ec935ab3b Hans de Goede 2012-03-18 314 mutex_lock(data->io_lock);
312869ec935ab3b Hans de Goede 2012-03-18 315
312869ec935ab3b Hans de Goede 2012-03-18 316 /* 1. Reset the watchdog countdown counter
*/
312869ec935ab3b Hans de Goede 2012-03-18 317 ret =
sch56xx_write_virtual_reg(data->addr, SCH56XX_REG_WDOG_PRESET,
312869ec935ab3b Hans de Goede 2012-03-18 318 data->watchdog_preset);
312869ec935ab3b Hans de Goede 2012-03-18 319 if (ret)
312869ec935ab3b Hans de Goede 2012-03-18 320 goto leave;
312869ec935ab3b Hans de Goede 2012-03-18 321
85a2e40cb505357 Hans de Goede 2012-05-22 322 /* 2. Enable output */
85a2e40cb505357 Hans de Goede 2012-05-22 323 val = data->watchdog_output_enable |
SCH56XX_WDOG_OUTPUT_ENABLE;
312869ec935ab3b Hans de Goede 2012-03-18 324 ret =
sch56xx_write_virtual_reg(data->addr,
85a2e40cb505357 Hans de Goede 2012-05-22 325 SCH56XX_REG_WDOG_OUTPUT_ENABLE, val);
312869ec935ab3b Hans de Goede 2012-03-18 326 if (ret)
312869ec935ab3b Hans de Goede 2012-03-18 327 goto leave;
312869ec935ab3b Hans de Goede 2012-03-18 328
312869ec935ab3b Hans de Goede 2012-03-18 329 data->watchdog_output_enable = val;
312869ec935ab3b Hans de Goede 2012-03-18 330
312869ec935ab3b Hans de Goede 2012-03-18 331 /* 3. Clear the watchdog event bit if set
*/
312869ec935ab3b Hans de Goede 2012-03-18 332 val = inb(data->addr + 9);
312869ec935ab3b Hans de Goede 2012-03-18 333 if (val & 0x01)
312869ec935ab3b Hans de Goede 2012-03-18 334 outb(0x01, data->addr + 9);
312869ec935ab3b Hans de Goede 2012-03-18 335
312869ec935ab3b Hans de Goede 2012-03-18 336 leave:
312869ec935ab3b Hans de Goede 2012-03-18 337 mutex_unlock(data->io_lock);
312869ec935ab3b Hans de Goede 2012-03-18 338 return ret;
312869ec935ab3b Hans de Goede 2012-03-18 339 }
312869ec935ab3b 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