From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-2499662-1525566636-2-5175987596999200879 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-charsets: X-Resolved-to: linux@kroah.com X-Delivered-to: linux@kroah.com X-Mail-from: linux-arch-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=fm2; t= 1525566635; b=KW7IEQVaQ1FjiaF6ZbtViWAdwlUKbC3YPK9NlG5y8c/OOUlK7C xZPq4hwWaTfueQflD/er2c9zq269WKQU7oJ+6/kcoaQ//ay8v8OM0tqkwBtFoZST 4aVa69uo1ZUwxmikeM/MfaPe4KR3nEaXP4djpILAlQxExc5beE0P0evHZBWmXPR0 dRL9HN0C2wXAJdSnCanobZh3qo+CE/f3tp+PhcP3aJra+bhhpbRXp+u1+BXPMo8t HM60gFBLwm0XXrRPM9Y65giNIWjDH2Hl6iyC9DVe4arnGLBOeYOMUa4ws2r5tDGU w03JCGyzpJnrujkjNQXJP1polALlpajce7cQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id:sender :list-id; s=fm2; t=1525566635; bh=PUSftjzkM5Kia5rDqr2Uod8PZu0RQt rQ5QhTsWntoqg=; b=ANQdM5Xe6XcuuyCx9a571wbL2T5TyXY1z2gZGYstJPr+Ri 8H5tCzLw5pC/hlejzpag8uo6YRp6Uv13cmHTzGHS9918cnE/SK5OrzsSjitYLb28 P51yXmr0OGpnSz8/GfW0ULb8J58qV03fYzStJTAEl+tdC2h7WZV6PyC8oaJK5XTd 8se8SutzlstjK0pcvdzlLq8Wg5NavwE5hDkOOiEEWyvOExtksVECH8GSyD0Wi3BA T7Ytd8E19Rbr3eljKXMZW8X+ElMhFK5+bdKh2I8i4Nz33bR6KFl6A8nSLPA6njc5 A7sz9QquOQB8ZelKKu8rgcxYK6lqY5o7QoTqMY3w== ARC-Authentication-Results: i=1; mx3.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=intel.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-arch-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-cm=none score=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=intel.com header.result=pass header_is_org_domain=yes; x-vs=clean score=-100 state=0 Authentication-Results: mx3.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=intel.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-arch-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-cm=none score=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=intel.com header.result=pass header_is_org_domain=yes; x-vs=clean score=-100 state=0 X-ME-VSCategory: clean X-CM-Envelope: MS4wfNgvICjibsOsjhsxWo31le58nPEr1wWmwac6Lu3pdJ/5JRfEvUrj5b41wRskNdtJ98BH+xOV3ip/XQiXv+QnnHd+IA56ErctG8S1jA4ZfZtavW523Py9 xXWd9fYDfhbTpiJXEAkoTn00DVU3mVW7JZ/yTWFqxw3TV9xwYaPlBp3aPv6Xin0BORyR/KeyKJxUnbjjbc2RhPQiTOCMepM7Vjikb5eeULf4QnB67J5uMhwv X-CM-Analysis: v=2.3 cv=Tq3Iegfh c=1 sm=1 tr=0 a=UK1r566ZdBxH71SXbqIOeA==:117 a=UK1r566ZdBxH71SXbqIOeA==:17 a=VUJBJC2UJ8kA:10 a=QyXUC8HyAAAA:8 a=D19gQVrFAAAA:8 a=6LfA-sCeOnnXfaMpjo4A:9 a=W4TVW4IDbPiebHqcZpNg:22 X-ME-CMScore: 0 X-ME-CMCategory: none Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751791AbeEFAad (ORCPT ); Sat, 5 May 2018 20:30:33 -0400 Received: from mga01.intel.com ([192.55.52.88]:21259 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751775AbeEFAac (ORCPT ); Sat, 5 May 2018 20:30:32 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,367,1520924400"; d="scan'208";a="226149297" From: changbin.du@intel.com To: yamada.masahiro@socionext.com, michal.lkml@markovi.net, tglx@linutronix.de, mingo@redhat.com, akpm@linux-foundation.org Cc: rostedt@goodmis.org, rdunlap@infradead.org, x86@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, arnd@arndb.de, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Changbin Du Subject: [PATCH v3 0/5] kernel hacking: GCC optimization for better debug experience (-Og) Date: Sun, 6 May 2018 08:20:11 +0800 Message-Id: <1525566016-30172-1-git-send-email-changbin.du@intel.com> X-Mailer: git-send-email 2.7.4 Sender: linux-arch-owner@vger.kernel.org X-Mailing-List: linux-arch@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: From: Changbin Du Hi all, I know some kernel developers was searching for a method to dissable GCC optimizations, probably they want to apply GCC '-O0' option. But since Linux kernel replys on GCC optimization to remove some dead code, so '-O0' just breaks the build. They do need this because they want to debug kernel with qemu, simics, kgtp or kgdb. Thanks for the GCC '-Og' optimization level introduced in GCC 4.8, which offers a reasonable level of optimization while maintaining fast compilation and a good debugging experience. It is similar to '-O1' while perferring to keep debug ability over runtime speed. With '-Og', we can build a kernel with better debug ability and little performance drop after some simple change. In this series, firstly introduce a new config CONFIG_NO_AUTO_INLINE after two fixes for this new option. 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. Then introduce new config CC_OPTIMIZE_FOR_DEBUGGING which apply '-Og' optimization level for whole kernel, with a simple fix in fix_to_virt(). Currently I have only tested this option on x86 and ARM platform. Other platforms should also work but probably need some compiling fixes as what having done in this series. I leave that to who want to try this debug option. Comparison of vmlinux size: a bit smaller. w/o CONFIG_DEBUG_EXPERIENCE $ size vmlinux text data bss dec hex filename 22665554 9709674 2920908 35296136 21a9388 vmlinux w/ CONFIG_DEBUG_EXPERIENCE $ size vmlinux text data bss dec hex filename 21499032 10102758 2920908 34522698 20ec64a vmlinux Comparison of system performance: a bit drop (~6%). This benchmark of kernel compilation is suggested by Ingo Molnar. https://lkml.org/lkml/2018/5/2/74 Preparation: Set cpufreq to 'performance'. for ((cpu=0; cpu<120; cpu++)); do G=/sys/devices/system/cpu/cpu$cpu/cpufreq/scaling_governor [ -f $G ] && echo performance > $G done w/o CONFIG_DEBUG_EXPERIENCE $ perf stat --repeat 5 --null --pre '\ cp -a kernel ../kernel.copy.$(date +%s); \ rm -rf *; \ git checkout .; \ echo 1 > /proc/sys/vm/drop_caches; \ find ../kernel* -type f | xargs cat >/dev/null; \ make -j kernel >/dev/null; \ make clean >/dev/null 2>&1; \ sync '\ \ make -j8 >/dev/null Performance counter stats for 'make -j8' (5 runs): 219.764246652 seconds time elapsed ( +- 0.78% ) w/ CONFIG_DEBUG_EXPERIENCE $ perf stat --repeat 5 --null --pre '\ cp -a kernel ../kernel.copy.$(date +%s); \ rm -rf *; \ git checkout .; \ echo 1 > /proc/sys/vm/drop_caches; \ find ../kernel* -type f | xargs cat >/dev/null; \ make -j kernel >/dev/null; \ make clean >/dev/null 2>&1; \ sync '\ \ make -j8 >/dev/null Performance counter stats for 'make -j8' (5 runs): 233.574187771 seconds time elapsed ( +- 0.19% ) Changbin Du (5): x86/mm: surround level4_kernel_pgt with #ifdef CONFIG_X86_5LEVEL...#endif regulator: add dummy function of_find_regulator_by_node kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization asm-generic: fix build error in fix_to_virt with CONFIG_CC_OPTIMIZE_FOR_DEBUGGING Makefile | 10 ++++++++++ arch/arm/mm/mmu.c | 2 +- arch/x86/include/asm/pgtable_64.h | 2 ++ arch/x86/kernel/head64.c | 13 ++++++------- drivers/regulator/internal.h | 9 +++++++-- include/linux/compiler-gcc.h | 2 +- include/linux/compiler.h | 2 +- init/Kconfig | 19 +++++++++++++++++++ lib/Kconfig.debug | 17 +++++++++++++++++ 9 files changed, 64 insertions(+), 12 deletions(-) -- 2.7.4