On Tue, Jul 30, 2024 at 07:19:41AM -0700, Guenter Roeck wrote: > If a SMBUs alert is received and the originating device is not found, Fixed this capital 'U' while applying. > the reason may be that the address reported on the SMBus alert address > is corrupted, for example because multiple devices asserted alert and > do not correctly implement SMBus arbitration. > > If this happens, call alert handlers on all devices connected to the > given I2C bus, in the hope that this cleans up the situation. > > This change reliably fixed the problem on a system with multiple devices > on a single bus. Example log where the device on address 0x18 (ADM1021) > and on address 0x4c (ADT7461A) both had the alert line asserted: > > smbus_alert 3-000c: SMBALERT# from dev 0x0c, flag 0 > smbus_alert 3-000c: no driver alert()! > smbus_alert 3-000c: SMBALERT# from dev 0x0c, flag 0 > smbus_alert 3-000c: no driver alert()! > lm90 3-0018: temp1 out of range, please check! > lm90 3-0018: Disabling ALERT# > lm90 3-0029: Everything OK > lm90 3-002a: Everything OK > lm90 3-004c: temp1 out of range, please check! > lm90 3-004c: temp2 out of range, please check! > lm90 3-004c: Disabling ALERT# > > Fixes: b5527a7766f0 ("i2c: Add SMBus alert support") > Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx> Applied to for-current, thanks! > - * the loop because it will never terminate. > - * Bail out in this case. > + * the loop because it will never terminate. Try again, this > + * time calling the alert handlers of all devices connected to > + * the bus, and abort the loop afterwards. If this helps, we > + * are all set. If it doesn't, there is nothing else we can do, > + * so we might as well abort the loop. I really like this updated comment. Kudos!
Attachment:
signature.asc
Description: PGP signature