From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Devarsh Thakkar <devarsht@ti.com>
Cc: Jani Nikula <jani.nikula@intel.com>,
mchehab@kernel.org, hverkuil-cisco@xs4all.nl,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
benjamin.gaignard@collabora.com, sebastian.fricke@collabora.com,
akpm@linux-foundation.org, gregkh@linuxfoundation.org,
adobriyan@gmail.com, p.zabel@pengutronix.de, airlied@gmail.com,
daniel@ffwll.ch, dri-devel@lists.freedesktop.org,
laurent.pinchart@ideasonboard.com, praneeth@ti.com, nm@ti.com,
vigneshr@ti.com, a-bhatia1@ti.com, j-luthra@ti.com,
b-brnich@ti.com, detheridge@ti.com, p-mantena@ti.com,
vijayp@ti.com, andrzej.p@collabora.com, nicolas@ndufresne.ca
Subject: Re: [PATCH v7 6/8] math.h Add macros to round to closest specified power of 2
Date: Mon, 13 May 2024 15:25:55 +0300 [thread overview]
Message-ID: <ZkIG0-01pz632l4R@smile.fi.intel.com> (raw)
In-Reply-To: <6557050e-6b18-2628-cbab-1a811b2190ba@ti.com>
On Mon, May 13, 2024 at 04:55:58PM +0530, Devarsh Thakkar wrote:
> On 13/05/24 14:29, Andy Shevchenko wrote:
> > On Sat, May 11, 2024 at 11:11:14PM +0530, Devarsh Thakkar wrote:
> >> On 10/05/24 20:45, Jani Nikula wrote:
[...]
> >>> Moreover, I think the naming of round_up() and round_down() should have
> >>> reflected the fact that they operate on powers of 2. It's unfortunate
> >>> that the difference to roundup() and rounddown() is just the underscore!
> >>> That's just a trap.
> >>>
> >>> So let's perhaps not repeat the same with round_closest_up() and
> >>> round_closest_down()?
> >>
> >> Yes the naming is inspired by existing macros i.e. round_up, round_down
> >> (which round up/down to next pow of 2) and DIV_ROUND_CLOSEST (which
> >> round the divided value to closest value) and there are already a lot of
> >> users for these API's :
> >>
> >> linux-next git:(heads/next-20240509) ✗ grep -nr round_up drivers | wc
> >> 730 4261 74775
> >>
> >> linux-next git:(heads/next-20240509) ✗ grep -nr round_down drivers | wc
> >> 226 1293 22194
> >>
> >> linux-next git:(heads/next-20240509) ✗ grep -nr DIV_ROUND_CLOSEST
> >> drivers | wc
> >> 1207 7461 111822
> >
> > Side note, discover `git grep ...`: it's much much faster on Git index,
> > than classic one on a working copy.
> >
> >> so I thought to align with existing naming convention assuming
> >> developers are already familiar with this.
> >>
> >> But if a wider consensus is to go with a newer naming convention then I
> >> am open to it, although a challenge there would be to keep it short. For
> >> e.g. this one is already 3 words, if we go with more explicit
> >> "round_closest_up_pow_2" it looks quite long in my opinion :) .
> >
> > You need properly name the macros. Again, round_up() / roundup() and
> > roundup_pow_of_two() are three _different_ macros, and it's not clear
> > why you can't use one of them in your case.
>
> I can't use any of these because these macros either round up or round down,
> whereas I want to round to closest value for the argument specified by the
> user, be it achieved either by rounding up or rounding down depending upon
> whichever makes the answer closer to the user-specified argument.
>
> To make it clear, I have already included the examples in the macro
> description [2], copying it here, maybe I can put the same examples in the
> commit message too to avoid confusions :
>
> round_closest_up(17, 4) = 16
> round_closest_up(15, 4) = 16
> round_closest_up(14, 4) = 16
>
> round_closest_down(17, 4) = 16
> round_closest_down(15, 4) = 16
> round_closest_down(14, 4) = 12
>
> Coming back to naming, this is as per existing convention used for naming
> round_up, round_down (notice the `_` being used for macros working with pow of
> 2) and DIV_ROUND_CLOSEST (notice the work `closest` used to specify the answer
> to be nearest to specified value). Naming is a bit subjective, but I
> personally don't think it is a good idea to go away with the existing naming
> convention or go with longer names.
>
> > The patch that changes those to a new one are doubtful to begin with.
> > I.e. need a careful review on the arithmetics side of the change
> > including HW capabilities of handling "closest" results.
>
> This is already tested from my side, in-fact I have posted some of the results
> in cover-letter with these macros [1] :
>
> Regarding hardware capabilities, it uses existing round_up, round_down macros
> underneath which are optimized to handle pow of 2 after modifying the user
> provided argument using addition/subtraction and division, so I don't think it
> should generally a problem with the hardware.
> And I see other macros DIV_ROUND_CLOSEST [3] already using similar operations
> i.e. addition/subtraction and division so don't think it should be a problem
> to keep similar other macros in the same file.
Okay, thank you for elaborating. So, what I would expect in the new version of
the series is that:
- align naming (with the existing round*() macros)
- add examples into commit message of the math.h patch
- add test cases (you need to create lib/math_kunit.c for that)
- elaborate in the commit message of the IPU3 change what you posted above
(some kind of a summary)
> [1]:
> https://gist.github.com/devarsht/de6f5142f678bb1a5338abfd9f814abd#file-v7_jpeg_encoder_crop_validation-L204
> [2]: https://lore.kernel.org/all/20240509183952.4064331-1-devarsht@ti.com/
> [3]: https://elixir.bootlin.com/linux/latest/source/include/linux/math.h#L86
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2024-05-13 12:26 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-09 18:39 [PATCH v7 6/8] math.h Add macros to round to closest specified power of 2 Devarsh Thakkar
2024-05-10 15:01 ` Andy Shevchenko
2024-05-10 15:15 ` Jani Nikula
2024-05-10 15:28 ` Andy Shevchenko
2024-05-11 17:41 ` Devarsh Thakkar
2024-05-13 8:59 ` Andy Shevchenko
2024-05-13 11:25 ` Devarsh Thakkar
2024-05-13 12:25 ` Andy Shevchenko [this message]
2024-05-13 13:04 ` Devarsh Thakkar
2024-05-13 13:14 ` Andy Shevchenko
2024-05-11 17:26 ` Devarsh Thakkar
2024-05-12 4:46 ` Alexey Dobriyan
2024-05-13 8:55 ` Andy Shevchenko
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=ZkIG0-01pz632l4R@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=a-bhatia1@ti.com \
--cc=adobriyan@gmail.com \
--cc=airlied@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andrzej.p@collabora.com \
--cc=b-brnich@ti.com \
--cc=benjamin.gaignard@collabora.com \
--cc=daniel@ffwll.ch \
--cc=detheridge@ti.com \
--cc=devarsht@ti.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=hverkuil-cisco@xs4all.nl \
--cc=j-luthra@ti.com \
--cc=jani.nikula@intel.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=nicolas@ndufresne.ca \
--cc=nm@ti.com \
--cc=p-mantena@ti.com \
--cc=p.zabel@pengutronix.de \
--cc=praneeth@ti.com \
--cc=sebastian.fricke@collabora.com \
--cc=vigneshr@ti.com \
--cc=vijayp@ti.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