From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: Re: [PATCH] nouveau/nvkm/subdev/clk/gk20a.c: fix wrong do_div() usage Date: Fri, 4 Dec 2015 18:38:01 +0100 Message-ID: <20151204173801.GA30117@ulmo.nvidia.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0784966349==" Return-path: Received: from mail-pf0-f182.google.com (mail-pf0-f182.google.com [209.85.192.182]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6DD276E354 for ; Fri, 4 Dec 2015 09:38:06 -0800 (PST) Received: by pfnn128 with SMTP id n128so29213932pfn.0 for ; Fri, 04 Dec 2015 09:38:06 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Nicolas Pitre Cc: Ben Skeggs , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============0784966349== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="UugvWAfsgieZRqgk" Content-Disposition: inline --UugvWAfsgieZRqgk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Nov 03, 2015 at 05:01:46PM -0500, Nicolas Pitre wrote: > do_div() must only be used with a u64 dividend. >=20 > Signed-off-by: Nicolas Pitre >=20 > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk20a.c b/drivers/gp= u/drm/nouveau/nvkm/subdev/clk/gk20a.c > index 254094ab7f..5da2aa8cc3 100644 > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk20a.c > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk20a.c > @@ -141,9 +141,8 @@ gk20a_pllg_calc_rate(struct gk20a_clk *clk) > =20 > rate =3D clk->parent_rate * clk->n; > divider =3D clk->m * pl_to_div[clk->pl]; > - do_div(rate, divider); > =20 > - return rate / 2; > + return rate / divider / 2; > } > =20 > static int This causes build breakage on 32-bit ARM. I'm also confused by the commit message because the code that I'm looking at has u64 rate and u32 divider, which matches the types given in include/asm-generic/div64.h: * The semantics of do_div() are: * * uint32_t do_div(uint64_t *n, uint32_t base) * { * uint32_t remainder =3D *n % base; * *n =3D *n / base; * return remainder; * } Thierry --UugvWAfsgieZRqgk Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJWYc93AAoJEN0jrNd/PrOhIucP/1KEHrmrpdJafZd180oRYGhO lpLIECBYVAEKX6RygKcQ2Jz547FGlgnSeQN6sOSK+yUcxWP/+xYdR41LdRMZWJsW TVnluDAoSop/o/AfyWdZiwph7keaRHHcA7ak+EHZAXvbtOO5iFbnrnjDXWKlL7hU YPwbcXI6riuCsgaA7d6SUwdDrTOLNKwE1z8wohOrphro4xeWrgEjIzcaR3HNjDqe dvRvRAxAbkvq9L0X3wWx4a0d54xNpQzedbU4KS9NHRqwdXrt265bCVT9M7uZh4yS eHaGIfAROabSVgPFCc0KC9PipqOe09Hba9/Qf9ZO48KXU4RBpvjm/kVy4SNRP4vj 3oDvqALY7NS4VMDvBbIL4bvpA7CdgFYfnrjzuTfLkDCIaPZv7UOXyvEMu0RV3bn2 NlzQwq2EPFRiHi78wUbEQrPFYwNKP3gzHPp+fsje75Y9PluHWRkNpNxxBBB8z+hc gr4PxGm71aISPUq/o3044aNuyYaORAIgbnj3O2ZlyTwb0xUUa4LIwU7uIxMB8AFE 7eDmAxPT0bKIIy7/QN6NtinuL6UnWkNWllxLzZKaouoGMpeAGV8bH1VUuchRLYFp +BmBKCjoUi5k4Obfm5h3rCwO40n9oa6+uZTJt0RZbtjQqn0TSz4Qhq1H8fFExzOE lQKUiZCVMRww6rJyfGml =+IDy -----END PGP SIGNATURE----- --UugvWAfsgieZRqgk-- --===============0784966349== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK --===============0784966349==--