From: Subhajit Ghosh <subhajit.ghosh@tweaklogic.com>
To: Jonathan Cameron <jic23@kernel.org>,
Matti Vaittinen <mazziesaccount@gmail.com>
Cc: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>,
Lars-Peter Clausen <lars@metafoo.de>,
linux-kernel@vger.kernel.org,
David Laight <David.Laight@aculab.com>,
linux-iio@vger.kernel.org
Subject: Re: [RESEND PATCH v2] iio: gts-helper: Fix division loop
Date: Sun, 18 Feb 2024 01:09:33 +1030 [thread overview]
Message-ID: <dfe6e5da-b104-4acd-b323-4a7fa980de88@tweaklogic.com> (raw)
In-Reply-To: <20240216135812.07c9b769@jic23-huawei>
On 17/2/24 00:28, Jonathan Cameron wrote:
> On Mon, 12 Feb 2024 13:20:09 +0200
> Matti Vaittinen <mazziesaccount@gmail.com> wrote:
>
>> The loop based 64bit division may run for a long time when dividend is a
>> lot bigger than the divider. Replace the division loop by the
>> div64_u64() which implementation may be significantly faster.
>>
>> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
>> Fixes: 38416c28e168 ("iio: light: Add gain-time-scale helpers")
>>
>> ---
>> This is a resend. Only change is the base which is now the v6.8-rc4 and
>> not the v6.8-rc1
> Given I'm not rushing this in, it is going via my togreg tree, so the
> rebase wasn't really helpful (thankfully didn't stop it applying).
> Would have been fine to send a ping response to the first posting of it.
>
> I was leaving some time for David or Subhajit to have time to take
> another look, but guess they are either happy with this or busy.
>
> Applied to the togreg branch of iio.git and pushed out as testing for
> all the normal reasons.
>
> Jonathan
>
>>
>> This change was earlier applied and reverted as it confusingly lacked of
>> the removal of the overflow check (which is only needed when we do
>> looping "while (full > scale * (u64)tmp)". As this loop got removed, the
>> check got also obsolete and leaving it to the code caused some
>> confusion.
>>
>> So, I marked this as a v2, where v1 is the reverted change discussed
>> here:
>> https://lore.kernel.org/linux-iio/ZZZ7pJBGkTdFFqiY@dc78bmyyyyyyyyyyyyydt-3.rev.dnainternet.fi/
>>
>> Revision history:
>> v1 => v2:
>> - Drop the obsolete overflow check
>> - Rebased on top of the v6.8-rc4
>>
>> iio: gts: loop fix fix
>> ---
>> drivers/iio/industrialio-gts-helper.c | 15 +--------------
>> 1 file changed, 1 insertion(+), 14 deletions(-)
>>
>> diff --git a/drivers/iio/industrialio-gts-helper.c b/drivers/iio/industrialio-gts-helper.c
>> index 7653261d2dc2..b51eb6cb766f 100644
>> --- a/drivers/iio/industrialio-gts-helper.c
>> +++ b/drivers/iio/industrialio-gts-helper.c
>> @@ -34,24 +34,11 @@
>> static int iio_gts_get_gain(const u64 max, const u64 scale)
>> {
>> u64 full = max;
>> - int tmp = 1;
>>
>> if (scale > full || !scale)
>> return -EINVAL;
>>
>> - if (U64_MAX - full < scale) {
>> - /* Risk of overflow */
>> - if (full - scale < scale)
>> - return 1;
>> -
>> - full -= scale;
>> - tmp++;
>> - }
>> -
>> - while (full > scale * (u64)tmp)
>> - tmp++;
>> -
>> - return tmp;
>> + return div64_u64(full, scale);
>> }
>>
>> /**
Hi Matti and Jonathan,
I somehow missed testing this patch earlier. The above patch works fine with apds9306 v7 driver(which work in progress!).
There are no errors.
My test script is simple:
#!/bin/bash
D=0
S=`cat /sys/bus/iio/devices/iio:device${D}/in_illuminance_scale_available`
for s in $S; do
echo $s
echo $s > /sys/bus/iio/devices/iio:device${D}/in_illuminance_scale
sleep 5
done
One question - if I test a patch like this, do I put a "Tested-by" tag or just mention that I have tested it?
Regards,
Subhajit Ghosh
>>
>> base-commit: 841c35169323cd833294798e58b9bf63fa4fa1de
>
next prev parent reply other threads:[~2024-02-17 14:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-12 11:20 [RESEND PATCH v2] iio: gts-helper: Fix division loop Matti Vaittinen
2024-02-16 13:58 ` Jonathan Cameron
2024-02-17 14:39 ` Subhajit Ghosh [this message]
2024-02-17 16:27 ` Jonathan Cameron
2024-02-18 5:26 ` Subhajit Ghosh
2024-02-19 7:22 ` Matti Vaittinen
2024-02-19 19:32 ` Jonathan Cameron
2024-02-24 0:11 ` Subhajit Ghosh
2024-02-19 7:18 ` Matti Vaittinen
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=dfe6e5da-b104-4acd-b323-4a7fa980de88@tweaklogic.com \
--to=subhajit.ghosh@tweaklogic.com \
--cc=David.Laight@aculab.com \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matti.vaittinen@fi.rohmeurope.com \
--cc=mazziesaccount@gmail.com \
/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