All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Chris Packham <Chris.Packham@alliedtelesis.co.nz>,
	"jdelvare@suse.com" <jdelvare@suse.com>
Cc: "linux-hwmon@vger.kernel.org" <linux-hwmon@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-i2c@vger.kernel.org" <linux-i2c@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: Errant readings on LM81 with T2080 SoC
Date: Mon, 8 Mar 2021 21:24:59 -0800	[thread overview]
Message-ID: <6cb6b5f2-52a3-c7c3-9a10-7dd0f86414a8@roeck-us.net> (raw)
In-Reply-To: <d36a85c2-4ec5-6c28-9e2a-282de1eaf955@alliedtelesis.co.nz>

On 3/8/21 8:36 PM, Chris Packham wrote:
> 
> On 9/03/21 11:10 am, Chris Packham wrote:
>>
>> On 8/03/21 5:59 pm, Guenter Roeck wrote:
>>> On 3/7/21 8:37 PM, Chris Packham wrote:
>>> [ ... ]
>>>>> That's from -ENXIO which is used in only one place in i2c-mpc.c. I'll
>>>>> enable some debug and see what we get.
>>>> For the errant readings there was nothing abnormal reported by the 
>>>> driver.
>>>>
>>>> For the "No such device or address" I saw "mpc-i2c ffe119000.i2c: No
>>>> RXAK" which matches up with the -ENXIO return.
>>>>
>>> Id suggest to check the time until not busy and stop in mpc_xfer().
>>> Those hot loops are unusual, and may well mess up the code especially
>>> if preempt is enabled.
>> Reworking those loops seems to have had a positive result. I'll do a 
>> bit more testing and hopefully get a patch out later today.
> D'oh my "fix" was to replace the cond_reshed() with msleep(10) which did 
> "fix" the problem but made every i2c read slow. I didn't notice when 
> testing just the lm81 but as soon as I booted the system with more i2c 
> devices I saw stupidly slow boot times.

msleep() is indeed a bad idea. You'd want something like usleep_range()
with increasing timeout. Like start with a few uS and double the sleep time
with each iteration (eg 4-8 / 8-16 / 16-32 / 32-64 / ...).

Guenter

WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: Chris Packham <Chris.Packham@alliedtelesis.co.nz>,
	"jdelvare@suse.com" <jdelvare@suse.com>
Cc: "linux-hwmon@vger.kernel.org" <linux-hwmon@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-i2c@vger.kernel.org" <linux-i2c@vger.kernel.org>
Subject: Re: Errant readings on LM81 with T2080 SoC
Date: Mon, 8 Mar 2021 21:24:59 -0800	[thread overview]
Message-ID: <6cb6b5f2-52a3-c7c3-9a10-7dd0f86414a8@roeck-us.net> (raw)
In-Reply-To: <d36a85c2-4ec5-6c28-9e2a-282de1eaf955@alliedtelesis.co.nz>

On 3/8/21 8:36 PM, Chris Packham wrote:
> 
> On 9/03/21 11:10 am, Chris Packham wrote:
>>
>> On 8/03/21 5:59 pm, Guenter Roeck wrote:
>>> On 3/7/21 8:37 PM, Chris Packham wrote:
>>> [ ... ]
>>>>> That's from -ENXIO which is used in only one place in i2c-mpc.c. I'll
>>>>> enable some debug and see what we get.
>>>> For the errant readings there was nothing abnormal reported by the 
>>>> driver.
>>>>
>>>> For the "No such device or address" I saw "mpc-i2c ffe119000.i2c: No
>>>> RXAK" which matches up with the -ENXIO return.
>>>>
>>> Id suggest to check the time until not busy and stop in mpc_xfer().
>>> Those hot loops are unusual, and may well mess up the code especially
>>> if preempt is enabled.
>> Reworking those loops seems to have had a positive result. I'll do a 
>> bit more testing and hopefully get a patch out later today.
> D'oh my "fix" was to replace the cond_reshed() with msleep(10) which did 
> "fix" the problem but made every i2c read slow. I didn't notice when 
> testing just the lm81 but as soon as I booted the system with more i2c 
> devices I saw stupidly slow boot times.

