[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202002050944.Bw319kgR%lkp@intel.com>
Date: Wed, 5 Feb 2020 09:57:07 +0800
From: kbuild test robot <lkp@...el.com>
To: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
Cc: kbuild-all@...ts.01.org, Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org, Trond@...ck.fi.intel.com,
Myklebust@...ck.fi.intel.com, trond.myklebust@...merspace.com,
Anna Schumaker <anna.schumaker@...app.com>,
"Paul E. McKenney" <paulmck@...nel.org>,
Josh Triplett <josh@...htriplett.org>,
Steven Rostedt <rostedt@...dmis.org>,
Arnd Bergmann <arnd@...db.de>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
Subject: Re: [PATCH v2 2/2] kernel.h: Split out mathematical helpers
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on next-20200203]
[cannot apply to nfs/linux-next rcu/dev linux/master linus/master v5.5 v5.5-rc7 v5.5-rc6 v5.5]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/kernel-h-Split-out-min-max-et-al-helpers/20200205-040141
base: cee5a42837d4a6c4189f06f7bf355b97a24c3c93
config: m68k-multi_defconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 7.5.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.5.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@...el.com>
All errors (new ones prefixed by >>):
lib/math/div64.c: In function 'div64_u64_rem':
>> lib/math/div64.c:112:11: error: implicit declaration of function 'fls' [-Werror=implicit-function-declaration]
int n = fls(high);
^~~
cc1: some warnings being treated as errors
vim +/fls +112 lib/math/div64.c
2418f4f28f8467 lib/div64.c Roman Zippel 2008-05-01 89
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 90 /**
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 91 * div64_u64_rem - unsigned 64bit divide with 64bit divisor and remainder
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 92 * @dividend: 64bit dividend
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 93 * @divisor: 64bit divisor
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 94 * @remainder: 64bit remainder
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 95 *
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 96 * This implementation is a comparable to algorithm used by div64_u64.
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 97 * But this operation, which includes math for calculating the remainder,
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 98 * is kept distinct to avoid slowing down the div64_u64 operation on 32bit
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 99 * systems.
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 100 */
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 101 #ifndef div64_u64_rem
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 102 u64 div64_u64_rem(u64 dividend, u64 divisor, u64 *remainder)
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 103 {
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 104 u32 high = divisor >> 32;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 105 u64 quot;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 106
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 107 if (high == 0) {
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 108 u32 rem32;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 109 quot = div_u64_rem(dividend, divisor, &rem32);
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 110 *remainder = rem32;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 111 } else {
cdc94a37493135 lib/div64.c Stanislaw Gruszka 2019-03-07 @112 int n = fls(high);
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 113 quot = div_u64(dividend >> n, divisor >> n);
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 114
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 115 if (quot != 0)
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 116 quot--;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 117
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 118 *remainder = dividend - quot * divisor;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 119 if (*remainder >= divisor) {
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 120 quot++;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 121 *remainder -= divisor;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 122 }
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 123 }
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 124
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 125 return quot;
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 126 }
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 127 EXPORT_SYMBOL(div64_u64_rem);
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 128 #endif
eb18cba78c2b92 lib/div64.c Mike Snitzer 2013-08-20 129
:::::: The code at line 112 was first introduced by commit
:::::: cdc94a37493135e355dfc0b0e086d84e3eadb50d lib/div64.c: off by one in shift
:::::: TO: Stanislaw Gruszka <sgruszka@...hat.com>
:::::: CC: Linus Torvalds <torvalds@...ux-foundation.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (16904 bytes)
Powered by blists - more mailing lists