Re: [External] Re: [PATCH v2] i2c: aspeed: Fix i2c bus hang in slave read

From: Jian Zhang
Date: Thu Sep 28 2023 - 11:04:32 EST


> From: "Andi Shyti"<andi.shyti@xxxxxxxxxx>
> Date:  Thu, Sep 28, 2023, 22:51
> Subject:  [External] Re: [PATCH v2] i2c: aspeed: Fix i2c bus hang in slave read
> To: "Jian Zhang"<zhangjian.3032@xxxxxxxxxxxxx>
> Cc: <brendan.higgins@xxxxxxxxx>, <benh@xxxxxxxxxxxxxxxxxxx>, <joel@xxxxxxxxx>, <andrew@xxxxxxxx>, <zhangjian3032@xxxxxxxxx>, <yulei.sh@xxxxxxxxxxxxx>, <xiexinnan@xxxxxxxxxxxxx>, "Tommy Huang"<tommy_huang@xxxxxxxxxxxxxx>, "Wolfram Sang"<wsa@xxxxxxxxxx>, "open list:ARM/ASPEED I2C DRIVER"<linux-i2c@xxxxxxxxxxxxxxx>, "moderated list:ARM/ASPEED I2C DRIVER"<openbmc@xxxxxxxxxxxxxxxx>, "moderated list:ARM/ASPEED MACHINE SUPPORT"<linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>, "moderated list:ARM/ASPEED MACHINE SUPPORT"<linux-aspeed@xxxxxxxxxxxxxxxx>, "open list"<linux-kernel@xxxxxxxxxxxxxxx>
> Hi Jian,
>
> On Wed, Sep 27, 2023 at 11:42:43PM +0800, Jian Zhang wrote:
> > When the `CONFIG_I2C_SLAVE` option is enabled and the device operates
> > as a slave, a situation arises where the master sends a START signal
> > without the accompanying STOP signal. This action results in a
> > persistent I2C bus timeout. The core issue stems from the fact that
> > the i2c controller remains in a slave read state without a timeout
> > mechanism. As a consequence, the bus perpetually experiences timeouts.
> >
> > In this case, the i2c bus will be reset, but the slave_state reset is
> > missing.
> >
> > Fixes: fee465150b45 ("i2c: aspeed: Reset the i2c controller when timeout occurs")
> > Signed-off-by: Jian Zhang <zhangjian.3032@xxxxxxxxxxxxx>
>
> Why I'm failing to find your v1 patch? And where is the
> changelog?
Sorry, something was missing,
v2:
* remove the i2c slave reset and only move the `bus->slave_state =
ASPEED_I2C_SLAVE_INACTIVE` to the aspeed_i2c_init

[0]: https://lore.kernel.org/linux-arm-kernel/20230810072155.3726352-1-zhangjian.3032@xxxxxxxxxxxxx/T/
Jian
>
> Andi