msleep() is indeed a bad idea. You'd want something like usleep_range()
with increasing timeout. Like start with a few uS and double the sleep time
with each iteration (eg 4-8 / 8-16 / 16-32 / 32-64 / ...).

Guenter

  reply	other threads:[~2021-03-09  5:25 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-07 22:52 Errant readings on LM81 with T2080 SoC Chris Packham
2021-03-07 22:52 ` Chris Packham
2021-03-08  0:31 ` Guenter Roeck
2021-03-08  0:31   ` Guenter Roeck
2021-03-08  2:27   ` Chris Packham
2021-03-08  2:27     ` Chris Packham
2021-03-08  4:37     ` Chris Packham
2021-03-08  4:37       ` Chris Packham
2021-03-08  4:59       ` Guenter Roeck
2021-03-08  4:59         ` Guenter Roeck
2021-03-08 20:27         ` Chris Packham
2021-03-08 20:27           ` Chris Packham
2021-03-08 22:39           ` Guenter Roeck
2021-03-08 22:39             ` Guenter Roeck
2021-03-10  2:19           ` Chris Packham
2021-03-10  2:19             ` Chris Packham
2021-03-10  5:06             ` Guenter Roeck
2021-03-10  5:06               ` Guenter Roeck
2021-03-10 21:48               ` Chris Packham
2021-03-10 21:48                 ` Chris Packham
2021-03-11  7:41                 ` Guenter Roeck
2021-03-11  7:41                   ` Guenter Roeck
2021-03-11  8:18                   ` Wolfram Sang
2021-03-11  8:18                     ` Wolfram Sang
2021-03-11 15:19                     ` Guenter Roeck
2021-03-11 15:19                       ` Guenter Roeck
2021-03-11 21:17                     ` Chris Packham
2021-03-11 21:17                       ` Chris Packham
2021-03-11 21:34                       ` Guenter Roeck
2021-03-11 21:34                         ` Guenter Roeck
2021-03-11 23:47                         ` Chris Packham
2021-03-11 23:47                           ` Chris Packham
2021-03-12  0:07                           ` Guenter Roeck
2021-03-12  0:07                             ` Guenter Roeck
2021-03-12  0:19                             ` Chris Packham
2021-03-12  0:19                               ` Chris Packham
2021-03-12  9:25                         ` David Laight
2021-03-14 21:26                           ` Chris Packham
2021-03-15  9:46                             ` David Laight
2021-03-18  5:44                             ` Wolfram Sang
2021-03-18  5:44                               ` Wolfram Sang
2021-03-18  3:46                         ` Chris Packham
2021-03-18  3:46                           ` Chris Packham
2021-03-18  4:02                           ` Guenter Roeck
2021-03-18  4:02                             ` Guenter Roeck
2021-03-18  5:39                             ` Wolfram Sang
2021-03-18  5:39                               ` Wolfram Sang
2021-03-08 22:10         ` Chris Packham
2021-03-08 22:10           ` Chris Packham
2021-03-09  4:36           ` Chris Packham
2021-03-09  4:36             ` Chris Packham
2021-03-09  5:24             ` Guenter Roeck [this message]
2021-03-09  5:24               ` Guenter Roeck
2021-03-09 23:35   ` Chris Packham
2021-03-09 23:35     ` Chris Packham
2021-03-10  3:29     ` Guenter Roeck
2021-03-10  3:29       ` Guenter Roeck

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=6cb6b5f2-52a3-c7c3-9a10-7dd0f86414a8@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=Chris.Packham@alliedtelesis.co.nz \
    --cc=jdelvare@suse.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.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.