Hi all, This series adds some resets for SMBus and for the I2C core. Along with it, we make SMBus slave error printing a little more helpful.
These reset issues were very infrequent, they would maybe occur in 1 out of hundreds of resets in our testing, but the way they happen is pretty straightforward. Basically as long as a reset happens in the middle of a transaction, the state of the old transaction would still partially be there after the reset. Once a new transaction comes in, the partial stale state can cause the new transaction to incorrectly fail. Thanks, Joe Joe Komlodi (4): hw/i2c: core: Add reset hw/i2c/smbus_slave: Add object path on error prints hw/i2c: smbus_slave: Reset state on reset hw/i2c: smbus: mux: Reset SMBusDevice state on reset hw/i2c/core.c | 30 +++++++++++++++++++++++++----- hw/i2c/i2c_mux_pca954x.c | 5 +++++ hw/i2c/smbus_slave.c | 20 ++++++++++++++++++-- include/hw/i2c/i2c.h | 6 +++++- include/hw/i2c/smbus_slave.h | 1 + 5 files changed, 54 insertions(+), 8 deletions(-) -- 2.43.0.472.g3155946c3a-goog