Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp10351ybz; Fri, 24 Apr 2020 10:59:05 -0700 (PDT) X-Google-Smtp-Source: APiQypL4yNn1RuiIZqZWl5JfxMPUsLbjiqWhlauMC10VU9yjJzymNfXSSJNHi28NmTOeCdxOJsqo X-Received: by 2002:a50:e8c7:: with SMTP id l7mr8266344edn.309.1587751145470; Fri, 24 Apr 2020 10:59:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587751145; cv=none; d=google.com; s=arc-20160816; b=HzBwCV/sK5N01PCFkIn5Ts7nB1xf4ug3v37xwJuRAuI+8ycgUCLNwfTS7FqHW8HvFK zJrXras6Fp9ga4C6sTtDjy8QwlNbTJIE3KEzP4FzA+a71ZaR3XmKLMF8C+0PZx6GERmd LScq3QaJtoEOnv4gdmxQfmNwUNXoRXaTVVFDKtDOvFUSWmLI1/4+bT6hPeRUSgInQW0g g+xlJq6/By7Ei6QG9BeXTwm7yXNDPipHPl+RTUwcSSYcxhcA9Dx8m1nnAHvojL/XUfwn 4pKA2vfebE1sEQk2b/1oFDPnRrbR4x8lJkj4Rgs1HtAJ2rYIi9ytP0+PgYNz/cQtCKaK LpDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=CrmWCuTocPpsGjLmPFNaZFZ1ieBArUGjKAtSVVacdqs=; b=zIDaUBlPUHA01DXyjOSUkU1vmJfKVNmAs8udMQ89HBgXuqTCFOQ8JBQJXJW2p7h1/H HfQknrM59vPZZ4tLM9L0LSxNFvmCy3l9za3zx5xhCY0unJStSMMSzAwHcB0ZVZY5aM+N E6UbV2u2+fTm2/yzsBLATjMLe9FrEFjNyF3v/Suz6rzb87UozTPJSlopuvoC9sXx6l2x UE6wmQoyRh6l31h6sIotYuYurtnFgGPQUmCiJr9Alm9pRXMlsw9gbJphlu0O63dfcg4c SlWfeNRBxJGeaXh8UPCMLEE28GAzUNeq5FpsNCYjZgmmyg0kVEEZnmXwZfbzOJl3WRCM 6FtA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a22si3587324edx.81.2020.04.24.10.58.41; Fri, 24 Apr 2020 10:59:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728708AbgDXRzA convert rfc822-to-8bit (ORCPT + 99 others); Fri, 24 Apr 2020 13:55:00 -0400 Received: from mail-ot1-f67.google.com ([209.85.210.67]:39538 "EHLO mail-ot1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726793AbgDXRzA (ORCPT ); Fri, 24 Apr 2020 13:55:00 -0400 Received: by mail-ot1-f67.google.com with SMTP id m13so13856196otf.6; Fri, 24 Apr 2020 10:54:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=zuGInC/Mu6yrfyua3ZXVt8I3phxBs6NPOwYz5n5f7xU=; b=S/ZFy3fdCvXu14+vEW3CZa+onNWAJggLuRR6SCBMMC7fqH5sOWBWX4O9s6LC4qjV/F 12Wqjrw5koLIMZDEfs7j8yDkvFalDF/XEiN4IV3nI45FnQhz0gIOZP9a+3M7LEFFW6Y1 XyttEvxs663yoBGB+7rjESJeNCDg8KolChv92C2r6oWh4qJBlo4hjNByXiGwGEsNrdwa N39/mnmAVh32FEHJ2OHobwo55e991ZD4Jt2lrLkb4ELs1dS5BN7Ofyf0hCi224rDprsE 9lEfLYI3SNKqxwIo9s8YWaKfxPH8K2bCe2xsw2rDgKUwMJyQTU1CLJy91dWsluaXQhS4 2dOA== X-Gm-Message-State: AGi0PuZJl90D3A/fpyiq3BTb+VrxyPKc0Nnky65sTiihxQJT6zw2kw++ l8gPbhH5lXIhK3+if5dBRHWBpYN/JZThML/QRhM= X-Received: by 2002:aca:895:: with SMTP id 143mr7682697oii.153.1587750899078; Fri, 24 Apr 2020 10:54:59 -0700 (PDT) MIME-Version: 1.0 References: <20200424121051.5056-1-geert@linux-m68k.org> <87ftcs3k90.fsf@toke.dk> In-Reply-To: <87ftcs3k90.fsf@toke.dk> From: Geert Uytterhoeven Date: Fri, 24 Apr 2020 19:54:47 +0200 Message-ID: Subject: Re: [PATCH] net: openvswitch: use do_div() for 64-by-32 divisions: To: =?UTF-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= Cc: Eric Dumazet , Pravin B Shelar , "David S . Miller" , Jakub Kicinski , Tonghao Zhang , netdev , dev@openvswitch.org, Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Toke, On Fri, Apr 24, 2020 at 6:45 PM Toke Høiland-Jørgensen wrote: > Geert Uytterhoeven writes: > > On Fri, Apr 24, 2020 at 5:05 PM Eric Dumazet 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 > >> > --- > >> > 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 Oops, that was a serious brain fart. Sorry for that! That should have been div_u64() instead of do_div(). Feel free to update my patch while applying, else I'll send a v2 later. /me hides in a brown paper bag for the whole weekend... Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds