All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Toke Høiland-Jørgensen" <toke@redhat.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>,
	Eric Dumazet <eric.dumazet@gmail.com>
Cc: Pravin B Shelar <pshelar@ovn.org>,
	"David S . Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Tonghao Zhang <xiangxia.m.yue@gmail.com>,
	netdev <netdev@vger.kernel.org>,
	dev@openvswitch.org,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] net: openvswitch: use do_div() for 64-by-32 divisions:
Date: Fri, 24 Apr 2020 18:45:47 +0200	[thread overview]
Message-ID: <87ftcs3k90.fsf@toke.dk> (raw)
In-Reply-To: <CAMuHMdWVmP04cXEgAkOc9Qdb2Y2xjGd1YEOcMt7ehE70ZwdqjQ@mail.gmail.com>

Geert Uytterhoeven <geert@linux-m68k.org> writes:

> Hi Eric,
>
> On Fri, Apr 24, 2020 at 5:05 PM Eric Dumazet <eric.dumazet@gmail.com> wrote:
>> On 4/24/20 5:10 AM, Geert Uytterhoeven wrote:
>> > On 32-bit architectures (e.g. m68k):
>> >
>> >     ERROR: modpost: "__udivdi3" [net/openvswitch/openvswitch.ko] undefined!
>> >     ERROR: modpost: "__divdi3" [net/openvswitch/openvswitch.ko] undefined!
>> >
>> > Fixes: e57358873bb5d6ca ("net: openvswitch: use u64 for meter bucket")
>> > Reported-by: noreply@ellerman.id.au
>> > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
>> > ---
>> >  net/openvswitch/meter.c | 2 +-
>> >  1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/net/openvswitch/meter.c b/net/openvswitch/meter.c
>> > index 915f31123f235c03..3498a5ab092ab2b8 100644
>> > --- a/net/openvswitch/meter.c
>> > +++ b/net/openvswitch/meter.c
>> > @@ -393,7 +393,7 @@ static struct dp_meter *dp_meter_create(struct nlattr **a)
>> >                * Start with a full bucket.
>> >                */
>> >               band->bucket = (band->burst_size + band->rate) * 1000ULL;
>> > -             band_max_delta_t = band->bucket / band->rate;
>> > +             band_max_delta_t = do_div(band->bucket, band->rate);
>> >               if (band_max_delta_t > meter->max_delta_t)
>> >                       meter->max_delta_t = band_max_delta_t;
>> >               band++;
>> >
>>
>> This is fascinating... Have you tested this patch ?
>
> Sorry, I should have said this is compile-tested only.
>
>> Please double check what do_div() return value is supposed to be !
>
> I do not have any openvswitch setups, let alone on the poor m68k box.

I think what Eric is referring to is this, from the documentation of
do_div:

 * do_div - returns 2 values: calculate remainder and update new dividend
 * @n: uint64_t dividend (will be updated)
 * @base: uint32_t divisor
 *
 * Summary:
 * ``uint32_t remainder = n % base;``
 * ``n = n / base;``
 *
 * Return: (uint32_t)remainder


Specifically that last part :)

-Toke


  reply	other threads:[~2020-04-24 16:45 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-24 12:10 [PATCH] net: openvswitch: use do_div() for 64-by-32 divisions: Geert Uytterhoeven
2020-04-24 15:05 ` Eric Dumazet
2020-04-24 15:12   ` Geert Uytterhoeven
2020-04-24 16:45     ` Toke Høiland-Jørgensen [this message]
2020-04-24 17:54       ` Geert Uytterhoeven
2020-04-25  3:40         ` Tonghao Zhang

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=87ftcs3k90.fsf@toke.dk \
    --to=toke@redhat.com \
    --cc=davem@davemloft.net \
    --cc=dev@openvswitch.org \
    --cc=eric.dumazet@gmail.com \
    --cc=geert@linux-m68k.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pshelar@ovn.org \
    --cc=xiangxia.m.yue@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 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.