iicsmb: Request the bus recursively in bread()
authorAllan Jude <allanjude@FreeBSD.org>
Tue, 23 Feb 2021 20:06:16 +0000 (20:06 +0000)
committerAllan Jude <allanjude@FreeBSD.org>
Tue, 23 Feb 2021 20:06:16 +0000 (20:06 +0000)
commit11ba8488b8636a91668c0ee13d35d9e126dfba53
tree221ce7e2ca7cd6378b64f314e083a3490ce460c0
parent6b7580f7b1b66134286813b971ab575862b95426
iicsmb: Request the bus recursively in bread()

ipmi_ssif will `smbus_request_bus()` to do multiple smbus requests
(which requests the iicbus), and then here in `bread()` we also need to
request the bus because `bread()` takes multiple transactions.
This causes deadlock as it's waiting for the bus it already has without
`IIC_RECURSIVE`.

Sponsored by: Ampere Computing LLC
Submitted by: Klara Inc.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D28742
sys/dev/iicbus/iicsmb.c