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 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E75AEC67871 for ; Tue, 25 Oct 2022 03:15:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1FF7F10E0F5; Tue, 25 Oct 2022 03:15:01 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18C5210E0F5 for ; Tue, 25 Oct 2022 03:14:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666667698; x=1698203698; h=date:message-id:from:to:cc:subject:in-reply-to: references:mime-version; bh=Plud+QDTxiILXunSp8B2QhO9xL8/FF3yTC1xiq5fuWg=; b=IORxl4BFkdtCjuDPkX8VhgGsMFWA4JDztoNEzMRL5Ihvn8w33c+47t1o vIUTLKwAdWrctmKBz2xCsRWDUve7KGLRGljbXfnenUYD7iexKivmF1HtB DN+CAxKGgwPG3JHwKuxAyyopMT7j+SRAqzsuOHX09qvH46kSJBP2hdiiQ bpOpBwTfuDvTYWtSp8vvKF1ykf12YW5Cv/eLuXAbgOD8yrF+slZnl06tK jqN90nnGVlvyapWM46zDUWeevg3IoHS5GhSDVtNbbE84YjKZg36WLpvcC s4r2rfqLjiXyWZyK7ryDXmsoIkZd882IHrxz1VpnSWFox4D8DbfiexLCf g==; X-IronPort-AV: E=McAfee;i="6500,9779,10510"; a="309263644" X-IronPort-AV: E=Sophos;i="5.95,210,1661842800"; d="scan'208";a="309263644" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Oct 2022 20:14:38 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10510"; a="582624985" X-IronPort-AV: E=Sophos;i="5.95,210,1661842800"; d="scan'208";a="582624985" Received: from adixit-mobl.amr.corp.intel.com (HELO adixit-arch.intel.com) ([10.212.191.48]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Oct 2022 20:14:38 -0700 Date: Mon, 24 Oct 2022 20:14:37 -0700 Message-ID: <87mt9kppb6.wl-ashutosh.dixit@intel.com> From: "Dixit, Ashutosh" To: Gwan-gyeong Mun In-Reply-To: <20221024210953.1572998-1-gwan-gyeong.mun@intel.com> References: <20221024210953.1572998-1-gwan-gyeong.mun@intel.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/28.2 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII Subject: Re: [Intel-gfx] [PATCH] drm/i915/hwmon: Fix a build error used with clang compiler X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org, llvm@lists.linux.dev Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" On Mon, 24 Oct 2022 14:09:53 -0700, Gwan-gyeong Mun wrote: > Hi GG, > If a non-constant variable is used as the first argument of the FIELD_PREP > macro, a build error occurs when using the clang compiler. > > Fix the following build error used with clang compiler: > > drivers/gpu/drm/i915/i915_hwmon.c:115:16: error: result of comparison of constant 18446744073709551615 with expression of type 'typeof (_Generic((field_msk), char: (unsigned char)0, unsigned char: (unsigned char)0, signed char: (unsigned char)0, unsigned short: (unsigned short)0, short: (unsigned short)0, unsigned int: (unsigned int)0, int: (unsigned int)0, unsigned long: (unsigned long)0, long: (unsigned long)0, unsigned long long: (unsigned long long)0, long long: (unsigned long long)0, default: (field_msk)))' (aka 'unsigned int') is always false [-Werror,-Wtautological-constant-out-of-range-compare] What is 18446744073709551615? You may want to limit the length of this line or checkpatch doesn't complain? > bits_to_set = FIELD_PREP(field_msk, nval); > ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/bitfield.h:114:3: note: expanded from macro 'FIELD_PREP' > __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); \ > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/bitfield.h:71:53: note: expanded from macro '__BF_FIELD_CHECK' > BUILD_BUG_ON_MSG(__bf_cast_unsigned(_mask, _mask) > \ > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ > ./include/linux/build_bug.h:39:58: note: expanded from macro 'BUILD_BUG_ON_MSG' > ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~ > ./include/linux/compiler_types.h:357:22: note: expanded from macro 'compiletime_assert' > _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/compiler_types.h:345:23: note: expanded from macro '_compiletime_assert' > __compiletime_assert(condition, msg, prefix, suffix) > ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/compiler_types.h:337:9: note: expanded from macro '__compiletime_assert' > if (!(condition)) \ > > Fixes: 99f55efb7911 ("drm/i915/hwmon: Power PL1 limit and TDP setting") > Cc: Ashutosh Dixit > Cc: Anshuman Gupta > Cc: Andi Shyti > Signed-off-by: Gwan-gyeong Mun > --- > drivers/gpu/drm/i915/i915_hwmon.c | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_hwmon.c b/drivers/gpu/drm/i915/i915_hwmon.c > index 9e9781493025..782a621b1928 100644 > --- a/drivers/gpu/drm/i915/i915_hwmon.c > +++ b/drivers/gpu/drm/i915/i915_hwmon.c > @@ -101,21 +101,16 @@ hwm_field_read_and_scale(struct hwm_drvdata *ddat, i915_reg_t rgadr, > > static void > hwm_field_scale_and_write(struct hwm_drvdata *ddat, i915_reg_t rgadr, > - u32 field_msk, int nshift, > - unsigned int scale_factor, long lval) > + int nshift, unsigned int scale_factor, long lval) > { > u32 nval; > - u32 bits_to_clear; > - u32 bits_to_set; > > /* Computation in 64-bits to avoid overflow. Round to nearest. */ > nval = DIV_ROUND_CLOSEST_ULL((u64)lval << nshift, scale_factor); > > - bits_to_clear = field_msk; > - bits_to_set = FIELD_PREP(field_msk, nval); > - > hwm_locked_with_pm_intel_uncore_rmw(ddat, rgadr, > - bits_to_clear, bits_to_set); > + PKG_PWR_LIM_1, > + FIELD_PREP(PKG_PWR_LIM_1, nval)); I don't want to give up so easily. We might have future uses for the function where we want field_msk to be passed into the function (rather than set inside the function as in this patch). Do we understand what clang is complaining about? And why this compiles with gcc? Copying llvm@lists.linux.dev too. Thanks. -- Ashutosh > } > > /* > @@ -406,7 +401,6 @@ hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val) > case hwmon_power_max: > hwm_field_scale_and_write(ddat, > hwmon->rg.pkg_rapl_limit, > - PKG_PWR_LIM_1, > hwmon->scl_shift_power, > SF_POWER, val); > return 0; > -- > 2.37.1 >