From: Gregory CLEMENT <gregory.clement@bootlin.com>
To: "Wolfram Sang" <wsa@kernel.org>, "Marek Behún" <kabel@kernel.org>
Cc: linux-i2c@vger.kernel.org, Samuel Holland <samuel@sholland.org>,
Ondrej Jirman <megous@megous.com>
Subject: Re: [PATCH] i2c: mv64xxx: Fix random system lock caused by runtime PM
Date: Wed, 14 Apr 2021 15:28:18 +0200 [thread overview]
Message-ID: <87mtu1atcd.fsf@BL-laptop> (raw)
In-Reply-To: <20210413195854.GB2751@kunai>
> On Thu, Apr 08, 2021 at 04:00:00AM +0200, Marek Behún wrote:
>> I noticed a weird bug with this driver on Marvell CN9130 Customer
>> Reference Board.
>>
>> Sometime after boot, the system locks with the following message:
>> [104.071363] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
>>
>> The system does not respond afterwards, only warns about RCU stalls.
>>
>> This first appeared with commit e5c02cf54154 ("i2c: mv64xxx: Add runtime
>> PM support").
>>
>> With further experimentation I discovered that adding a delay into
>> mv64xxx_i2c_hw_init() fixes this issue. This function is called before
>> every xfer, due to how runtime PM works in this driver. It seems that in
>> order to work correctly, a delay is needed after the bus is reset in
>> this function.
Marek,
As you mentioned it was related to reset and the issue occurred with the
support of runtime PM. Did you try to add the delay only in the function
mv64xxx_i2c_runtime_resume(), just after the mv64xxx_i2c_hw_init() call ?
>>
>> Since there already is a known erratum with this controller needing a
>> delay, I assume that this is just another place this needs to be
>> applied. Therefore I apply the delay only if errata_delay is true.
>>
>> Signed-off-by: Marek Behún <kabel@kernel.org>
>
> Gregory? Looks reasonable to me and if so, we should have this in 5.12
> already. Comments from others are welcome, too, of course.
Hello Wolfram,
I don't have this specific platform. However, as you said it looks
reasonable and as it fixes an issue. And even if I had a pending
question, it is just an optimisation so you can add my
Acked-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Gregory
>
>> ---
>> drivers/i2c/busses/i2c-mv64xxx.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
>> index c590d36b5fd1..5c8e94b6cdb5 100644
>> --- a/drivers/i2c/busses/i2c-mv64xxx.c
>> +++ b/drivers/i2c/busses/i2c-mv64xxx.c
>> @@ -221,6 +221,10 @@ mv64xxx_i2c_hw_init(struct mv64xxx_i2c_data *drv_data)
>> writel(0, drv_data->reg_base + drv_data->reg_offsets.ext_addr);
>> writel(MV64XXX_I2C_REG_CONTROL_TWSIEN | MV64XXX_I2C_REG_CONTROL_STOP,
>> drv_data->reg_base + drv_data->reg_offsets.control);
>> +
>> + if (drv_data->errata_delay)
>> + udelay(5);
>> +
>> drv_data->state = MV64XXX_I2C_STATE_IDLE;
>> }
>>
>> --
>> 2.26.2
>>
--
Gregory Clement, Bootlin
Embedded Linux and Kernel engineering
http://bootlin.com
next prev parent reply other threads:[~2021-04-14 13:28 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-08 2:00 [PATCH] i2c: mv64xxx: Fix random system lock caused by runtime PM Marek Behún
2021-04-10 16:47 ` Marek Behún
2021-04-13 19:58 ` Wolfram Sang
2021-04-14 13:28 ` Gregory CLEMENT [this message]
2021-04-14 14:29 ` Marek Behún
2021-04-14 13:42 ` Samuel Holland
2021-04-15 20:13 ` Wolfram Sang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mtu1atcd.fsf@BL-laptop \
--to=gregory.clement@bootlin.com \
--cc=kabel@kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=megous@megous.com \
--cc=samuel@sholland.org \
--cc=wsa@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox