Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Sep 2021 00:44:04 GMT
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 5f6b026eee32 - stable/12 - ipmi(4): Limit maximum watchdog pre-timeout interval.
Message-ID:  <202109290044.18T0i4ie062426@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by mav:

URL: https://cgit.FreeBSD.org/src/commit/?id=5f6b026eee3201025a02cf81ca41c225d56b99d2

commit 5f6b026eee3201025a02cf81ca41c225d56b99d2
Author:     Alexander Motin <mav@FreeBSD.org>
AuthorDate: 2021-09-15 01:06:39 +0000
Commit:     Alexander Motin <mav@FreeBSD.org>
CommitDate: 2021-09-29 00:44:02 +0000

    ipmi(4): Limit maximum watchdog pre-timeout interval.
    
    Previous code by default setting pre-timeout interval to 120 seconds
    made impossible to set timeout interval below that, resulting in error
    0xcc (Invalid data field in Request) at least on Supermicro boards.
    
    To fix that limit maximum pre-timeout interval to ~1/4 of the timeout
    interval, that sounds like a reasonable default: not too short to fire
    too late, but also not too long to give many false reports.
    
    MFC after:      2 weeks
    
    (cherry picked from commit 6c2d4404161aa2bac1c7992afbf5a763f1a6f66e)
---
 sys/dev/ipmi/ipmi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/dev/ipmi/ipmi.c b/sys/dev/ipmi/ipmi.c
index d48a7d10c289..e95abc3b3127 100644
--- a/sys/dev/ipmi/ipmi.c
+++ b/sys/dev/ipmi/ipmi.c
@@ -662,7 +662,8 @@ ipmi_set_watchdog(struct ipmi_softc *sc, unsigned int sec)
 		req->ir_request[0] = IPMI_SET_WD_TIMER_DONT_STOP
 		    | IPMI_SET_WD_TIMER_SMS_OS;
 		req->ir_request[1] = (wd_timer_actions & 0xff);
-		req->ir_request[2] = (wd_pretimeout_countdown & 0xff);
+		req->ir_request[2] = min(0xff,
+		    min(wd_pretimeout_countdown, (sec + 2) / 4));
 		req->ir_request[3] = 0;	/* Timer use */
 		req->ir_request[4] = (sec * 10) & 0xff;
 		req->ir_request[5] = (sec * 10) >> 8;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202109290044.18T0i4ie062426>