Message ID | 1526026187-11782-3-git-send-email-changbin.du@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Changbin, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.17-rc5 next-20180517] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/changbin-du-intel-com/kernel-hacking-GCC-optimization-for-better-debug-experience-Og/20180512-001150 config: arm64-allmodconfig (attached as .config) compiler: aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.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 make.cross ARCH=arm64 Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings All warnings (new ones prefixed by >>): drivers/video/fbdev/i740fb.c: In function 'i740_calc_fifo.isra.0': >> drivers/video/fbdev/i740fb.c:331:9: warning: 'wm' may be used uninitialized in this function [-Wmaybe-uninitialized] return wm; ^~ -- drivers/pci/host/pci-xgene.c: In function 'xgene_pcie_setup_ib_reg': >> drivers/pci/host/pci-xgene.c:532:2: warning: 'pim_reg' may be used uninitialized in this function [-Wmaybe-uninitialized] xgene_pcie_setup_pims(port, pim_reg, pci_addr, ~(size - 1)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +/wm +331 drivers/video/fbdev/i740fb.c 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 207 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 208 static u32 i740_calc_fifo(struct i740fb_par *par, u32 freq, int bpp) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 209 { 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 210 /* 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 211 * Would like to calculate these values automatically, but a generic 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 212 * algorithm does not seem possible. Note: These FIFO water mark 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 213 * values were tested on several cards and seem to eliminate the 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 214 * all of the snow and vertical banding, but fine adjustments will 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 215 * probably be required for other cards. 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 216 */ 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 217 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 218 u32 wm; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 219 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 220 switch (bpp) { 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 221 case 8: 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 222 if (freq > 200) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 223 wm = 0x18120000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 224 else if (freq > 175) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 225 wm = 0x16110000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 226 else if (freq > 135) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 227 wm = 0x120E0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 228 else 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 229 wm = 0x100D0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 230 break; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 231 case 15: 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 232 case 16: 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 233 if (par->has_sgram) { 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 234 if (freq > 140) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 235 wm = 0x2C1D0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 236 else if (freq > 120) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 237 wm = 0x2C180000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 238 else if (freq > 100) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 239 wm = 0x24160000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 240 else if (freq > 90) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 241 wm = 0x18120000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 242 else if (freq > 50) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 243 wm = 0x16110000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 244 else if (freq > 32) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 245 wm = 0x13100000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 246 else 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 247 wm = 0x120E0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 248 } else { 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 249 if (freq > 160) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 250 wm = 0x28200000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 251 else if (freq > 140) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 252 wm = 0x2A1E0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 253 else if (freq > 130) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 254 wm = 0x2B1A0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 255 else if (freq > 120) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 256 wm = 0x2C180000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 257 else if (freq > 100) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 258 wm = 0x24180000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 259 else if (freq > 90) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 260 wm = 0x18120000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 261 else if (freq > 50) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 262 wm = 0x16110000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 263 else if (freq > 32) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 264 wm = 0x13100000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 265 else 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 266 wm = 0x120E0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 267 } 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 268 break; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 269 case 24: 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 270 if (par->has_sgram) { 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 271 if (freq > 130) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 272 wm = 0x31200000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 273 else if (freq > 120) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 274 wm = 0x2E200000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 275 else if (freq > 100) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 276 wm = 0x2C1D0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 277 else if (freq > 80) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 278 wm = 0x25180000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 279 else if (freq > 64) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 280 wm = 0x24160000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 281 else if (freq > 49) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 282 wm = 0x18120000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 283 else if (freq > 32) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 284 wm = 0x16110000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 285 else 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 286 wm = 0x13100000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 287 } else { 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 288 if (freq > 120) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 289 wm = 0x311F0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 290 else if (freq > 100) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 291 wm = 0x2C1D0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 292 else if (freq > 80) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 293 wm = 0x25180000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 294 else if (freq > 64) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 295 wm = 0x24160000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 296 else if (freq > 49) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 297 wm = 0x18120000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 298 else if (freq > 32) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 299 wm = 0x16110000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 300 else 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 301 wm = 0x13100000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 302 } 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 303 break; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 304 case 32: 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 305 if (par->has_sgram) { 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 306 if (freq > 80) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 307 wm = 0x2A200000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 308 else if (freq > 60) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 309 wm = 0x281A0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 310 else if (freq > 49) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 311 wm = 0x25180000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 312 else if (freq > 32) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 313 wm = 0x18120000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 314 else 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 315 wm = 0x16110000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 316 } else { 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 317 if (freq > 80) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 318 wm = 0x29200000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 319 else if (freq > 60) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 320 wm = 0x281A0000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 321 else if (freq > 49) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 322 wm = 0x25180000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 323 else if (freq > 32) 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 324 wm = 0x18120000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 325 else 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 326 wm = 0x16110000; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 327 } 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 328 break; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 329 } 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 330 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 @331 return wm; 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 332 } 5350c65f drivers/video/i740fb.c Ondrej Zary 2012-02-10 333 :::::: The code at line 331 was first introduced by commit :::::: 5350c65f4f15bbc111ffa629130d3f32cdd4ccf6 Resurrect Intel740 driver: i740fb :::::: TO: Ondrej Zary <linux@rainbow-software.org> :::::: CC: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Changbin, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.17-rc5 next-20180517] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/changbin-du-intel-com/kernel-hacking-GCC-optimization-for-better-debug-experience-Og/20180512-001150 config: sparc64-allyesconfig (attached as .config) compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.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 make.cross ARCH=sparc64 Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings All warnings (new ones prefixed by >>): drivers//staging/comedi/drivers/pcl816.c: In function 'pcl816_ai_setup_chanlist': >> drivers//staging/comedi/drivers/pcl816.c:171:2: warning: 'last_chan' may be used uninitialized in this function [-Wmaybe-uninitialized] pcl816_ai_set_chan_scan(dev, first_chan, last_chan); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- drivers//staging/comedi/drivers/pcl818.c: In function 'pcl818_ai_setup_chanlist': >> drivers//staging/comedi/drivers/pcl818.c:366:2: warning: 'last_chan' may be used uninitialized in this function [-Wmaybe-uninitialized] pcl818_ai_set_chan_scan(dev, first_chan, last_chan); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_init_rd': >> drivers/net/wireless/ath/ath10k/mac.c:8172:39: warning: 'rd' may be used uninitialized in this function [-Wmaybe-uninitialized] ar->ath_common.regulatory.current_rd = rd; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ -- drivers/dma/stm32-mdma.c: In function 'stm32_mdma_setup_xfer': >> drivers/dma/stm32-mdma.c:767:6: warning: 'ccr' may be used uninitialized in this function [-Wmaybe-uninitialized] ccr &= ~STM32_MDMA_CCR_IRQ_MASK; ^~ -- drivers/gpio/gpio-aspeed.c: In function 'enable_debounce': >> drivers/gpio/gpio-aspeed.c:708:6: warning: 'requested_cycles' may be used uninitialized in this function [-Wmaybe-uninitialized] if (requested_cycles == cycles) ^ -- drivers/mmc/host/sdhci-pci-core.c: In function 'intel_dsm_init.isra.3': >> drivers/mmc/host/sdhci-pci-core.c:527:37: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized] intel_host->d3_retune = err ? true : !!val; ~~~~~~~~~~~^~~~~~~ vim +/last_chan +171 drivers//staging/comedi/drivers/pcl816.c 19720c07 H Hartley Sweeten 2014-03-04 151 19720c07 H Hartley Sweeten 2014-03-04 152 static void pcl816_ai_setup_chanlist(struct comedi_device *dev, 19720c07 H Hartley Sweeten 2014-03-04 153 unsigned int *chanlist, 19720c07 H Hartley Sweeten 2014-03-04 154 unsigned int seglen) 19720c07 H Hartley Sweeten 2014-03-04 155 { 19720c07 H Hartley Sweeten 2014-03-04 156 unsigned int first_chan = CR_CHAN(chanlist[0]); 19720c07 H Hartley Sweeten 2014-03-04 157 unsigned int last_chan; 19720c07 H Hartley Sweeten 2014-03-04 158 unsigned int range; 19720c07 H Hartley Sweeten 2014-03-04 159 unsigned int i; 19720c07 H Hartley Sweeten 2014-03-04 160 19720c07 H Hartley Sweeten 2014-03-04 161 /* store range list to card */ 19720c07 H Hartley Sweeten 2014-03-04 162 for (i = 0; i < seglen; i++) { 19720c07 H Hartley Sweeten 2014-03-04 163 last_chan = CR_CHAN(chanlist[i]); 19720c07 H Hartley Sweeten 2014-03-04 164 range = CR_RANGE(chanlist[i]); 19720c07 H Hartley Sweeten 2014-03-04 165 19720c07 H Hartley Sweeten 2014-03-04 166 pcl816_ai_set_chan_range(dev, last_chan, range); 19720c07 H Hartley Sweeten 2014-03-04 167 } 19720c07 H Hartley Sweeten 2014-03-04 168 19720c07 H Hartley Sweeten 2014-03-04 169 udelay(1); 19720c07 H Hartley Sweeten 2014-03-04 170 19720c07 H Hartley Sweeten 2014-03-04 @171 pcl816_ai_set_chan_scan(dev, first_chan, last_chan); 19720c07 H Hartley Sweeten 2014-03-04 172 } 19720c07 H Hartley Sweeten 2014-03-04 173 :::::: The code at line 171 was first introduced by commit :::::: 19720c07f1f82c21311f3f7ac3e9b993598d6b70 staging: comedi: pcl816: cleanup setup_channel_list() :::::: TO: H Hartley Sweeten <hsweeten@visionengravers.com> :::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/Makefile b/Makefile index d0d2652..6720c40 100644 --- a/Makefile +++ b/Makefile @@ -775,6 +775,12 @@ KBUILD_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \ $(call cc-option,-fno-var-tracking) endif +ifdef CONFIG_NO_AUTO_INLINE +KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions) \ + $(call cc-option, -fno-inline-small-functions) \ + $(call cc-option, -fno-inline-functions-called-once) +endif + ifdef CONFIG_FUNCTION_TRACER ifndef CC_FLAGS_FTRACE CC_FLAGS_FTRACE := -pg diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index c40c7b7..da52243 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -198,6 +198,23 @@ config GDB_SCRIPTS instance. See Documentation/dev-tools/gdb-kernel-debugging.rst for further details. +config NO_AUTO_INLINE + bool "Disable compiler auto-inline optimizations" + help + This will prevent the compiler from optimizing the kernel by + auto-inlining functions not marked with the inline keyword. + With this option, only functions explicitly marked with + "inline" will be inlined. This will allow the function tracer + to trace more functions because it only traces functions that + the compiler has not inlined. + + Enabling this function can help debugging a kernel if using + the function tracer. But it can also change how the kernel + works, because inlining functions may change the timing, + which could make it difficult while debugging race conditions. + + If unsure, select N. + config ENABLE_WARN_DEPRECATED bool "Enable __deprecated logic" default y