From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0A52CC2B9F4 for ; Fri, 25 Jun 2021 15:38:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E769F61945 for ; Fri, 25 Jun 2021 15:38:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229948AbhFYPka (ORCPT ); Fri, 25 Jun 2021 11:40:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:43854 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229630AbhFYPk1 (ORCPT ); Fri, 25 Jun 2021 11:40:27 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id E66BB61945; Fri, 25 Jun 2021 15:38:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1624635486; bh=RYnSHZKNvSMtaXCYfBQEZdqzo1AD3QHCRl1A89atjBc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=W2ybPRZbslkAS7uLPBBDADPnPhHIJrVs4dHt4SAbTBqdmxLYZVdRWbk7VzBwoq8Km NlsiyTLWPCAOoBS1c1N/+1ASckrW0oh0G62ug73y20HmFYA/AMGk+NJL9guEymxKfp Utidpf3VE7K9kAbinLNaZ/3RNm3S8jmLKTP8KS1NviDRbF5H789WPxzKdV2hlOUVbc +nDx3OnI2K2D+8iLnIlhCNgoKgItuizlIGpE3MA9UkzofK6kqpnrAWhbZFjRxvg1pb QYnH80UAmNo9HWTZMEvJvW5rZq0ehTaN23qkgbPt9j54k7BHA3EOlt6B763FNYVwBq 6ONyOM8UC3KkQ== Received: by pali.im (Postfix) id 87B88A7D; Fri, 25 Jun 2021 17:38:03 +0200 (CEST) Date: Fri, 25 Jun 2021 17:38:03 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Geert Uytterhoeven Cc: Michael Turquette , Stephen Boyd , Rob Herring , Greg Kroah-Hartman , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Vladimir Vid , Marek =?utf-8?B?QmVow7pu?= , linux-clk , "open list:SERIAL DRIVERS" , Linux Kernel Mailing List , Linux ARM Subject: Re: [PATCH v2 07/11] math64: New DIV_U64_ROUND_CLOSEST helper Message-ID: <20210625153803.u6uesckcqyvvo7dl@pali> References: <20210624224909.6350-1-pali@kernel.org> <20210625143617.12826-1-pali@kernel.org> <20210625143617.12826-8-pali@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: NeoMutt/20180716 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Friday 25 June 2021 17:22:31 Geert Uytterhoeven wrote: > Hi Pali, > > On Fri, Jun 25, 2021 at 4:37 PM Pali Rohár wrote: > > Provide DIV_U64_ROUND_CLOSEST helper which uses div_u64 to perform > > division rounded to the closest integer using unsigned 64bit > > dividend and unsigned 32bit divisor. > > > > Signed-off-by: Pali Rohár > > Thanks for your patch! > > > --- a/include/linux/math64.h > > +++ b/include/linux/math64.h > > @@ -281,6 +281,19 @@ u64 mul_u64_u64_div_u64(u64 a, u64 mul, u64 div); > > #define DIV64_U64_ROUND_CLOSEST(dividend, divisor) \ > > ({ u64 _tmp = (divisor); div64_u64((dividend) + _tmp / 2, _tmp); }) > > > > +/* > > + * DIV_U64_ROUND_CLOSEST - unsigned 64bit divide with 32bit divisor rounded to nearest integer > > + * @dividend: unsigned 64bit dividend > > + * @divisor: unsigned 32bit divisor > > + * > > + * Divide unsigned 64bit dividend by unsigned 32bit divisor > > + * and round to closest integer. > > + * > > + * Return: dividend / divisor rounded to nearest integer > > + */ > > +#define DIV_U64_ROUND_CLOSEST(dividend, divisor) \ > > + ({ u32 _tmp = (divisor); div_u64((u64)(dividend) + _tmp / 2, _tmp); }) > > Given "dividend" should already be an unsigned 64-bit value, I don't > think the cast to "u64" is needed. Similar macros in this file also > don't have the cast. It is just to ensure that plus operation between dividend and _tmp is evaluated in 64-bit context to prevent overflow. Just a case when user calls this macro with 32-bit dividend param. As it is a macro (and not inline function) type is not automatically enforced. DIV_S64_ROUND_CLOSEST macro assigns its argument into temporary 64-bit variable which then ensures usage of 64-bit arithmetic operations. Same applies for DIV64_U64_ROUND_CLOSEST and DIV64_U64_ROUND_UP macros. So this is reason why I added explicit cast to u64. > > > + > > /* > > * DIV_S64_ROUND_CLOSEST - signed 64bit divide with 32bit divisor rounded to nearest integer > > * @dividend: signed 64bit dividend > > With the above nit fixed: > Reviewed-by: Geert Uytterhoeven > > 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 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9631C2B9F4 for ; Fri, 25 Jun 2021 15:39:47 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AC04661949 for ; Fri, 25 Jun 2021 15:39:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AC04661949 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=j0VgWXehETqZfd/T3nO/GBz7Sf/AxNXv1hYjNWgROos=; b=VvvqGbKDriNV6o /4lPKQgPwQykI1J03uiRAtiO2ta8L77lgBb5Id5FDz18OGKulJdBj8XCcoKgnuibukDcQqw5Pur7f v2CKDpezBp6CuXxSaortNTdIGt6gIsWOU+q5hoie5IbdB0MOJBWIplu+IN552hoHrFJ2cTgCsVZby Nzgq/BuaOh6/RkwJXjgZs6veYvWUU9mtrHKUCy/rIvVzwVRWVXD4PFKYmhfbeoHqFM1nFFWNO+s20 paKaetQHXsmtzu3vwxEyM+wkk/XaemXva/MU+miYmsYvkQNUsUcJiL0H7eXvM2/PN1hJMWRLzIRtQ 40hskpAZWN07KWp6cPgA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lwnuD-002BOY-SS; Fri, 25 Jun 2021 15:38:10 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lwnuA-002BO8-Ah for linux-arm-kernel@lists.infradead.org; Fri, 25 Jun 2021 15:38:07 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id E66BB61945; Fri, 25 Jun 2021 15:38:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1624635486; bh=RYnSHZKNvSMtaXCYfBQEZdqzo1AD3QHCRl1A89atjBc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=W2ybPRZbslkAS7uLPBBDADPnPhHIJrVs4dHt4SAbTBqdmxLYZVdRWbk7VzBwoq8Km NlsiyTLWPCAOoBS1c1N/+1ASckrW0oh0G62ug73y20HmFYA/AMGk+NJL9guEymxKfp Utidpf3VE7K9kAbinLNaZ/3RNm3S8jmLKTP8KS1NviDRbF5H789WPxzKdV2hlOUVbc +nDx3OnI2K2D+8iLnIlhCNgoKgItuizlIGpE3MA9UkzofK6kqpnrAWhbZFjRxvg1pb QYnH80UAmNo9HWTZMEvJvW5rZq0ehTaN23qkgbPt9j54k7BHA3EOlt6B763FNYVwBq 6ONyOM8UC3KkQ== Received: by pali.im (Postfix) id 87B88A7D; Fri, 25 Jun 2021 17:38:03 +0200 (CEST) Date: Fri, 25 Jun 2021 17:38:03 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Geert Uytterhoeven Cc: Michael Turquette , Stephen Boyd , Rob Herring , Greg Kroah-Hartman , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Vladimir Vid , Marek =?utf-8?B?QmVow7pu?= , linux-clk , "open list:SERIAL DRIVERS" , Linux Kernel Mailing List , Linux ARM Subject: Re: [PATCH v2 07/11] math64: New DIV_U64_ROUND_CLOSEST helper Message-ID: <20210625153803.u6uesckcqyvvo7dl@pali> References: <20210624224909.6350-1-pali@kernel.org> <20210625143617.12826-1-pali@kernel.org> <20210625143617.12826-8-pali@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210625_083806_442070_0E1767F9 X-CRM114-Status: GOOD ( 26.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpZGF5IDI1IEp1bmUgMjAyMSAxNzoyMjozMSBHZWVydCBVeXR0ZXJob2V2ZW4gd3JvdGU6 Cj4gSGkgUGFsaSwKPiAKPiBPbiBGcmksIEp1biAyNSwgMjAyMSBhdCA0OjM3IFBNIFBhbGkgUm9o w6FyIDxwYWxpQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4gUHJvdmlkZSBESVZfVTY0X1JPVU5EX0NM T1NFU1QgaGVscGVyIHdoaWNoIHVzZXMgZGl2X3U2NCB0byBwZXJmb3JtCj4gPiBkaXZpc2lvbiBy b3VuZGVkIHRvIHRoZSBjbG9zZXN0IGludGVnZXIgdXNpbmcgdW5zaWduZWQgNjRiaXQKPiA+IGRp dmlkZW5kIGFuZCB1bnNpZ25lZCAzMmJpdCBkaXZpc29yLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6 IFBhbGkgUm9ow6FyIDxwYWxpQGtlcm5lbC5vcmc+Cj4gCj4gVGhhbmtzIGZvciB5b3VyIHBhdGNo IQo+IAo+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9tYXRoNjQuaAo+ID4gKysrIGIvaW5jbHVkZS9s aW51eC9tYXRoNjQuaAo+ID4gQEAgLTI4MSw2ICsyODEsMTkgQEAgdTY0IG11bF91NjRfdTY0X2Rp dl91NjQodTY0IGEsIHU2NCBtdWwsIHU2NCBkaXYpOwo+ID4gICNkZWZpbmUgRElWNjRfVTY0X1JP VU5EX0NMT1NFU1QoZGl2aWRlbmQsIGRpdmlzb3IpICAgICBcCj4gPiAgICAgICAgICh7IHU2NCBf dG1wID0gKGRpdmlzb3IpOyBkaXY2NF91NjQoKGRpdmlkZW5kKSArIF90bXAgLyAyLCBfdG1wKTsg fSkKPiA+Cj4gPiArLyoKPiA+ICsgKiBESVZfVTY0X1JPVU5EX0NMT1NFU1QgLSB1bnNpZ25lZCA2 NGJpdCBkaXZpZGUgd2l0aCAzMmJpdCBkaXZpc29yIHJvdW5kZWQgdG8gbmVhcmVzdCBpbnRlZ2Vy Cj4gPiArICogQGRpdmlkZW5kOiB1bnNpZ25lZCA2NGJpdCBkaXZpZGVuZAo+ID4gKyAqIEBkaXZp c29yOiB1bnNpZ25lZCAzMmJpdCBkaXZpc29yCj4gPiArICoKPiA+ICsgKiBEaXZpZGUgdW5zaWdu ZWQgNjRiaXQgZGl2aWRlbmQgYnkgdW5zaWduZWQgMzJiaXQgZGl2aXNvcgo+ID4gKyAqIGFuZCBy b3VuZCB0byBjbG9zZXN0IGludGVnZXIuCj4gPiArICoKPiA+ICsgKiBSZXR1cm46IGRpdmlkZW5k IC8gZGl2aXNvciByb3VuZGVkIHRvIG5lYXJlc3QgaW50ZWdlcgo+ID4gKyAqLwo+ID4gKyNkZWZp bmUgRElWX1U2NF9ST1VORF9DTE9TRVNUKGRpdmlkZW5kLCBkaXZpc29yKSAgICAgICBcCj4gPiAr ICAgICAgICh7IHUzMiBfdG1wID0gKGRpdmlzb3IpOyBkaXZfdTY0KCh1NjQpKGRpdmlkZW5kKSAr IF90bXAgLyAyLCBfdG1wKTsgfSkKPiAKPiBHaXZlbiAiZGl2aWRlbmQiIHNob3VsZCBhbHJlYWR5 IGJlIGFuIHVuc2lnbmVkIDY0LWJpdCB2YWx1ZSwgSSBkb24ndAo+IHRoaW5rIHRoZSBjYXN0IHRv ICJ1NjQiIGlzIG5lZWRlZC4gU2ltaWxhciBtYWNyb3MgaW4gdGhpcyBmaWxlIGFsc28KPiBkb24n dCBoYXZlIHRoZSBjYXN0LgoKSXQgaXMganVzdCB0byBlbnN1cmUgdGhhdCBwbHVzIG9wZXJhdGlv biBiZXR3ZWVuIGRpdmlkZW5kIGFuZCBfdG1wIGlzCmV2YWx1YXRlZCBpbiA2NC1iaXQgY29udGV4 dCB0byBwcmV2ZW50IG92ZXJmbG93LiBKdXN0IGEgY2FzZSB3aGVuIHVzZXIKY2FsbHMgdGhpcyBt YWNybyB3aXRoIDMyLWJpdCBkaXZpZGVuZCBwYXJhbS4gQXMgaXQgaXMgYSBtYWNybyAoYW5kIG5v dAppbmxpbmUgZnVuY3Rpb24pIHR5cGUgaXMgbm90IGF1dG9tYXRpY2FsbHkgZW5mb3JjZWQuCgpE SVZfUzY0X1JPVU5EX0NMT1NFU1QgbWFjcm8gYXNzaWducyBpdHMgYXJndW1lbnQgaW50byB0ZW1w b3JhcnkgNjQtYml0CnZhcmlhYmxlIHdoaWNoIHRoZW4gZW5zdXJlcyB1c2FnZSBvZiA2NC1iaXQg YXJpdGhtZXRpYyBvcGVyYXRpb25zLiBTYW1lCmFwcGxpZXMgZm9yIERJVjY0X1U2NF9ST1VORF9D TE9TRVNUIGFuZCBESVY2NF9VNjRfUk9VTkRfVVAgbWFjcm9zLgoKU28gdGhpcyBpcyByZWFzb24g d2h5IEkgYWRkZWQgZXhwbGljaXQgY2FzdCB0byB1NjQuCgo+IAo+ID4gKwo+ID4gIC8qCj4gPiAg ICogRElWX1M2NF9ST1VORF9DTE9TRVNUIC0gc2lnbmVkIDY0Yml0IGRpdmlkZSB3aXRoIDMyYml0 IGRpdmlzb3Igcm91bmRlZCB0byBuZWFyZXN0IGludGVnZXIKPiA+ICAgKiBAZGl2aWRlbmQ6IHNp Z25lZCA2NGJpdCBkaXZpZGVuZAo+IAo+IFdpdGggdGhlIGFib3ZlIG5pdCBmaXhlZDoKPiBSZXZp ZXdlZC1ieTogR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydCtyZW5lc2FzQGdsaWRlci5iZT4KPiAK PiBHcntvZXRqZSxlZXRpbmd9cywKPiAKPiAgICAgICAgICAgICAgICAgICAgICAgICBHZWVydAo+ IAo+IC0tIAo+IEdlZXJ0IFV5dHRlcmhvZXZlbiAtLSBUaGVyZSdzIGxvdHMgb2YgTGludXggYmV5 b25kIGlhMzIgLS0gZ2VlcnRAbGludXgtbTY4ay5vcmcKPiAKPiBJbiBwZXJzb25hbCBjb252ZXJz YXRpb25zIHdpdGggdGVjaG5pY2FsIHBlb3BsZSwgSSBjYWxsIG15c2VsZiBhIGhhY2tlci4gQnV0 Cj4gd2hlbiBJJ20gdGFsa2luZyB0byBqb3VybmFsaXN0cyBJIGp1c3Qgc2F5ICJwcm9ncmFtbWVy IiBvciBzb21ldGhpbmcgbGlrZSB0aGF0Lgo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0gTGludXMgVG9ydmFsZHMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK