HomeFreeBSD

sys/dev/ichsmb: Silence unhandled SMBALERT device_printfs

Description

sys/dev/ichsmb: Silence unhandled SMBALERT device_printfs

The ichsmb driver does not actually handle SMBALERT, other than by logging the
first 16 occurences of the ICH_HST_STA_SMBALERT_STS_SMBALERT status
flag. Because the SMBALERT is not acknowledged by the host, clearing it in the
host status register does not appear to work as long as some slave device is
pulling the SMBALERT line low, at least for C2000 chips. As a result, if a slave
device does pull SMBALERT low the interrupt handler will always loop its maximum
of 16 times attempting to clear all status register flags and device_printf the
status register. The result is the kernel message buffer is littered with these
device_printfs at every interrupt.

To remedy the problem, the ICH_HST_STA_SMBALERT_STS flag is zeroed in the read
host status register value, just as with ICH_HST_STA_INUSE_STS and
ICH_HST_STA_HOST_BUSY. This allows the loop to break when no other flags that
must be handled are set in the host status register. Additionally, because the
SMBALERT is not actually handled the SMBALERT logging is omitted as it has no
actual function at this time.

Reviewed by: imp
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D39966

Details

Provenance
linnemannr_gmail.comAuthored on Jun 26 2023, 8:25 AM
kpCommitted on Jun 26 2023, 8:29 AM
Reviewer
imp
Differential Revision
D39966: sys/dev/ichsmb: Silence unhandled SMBALERT device_printfs
Parents
rG08bc2cc4c4d8: LinuxKPI: cast jiffies_to_msecs() result
Branches
Unknown
Tags
Unknown