From: kernel test robot <lkp@intel.com>
To: Noah Goldstein <goldstein.w.n@gmail.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
linux-kernel@vger.kernel.org, x86@kernel.org,
Dave Hansen <dave.hansen@linux.intel.com>
Subject: [tip:x86/misc 1/1] arch/x86/lib/csum-partial_64.c:74:20: warning: variable 'result' is uninitialized when used here
Date: Fri, 26 May 2023 20:22:30 +0800 [thread overview]
Message-ID: <202305262039.3HUYjWJk-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/misc
head: 688eb8191b475db5acfd48634600b04fd3dda9ad
commit: 688eb8191b475db5acfd48634600b04fd3dda9ad [1/1] x86/csum: Improve performance of `csum_partial`
config: x86_64-randconfig-x073-20230525 (https://download.01.org/0day-ci/archive/20230526/202305262039.3HUYjWJk-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
mkdir -p ~/bin
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=688eb8191b475db5acfd48634600b04fd3dda9ad
git remote add tip https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
git fetch --no-tags tip x86/misc
git checkout 688eb8191b475db5acfd48634600b04fd3dda9ad
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202305262039.3HUYjWJk-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/x86/lib/csum-partial_64.c:74:20: warning: variable 'result' is uninitialized when used here [-Wuninitialized]
return csum_tail(result, temp64, odd);
^~~~~~
arch/x86/lib/csum-partial_64.c:48:22: note: initialize the variable 'result' to silence this warning
unsigned odd, result;
^
= 0
1 warning generated.
vim +/result +74 arch/x86/lib/csum-partial_64.c
33
34 /*
35 * Do a checksum on an arbitrary memory area.
36 * Returns a 32bit checksum.
37 *
38 * This isn't as time critical as it used to be because many NICs
39 * do hardware checksumming these days.
40 *
41 * Still, with CHECKSUM_COMPLETE this is called to compute
42 * checksums on IPv6 headers (40 bytes) and other small parts.
43 * it's best to have buff aligned on a 64-bit boundary
44 */
45 __wsum csum_partial(const void *buff, int len, __wsum sum)
46 {
47 u64 temp64 = (__force u64)sum;
48 unsigned odd, result;
49
50 odd = 1 & (unsigned long) buff;
51 if (unlikely(odd)) {
52 if (unlikely(len == 0))
53 return sum;
54 temp64 = ror32((__force u32)sum, 8);
55 temp64 += (*(unsigned char *)buff << 8);
56 len--;
57 buff++;
58 }
59
60 /*
61 * len == 40 is the hot case due to IPv6 headers, but annotating it likely()
62 * has noticeable negative affect on codegen for all other cases with
63 * minimal performance benefit here.
64 */
65 if (len == 40) {
66 asm("addq 0*8(%[src]),%[res]\n\t"
67 "adcq 1*8(%[src]),%[res]\n\t"
68 "adcq 2*8(%[src]),%[res]\n\t"
69 "adcq 3*8(%[src]),%[res]\n\t"
70 "adcq 4*8(%[src]),%[res]\n\t"
71 "adcq $0,%[res]"
72 : [res] "+r"(temp64)
73 : [src] "r"(buff), "m"(*(const char(*)[40])buff));
> 74 return csum_tail(result, temp64, odd);
75 }
76 if (unlikely(len >= 64)) {
77 /*
78 * Extra accumulators for better ILP in the loop.
79 */
80 u64 tmp_accum, tmp_carries;
81
82 asm("xorl %k[tmp_accum],%k[tmp_accum]\n\t"
83 "xorl %k[tmp_carries],%k[tmp_carries]\n\t"
84 "subl $64, %[len]\n\t"
85 "1:\n\t"
86 "addq 0*8(%[src]),%[res]\n\t"
87 "adcq 1*8(%[src]),%[res]\n\t"
88 "adcq 2*8(%[src]),%[res]\n\t"
89 "adcq 3*8(%[src]),%[res]\n\t"
90 "adcl $0,%k[tmp_carries]\n\t"
91 "addq 4*8(%[src]),%[tmp_accum]\n\t"
92 "adcq 5*8(%[src]),%[tmp_accum]\n\t"
93 "adcq 6*8(%[src]),%[tmp_accum]\n\t"
94 "adcq 7*8(%[src]),%[tmp_accum]\n\t"
95 "adcl $0,%k[tmp_carries]\n\t"
96 "addq $64, %[src]\n\t"
97 "subl $64, %[len]\n\t"
98 "jge 1b\n\t"
99 "addq %[tmp_accum],%[res]\n\t"
100 "adcq %[tmp_carries],%[res]\n\t"
101 "adcq $0,%[res]"
102 : [tmp_accum] "=&r"(tmp_accum),
103 [tmp_carries] "=&r"(tmp_carries), [res] "+r"(temp64),
104 [len] "+r"(len), [src] "+r"(buff)
105 : "m"(*(const char *)buff));
106 }
107
108 if (len & 32) {
109 asm("addq 0*8(%[src]),%[res]\n\t"
110 "adcq 1*8(%[src]),%[res]\n\t"
111 "adcq 2*8(%[src]),%[res]\n\t"
112 "adcq 3*8(%[src]),%[res]\n\t"
113 "adcq $0,%[res]"
114 : [res] "+r"(temp64)
115 : [src] "r"(buff), "m"(*(const char(*)[32])buff));
116 buff += 32;
117 }
118 if (len & 16) {
119 asm("addq 0*8(%[src]),%[res]\n\t"
120 "adcq 1*8(%[src]),%[res]\n\t"
121 "adcq $0,%[res]"
122 : [res] "+r"(temp64)
123 : [src] "r"(buff), "m"(*(const char(*)[16])buff));
124 buff += 16;
125 }
126 if (len & 8) {
127 asm("addq 0*8(%[src]),%[res]\n\t"
128 "adcq $0,%[res]"
129 : [res] "+r"(temp64)
130 : [src] "r"(buff), "m"(*(const char(*)[8])buff));
131 buff += 8;
132 }
133 if (len & 7) {
134 unsigned int shift = (-len << 3) & 63;
135 unsigned long trail;
136
137 trail = (load_unaligned_zeropad(buff) << shift) >> shift;
138
139 asm("addq %[trail],%[res]\n\t"
140 "adcq $0,%[res]"
141 : [res] "+r"(temp64)
142 : [trail] "r"(trail));
143 }
144 return csum_tail(result, temp64, odd);
145 }
146 EXPORT_SYMBOL(csum_partial);
147
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2023-05-26 12:22 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202305262039.3HUYjWJk-lkp@intel.com \
--to=lkp@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=goldstein.w.n@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.