Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp881516pxv; Thu, 22 Jul 2021 14:58:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJygGlKcSAzXAJI67tlED9E+Ortfrr2zZBc5ov+eHo+bADEDI4etKCY3ugmf+wc87x99emIK X-Received: by 2002:a05:6602:584:: with SMTP id v4mr1354686iox.181.1626991122021; Thu, 22 Jul 2021 14:58:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626991122; cv=none; d=google.com; s=arc-20160816; b=KHZj0AlkP/wYRDnYJWNbAGsVYMRceIR1T02oqedEz4Ax90rw2ul5/bex38unUvAg1l ipyL0P/r6zaogBJVC6H4qGMx6pbwQgoyuQkA+b8WJfvTJuwzKuflr5Cf1MdbCJZbYxzE gAIVNLWHpoiNSJ827rH24KYqdXcPsSYBfIXbmSwQEFsfblbx680Jd8oxoPn+pkOoj1tL FEsB1xnLcZQdFad3IFJBIuvnAmpp0w/k6+ruageQlY7WO49nVuOel2cCMP6xg3BMpnDB XYrnR9u56Kwc7RfMr33+3JkgMiH9ZdmkcIL2T08yNaMffeVQyfsTCTUx/3dQANRtopps 4Dpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=DXPP+fGJ0TFP/eP5p4Kbru20iBHzJ1aNYw4IPjC8JaM=; b=fFVJWEsnap6ToyvHhLKiwWBcitbzu2LYOFPBcrCCaF1t9+EFdjGaFIWZ3f4WCpXOvn JPKrGNwBtD7+JuHISFKRgwZ3gDfI1zdn9+rQ7huCzonlzfKNKLjRIHBI3CquKY2WKsiC nSZSKpJ5YKhCZRqMU0DfRdIMwAoF2ybPKbbkYlwVI0qtPEKxMaZr77nhDpy7juaOa6r9 xXqxUzjq3DRdRmr+SmUfoVrKRI6WrrKe+KcAdqkTnENCSlzeO9kQ5DnPEdw4h+eRBLvJ 6qNvR4CCF/7q8uuv3YLeeH6MYSAhKp7NzO/pASZwyZDj3SBUzKO8z2TniMheTVbT9bV+ t+4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=HuiSFsbP; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m9si31417754jaj.89.2021.07.22.14.58.30; Thu, 22 Jul 2021 14:58:42 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=HuiSFsbP; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231910AbhGVVRM (ORCPT + 99 others); Thu, 22 Jul 2021 17:17:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:49724 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231336AbhGVVRL (ORCPT ); Thu, 22 Jul 2021 17:17:11 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3C3FE60EB4; Thu, 22 Jul 2021 21:57:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1626991066; bh=jxHLi9bM6Hq+3vf5t//DlAv09jjPbBHB2nQxogyaotI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=HuiSFsbPNO4Ffxt3+mAvxMTMoqe8AB3wjCAbc8L9bjtP/7VLqTomE1tbVss2cTk9C gCKzDk9iIErDPnc6i8+BAaA3ELCWYEYO7EsrsUn24BbteMEygIYJL4noaUsJY4wYkn qf8NO1SxTmEEh1Pq6PoxFm3DI5Q+y1nj0llY3dEfkWcWNB1BCWnIndCKy4eG3Dv2Ad W48MtT5N/QT03aPxC/Ds/vMsAoHLr+EhDrOJV7iB83XdqdumbmS4rMOAcquJBxyimh 7wRId4g7kklBZqE4VFXI1G24pBNqE4EdqZbD9zScKK/egZ2HwtuMep9WPFAyTD+yS8 9bCVvQp2ul+yA== Received: by pali.im (Postfix) id 9ECB3805; Thu, 22 Jul 2021 23:57:43 +0200 (CEST) Date: Thu, 22 Jul 2021 23:57:43 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Andy Shevchenko Cc: Michael Turquette , Stephen Boyd , Rob Herring , Greg Kroah-Hartman , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Vladimir Vid , Marek =?utf-8?B?QmVow7pu?= , Geert Uytterhoeven , linux-clk@vger.kernel.org, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Willy Tarreau Subject: Re: [PATCH v3 1/5] math64: New DIV_U64_ROUND_CLOSEST helper Message-ID: <20210722215743.gtwccvokecvoocmm@pali> References: <20210624224909.6350-1-pali@kernel.org> <20210717123829.5201-1-pali@kernel.org> <20210717123829.5201-2-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 Monday 19 July 2021 15:47:07 Andy Shevchenko wrote: > On Sat, Jul 17, 2021 at 3:39 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. > > ... > > > +/* > > + * DIV_U64_ROUND_CLOSEST - unsigned 64bit divide with 32bit divisor rounded to nearest integer > > > + * @dividend: unsigned 64bit dividend > > Here you insist users to provide a u64 (or compatible) type. > > > + * @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); }) > > Here is the casting to u64. Why? (Yes, I have read v1 discussion and I > just want to continue it here). See also Willy's response: https://lore.kernel.org/lkml/20210625155008.GB16901@1wt.eu/ Macro does not enforce type as opposite to function. There is no compile time check for correct type and neither compile time warning if smaller typed value is passed. And e.g. passing constant with explicit ULL suffix or casting external constant to 64bit type is impractical.