All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>,
	Nicholas Mc Guire
	<hofrat-Q945KHDl0DbYtjvyW6yDsg@public.gmane.org>
Cc: Thomas Petazzoni
	<thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Maxime Ripard
	<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>,
	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] i2c: mv64xxx: remove unreachable signal case handling
Date: Wed, 17 Jun 2015 15:16:11 +0200	[thread overview]
Message-ID: <5581731B.10506@free-electrons.com> (raw)
In-Reply-To: <20150617130030.GG13393@katana>

Hi Wolfram, Nicholas,

On 17/06/2015 15:00, Wolfram Sang wrote:
> On Thu, Jun 11, 2015 at 05:27:33PM +0200, Nicholas Mc Guire wrote:
>> 'commit d295a86eab20 ("i2c: mv64xxx: work around signals causing I2C
>> transactions to be aborted")' removed the wait_event_interruptible_timeout 
>> to prevent half/mixed i2c messages from being sent/received but forgot to
>> drop the signal received cases in the return handling. This just removes
>> this dead code and simplifies the error message as "time_left" only can be 
>> 0 here and thus it conveys no additional information.
>>
>> Signed-off-by: Nicholas Mc Guire <hofrat-Q945KHDl0DbYtjvyW6yDsg@public.gmane.org>
>> ---
>>
>> Patch was compile tested with multi_v7_defconfig 
>> (implies CONFIG_I2C_MV64XXX=y)
>>
>> Patch is against 4.1-rc7 (localversion-next is -next-20150611)
> 
> Hmm, IMO this patch is too intrusive to be applied without actual
> testing.
> 
>>
>>  drivers/i2c/busses/i2c-mv64xxx.c |   15 +++------------
>>  1 file changed, 3 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
>> index 30059c1..a4f8ece 100644
>> --- a/drivers/i2c/busses/i2c-mv64xxx.c
>> +++ b/drivers/i2c/busses/i2c-mv64xxx.c
>> @@ -534,7 +534,6 @@ mv64xxx_i2c_wait_for_completion(struct mv64xxx_i2c_data *drv_data)
>>  {
>>  	long		time_left;
>>  	unsigned long	flags;
>> -	char		abort = 0;
>>  
>>  	time_left = wait_event_timeout(drv_data->waitq,
>>  		!drv_data->block, drv_data->adapter.timeout);
>> @@ -542,25 +541,17 @@ mv64xxx_i2c_wait_for_completion(struct mv64xxx_i2c_data *drv_data)
>>  	spin_lock_irqsave(&drv_data->lock, flags);
>>  	if (!time_left) { /* Timed out */
>>  		drv_data->rc = -ETIMEDOUT;
>> -		abort = 1;
>> -	} else if (time_left < 0) { /* Interrupted/Error */
>> -		drv_data->rc = time_left; /* errno value */
>> -		abort = 1;
>> -	}
>> -
>> -	if (abort && drv_data->block) {
>>  		drv_data->aborting = 1;
>>  		spin_unlock_irqrestore(&drv_data->lock, flags);
>>  
>>  		time_left = wait_event_timeout(drv_data->waitq,
>>  			!drv_data->block, drv_data->adapter.timeout);
>>  
>> -		if ((time_left <= 0) && drv_data->block) {
> 
> I am especially unsure about the drv_data->block removal. Did you double
> check if we can do this?
> 
>> +		if (time_left == 0) {
>>  			drv_data->state = MV64XXX_I2C_STATE_IDLE;
>>  			dev_err(&drv_data->adapter.dev,
>> -				"mv64xxx: I2C bus locked, block: %d, "
>> -				"time_left: %d\n", drv_data->block,
>> -				(int)time_left);
>> +				"mv64xxx: I2C bus locked, block: %d\n",
>> +				drv_data->block);
> 
> And if so, shouldn't that also be always 1 in the output here?
> 
>>  			mv64xxx_i2c_hw_init(drv_data);
>>  		}
>>  	} else
> 
> Maybe (not sure) it also helps to split the patch into everything
> dealing with time_left as patch 1) and simplifying by drv_data->block
> removal as patch2?

I agree. I would like to see 2 patches. The first one should be not controversial
and could be applied whereas the second one will need a deeper review.

Thanks,

Gregory



-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: Gregory CLEMENT <gregory.clement@free-electrons.com>
To: Wolfram Sang <wsa@the-dreams.de>, Nicholas Mc Guire <hofrat@osadl.org>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	Andrew Lunn <andrew@lunn.ch>, Chen-Yu Tsai <wens@csie.org>,
	linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] i2c: mv64xxx: remove unreachable signal case handling
Date: Wed, 17 Jun 2015 15:16:11 +0200	[thread overview]
Message-ID: <5581731B.10506@free-electrons.com> (raw)
In-Reply-To: <20150617130030.GG13393@katana>

Hi Wolfram, Nicholas,

On 17/06/2015 15:00, Wolfram Sang wrote:
> On Thu, Jun 11, 2015 at 05:27:33PM +0200, Nicholas Mc Guire wrote:
>> 'commit d295a86eab20 ("i2c: mv64xxx: work around signals causing I2C
>> transactions to be aborted")' removed the wait_event_interruptible_timeout 
>> to prevent half/mixed i2c messages from being sent/received but forgot to
>> drop the signal received cases in the return handling. This just removes
>> this dead code and simplifies the error message as "time_left" only can be 
>> 0 here and thus it conveys no additional information.
>>
>> Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
>> ---
>>
>> Patch was compile tested with multi_v7_defconfig 
>> (implies CONFIG_I2C_MV64XXX=y)
>>
>> Patch is against 4.1-rc7 (localversion-next is -next-20150611)
> 
> Hmm, IMO this patch is too intrusive to be applied without actual
> testing.
> 
>>
>>  drivers/i2c/busses/i2c-mv64xxx.c |   15 +++------------
>>  1 file changed, 3 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
>> index 30059c1..a4f8ece 100644
>> --- a/drivers/i2c/busses/i2c-mv64xxx.c
>> +++ b/drivers/i2c/busses/i2c-mv64xxx.c
>> @@ -534,7 +534,6 @@ mv64xxx_i2c_wait_for_completion(struct mv64xxx_i2c_data *drv_data)
>>  {
>>  	long		time_left;
>>  	unsigned long	flags;
>> -	char		abort = 0;
>>  
>>  	time_left = wait_event_timeout(drv_data->waitq,
>>  		!drv_data->block, drv_data->adapter.timeout);
>> @@ -542,25 +541,17 @@ mv64xxx_i2c_wait_for_completion(struct mv64xxx_i2c_data *drv_data)
>>  	spin_lock_irqsave(&drv_data->lock, flags);
>>  	if (!time_left) { /* Timed out */
>>  		drv_data->rc = -ETIMEDOUT;
>> -		abort = 1;
>> -	} else if (time_left < 0) { /* Interrupted/Error */
>> -		drv_data->rc = time_left; /* errno value */
>> -		abort = 1;
>> -	}
>> -
>> -	if (abort && drv_data->block) {
>>  		drv_data->aborting = 1;
>>  		spin_unlock_irqrestore(&drv_data->lock, flags);
>>  
>>  		time_left = wait_event_timeout(drv_data->waitq,
>>  			!drv_data->block, drv_data->adapter.timeout);
>>  
>> -		if ((time_left <= 0) && drv_data->block) {
> 
> I am especially unsure about the drv_data->block removal. Did you double
> check if we can do this?
> 
>> +		if (time_left == 0) {
>>  			drv_data->state = MV64XXX_I2C_STATE_IDLE;
>>  			dev_err(&drv_data->adapter.dev,
>> -				"mv64xxx: I2C bus locked, block: %d, "
>> -				"time_left: %d\n", drv_data->block,
>> -				(int)time_left);
>> +				"mv64xxx: I2C bus locked, block: %d\n",
>> +				drv_data->block);
> 
> And if so, shouldn't that also be always 1 in the output here?
> 
>>  			mv64xxx_i2c_hw_init(drv_data);
>>  		}
>>  	} else
> 
> Maybe (not sure) it also helps to split the patch into everything
> dealing with time_left as patch 1) and simplifying by drv_data->block
> removal as patch2?

I agree. I would like to see 2 patches. The first one should be not controversial
and could be applied whereas the second one will need a deeper review.

Thanks,

Gregory



-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2015-06-17 13:16 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-11 15:27 [PATCH] i2c: mv64xxx: remove unreachable signal case handling Nicholas Mc Guire
     [not found] ` <1434036453-23336-1-git-send-email-hofrat-Q945KHDl0DbYtjvyW6yDsg@public.gmane.org>
2015-06-17 13:00   ` Wolfram Sang
2015-06-17 13:00     ` Wolfram Sang
2015-06-17 13:16     ` Gregory CLEMENT [this message]
2015-06-17 13:16       ` Gregory CLEMENT
     [not found]       ` <5581731B.10506-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2015-06-17 13:49         ` Nicholas Mc Guire
2015-06-17 13:49           ` Nicholas Mc Guire

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=5581731B.10506@free-electrons.com \
    --to=gregory.clement-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
    --cc=andrew-g2DYL2Zd6BY@public.gmane.org \
    --cc=hofrat-Q945KHDl0DbYtjvyW6yDsg@public.gmane.org \
    --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.org \
    --cc=wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.