]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
ipmi:si: Use a long timeout when the BMC is misbehaving
authorCorey Minyard <corey@minyard.net>
Fri, 6 Feb 2026 16:33:52 +0000 (10:33 -0600)
committerCorey Minyard <corey@minyard.net>
Fri, 6 Feb 2026 17:06:26 +0000 (11:06 -0600)
If the driver goes into HOSED state, don't reset the timeout to the
short timeout in the timeout handler.

Reported-by: Igor Raits <igor@gooddata.com>
Closes: https://lore.kernel.org/linux-acpi/CAK8fFZ58fidGUCHi5WFX0uoTPzveUUDzT=k=AAm4yWo3bAuCFg@mail.gmail.com/
Fixes: bc3a9d217755 ("ipmi:si: Gracefully handle if the BMC is non-functional")
Cc: stable@vger.kernel.org # 4.18
Signed-off-by: Corey Minyard <corey@minyard.net>
drivers/char/ipmi/ipmi_si_intf.c

index ff159b1162b9b286ed5482e33151084bc8cd3a9c..0049e3792ba17c7cab2f85503211f3d71e313531 100644 (file)
@@ -1119,7 +1119,9 @@ static void smi_timeout(struct timer_list *t)
                     * SI_USEC_PER_JIFFY);
        smi_result = smi_event_handler(smi_info, time_diff);
 
-       if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) {
+       if (smi_info->si_state == SI_HOSED) {
+               timeout = jiffies + SI_TIMEOUT_HOSED;
+       } else if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) {
                /* Running with interrupts, only do long timeouts. */
                timeout = jiffies + SI_TIMEOUT_JIFFIES;
                smi_inc_stat(smi_info, long_timeouts);