Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0a9546a authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Revert "watchdog: iTCO_wdt: Account for rebooting on second timeout"

This reverts commit f58ab0b0 which is
commit cb011044e34c293e139570ce5c01aed66a34345c upstream.

It is reported to cause problems with systems and probably should not
have been backported in the first place :(

Link: https://lore.kernel.org/r/20210803165108.4154cd52@endymion


Reported-by: default avatarJean Delvare <jdelvare@suse.de>
Cc: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Wim Van Sebroeck <wim@linux-watchdog.org>
Cc: Sasha Levin <sashal@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 76f5314d
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -72,8 +72,6 @@
#define TCOBASE(p)	((p)->tco_res->start)
/* SMI Control and Enable Register */
#define SMI_EN(p)	((p)->smi_res->start)
#define TCO_EN		(1 << 13)
#define GBL_SMI_EN	(1 << 0)

#define TCO_RLD(p)	(TCOBASE(p) + 0x00) /* TCO Timer Reload/Curr. Value */
#define TCOv1_TMR(p)	(TCOBASE(p) + 0x01) /* TCOv1 Timer Initial Value*/
@@ -346,12 +344,8 @@ static int iTCO_wdt_set_timeout(struct watchdog_device *wd_dev, unsigned int t)

	tmrval = seconds_to_ticks(p, t);

	/*
	 * If TCO SMIs are off, the timer counts down twice before rebooting.
	 * Otherwise, the BIOS generally reboots when the SMI triggers.
	 */
	if (p->smi_res &&
	    (SMI_EN(p) & (TCO_EN | GBL_SMI_EN)) != (TCO_EN | GBL_SMI_EN))
	/* For TCO v1 the timer counts down twice before rebooting */
	if (p->iTCO_version == 1)
		tmrval /= 2;

	/* from the specs: */
@@ -516,7 +510,7 @@ static int iTCO_wdt_probe(struct platform_device *pdev)
		 * Disables TCO logic generating an SMI#
		 */
		val32 = inl(SMI_EN(p));
		val32 &= ~TCO_EN;	/* Turn off SMI clearing watchdog */
		val32 &= 0xffffdfff;	/* Turn off SMI clearing watchdog */
		outl(val32, SMI_EN(p));
	}