From patchwork Fri Oct 19 12:49:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Changbin Du X-Patchwork-Id: 10649329 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0951815E2 for ; Fri, 19 Oct 2018 12:49:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id ED7C828ADC for ; Fri, 19 Oct 2018 12:49:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E1DB528AE6; Fri, 19 Oct 2018 12:49:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D20E328ADC for ; Fri, 19 Oct 2018 12:49:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727464AbeJSUze (ORCPT ); Fri, 19 Oct 2018 16:55:34 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:41575 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727189AbeJSUze (ORCPT ); Fri, 19 Oct 2018 16:55:34 -0400 Received: by mail-pf1-f195.google.com with SMTP id m77-v6so16442043pfi.8; Fri, 19 Oct 2018 05:49:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=m3s0ND8Y5PaLjIt9gK0grLpTrPnu+YvRB4PruCgvKtg=; b=gQFp0CqvxWiGub/3+O3ZZ6O/D5OH99SVufaPys1gFursted1s37+Qi5A5luk6w+DR5 jG80g4ehbf50BF9Wr9UOdv/dTtfKTpX94O8NkpQKnptPEZ3IyLG3rx//UrPpfVxb0zOd oBYNm9uYKARVMVgX1b95H9RZOPlJ2dS9rezEu2+jvVi4re3IvhMWXz0ZKY6PnDpiJgHR /Pb4aw/+qUmFDoX9kPlNxIT+ntn5dyGjGFHyXrYOMioomQl8D9srr7+aniYnysnG+kUs zBy8B6rZijhiG4haLJdGNlmGg+zQUqSQR7an/AR7HINF4Vtjn+HNWeiYVjKeShoLDiXV 70MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=m3s0ND8Y5PaLjIt9gK0grLpTrPnu+YvRB4PruCgvKtg=; b=B8XfnpqSmspOvmdWTXSAnDnTwA/0kKyyQhf2dQlpTerY9zg2fWMXLS0nNIVJbecZT+ 9y+M77RuY0ZL/1CiO4772/Y581ACsnD6sBdAsa8te3Fc6znL1yDYKt/RumI0KAvxKcJG VpSW2mV4ccuSxdyQngvtdhDuew2rC9Mu5RDH3tUtORkTNKiF75Vcr63bbQcnyEbbTSto 2PzNpQPONQZ2WRkDMpnqtKTRS+bLFBkd2dbDtPGQUwY3G4wyxBLbvmnxn18fEEBYOwGm ouX3nSiGDoQgVIdMPFx9I+6F+KJJZDv3FKsAT1SweKh1qBW5EpU4nmvn1+/VZExc2SnS AfBg== X-Gm-Message-State: ABuFfogC7qVbpIeEUgV+8K0aCjFKqciTNy6A0u1SORUa7S7aURahhW3B U9EPM9lRCxwKefzPUL4XI1g= X-Google-Smtp-Source: ACcGV63ugIg0pvNshNengjIlldBfTze5yoqmHvVJZ48xpDQ0i/6Z3TjEvP8N79/Ffta8CPIodQ5afw== X-Received: by 2002:a63:1806:: with SMTP id y6-v6mr32886939pgl.187.1539953374792; Fri, 19 Oct 2018 05:49:34 -0700 (PDT) Received: from vultr.guest ([2001:19f0:6001:4ff6:5400:1ff:feb7:a195]) by smtp.gmail.com with ESMTPSA id o131-v6sm33640679pgo.53.2018.10.19.05.49.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Oct 2018 05:49:34 -0700 (PDT) From: Du Changbin To: yamada.masahiro@socionext.com, michal.lkml@markovi.net, tglx@linutronix.de, mingo@redhat.com, linux@armlinux.org.uk, akpm@linux-foundation.org Cc: rostedt@goodmis.org, x86@kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sparse@vger.kernel.org, robin.murphy@arm.com, Du Changbin Subject: [PATCH v2 1/4] x86/mm: surround level4_kernel_pgt with #ifdef CONFIG_X86_5LEVEL...#endif Date: Fri, 19 Oct 2018 12:49:18 +0000 Message-Id: <20181019124921.13780-2-changbin.du@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181019124921.13780-1-changbin.du@gmail.com> References: <20181019124921.13780-1-changbin.du@gmail.com> Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The level4_kernel_pgt is only defined when X86_5LEVEL is enabled. So surround level4_kernel_pgt with #ifdef CONFIG_X86_5LEVEL...#endif to make code correct. Signed-off-by: Du Changbin Acked-by: Steven Rostedt (VMware) --- arch/x86/include/asm/pgtable_64.h | 2 ++ arch/x86/kernel/head64.c | 13 ++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h index 9c85b54bf03c..9333f7fa5bdb 100644 --- a/arch/x86/include/asm/pgtable_64.h +++ b/arch/x86/include/asm/pgtable_64.h @@ -16,7 +16,9 @@ #include #include +#ifdef CONFIG_X86_5LEVEL extern p4d_t level4_kernel_pgt[512]; +#endif extern p4d_t level4_ident_pgt[512]; extern pud_t level3_kernel_pgt[512]; extern pud_t level3_ident_pgt[512]; diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index ddee1f0870c4..4a59ef93c258 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -151,16 +151,15 @@ unsigned long __head __startup_64(unsigned long physaddr, pgd = fixup_pointer(&early_top_pgt, physaddr); p = pgd + pgd_index(__START_KERNEL_map); - if (la57) - *p = (unsigned long)level4_kernel_pgt; - else - *p = (unsigned long)level3_kernel_pgt; - *p += _PAGE_TABLE_NOENC - __START_KERNEL_map + load_delta; - +#ifdef CONFIG_X86_5LEVEL if (la57) { + *p = (unsigned long)level4_kernel_pgt; p4d = fixup_pointer(&level4_kernel_pgt, physaddr); p4d[511] += load_delta; - } + } else +#endif + *p = (unsigned long)level3_kernel_pgt; + *p += _PAGE_TABLE_NOENC - __START_KERNEL_map + load_delta; pud = fixup_pointer(&level3_kernel_pgt, physaddr); pud[510] += load_delta; From patchwork Fri Oct 19 12:49:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Changbin Du X-Patchwork-Id: 10649327 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C924113A4 for ; Fri, 19 Oct 2018 12:49:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BA03628AE6 for ; Fri, 19 Oct 2018 12:49:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A953028ADA; Fri, 19 Oct 2018 12:49:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9C68228ADA for ; Fri, 19 Oct 2018 12:49:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727282AbeJSUzh (ORCPT ); Fri, 19 Oct 2018 16:55:37 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:35463 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727189AbeJSUzh (ORCPT ); Fri, 19 Oct 2018 16:55:37 -0400 Received: by mail-pl1-f194.google.com with SMTP id f8-v6so15851265plb.2; Fri, 19 Oct 2018 05:49:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=slUZHPHVWILEQDe/G53asTgV55QCgnXrDwP4FLIrtew=; b=UJGaYjYfqXz18nB33Ii+Cxvd7ozcGVB4Iku1dHrakrbdo0Ei615ophZrWC1l7ZaBoD VE4ypyFjqFXMWkfVhcD2+Y1bQ7gyVcToweVvoGCwpGPYsWvBiJzFEEwHrN1dyN5OxJBq M6Tpr6eT6WdlcaQCi4U1cO/NQ3o0pFKLzN9O9VguxVyJ5vWaNznByYEv0+pstVk+F/4F lGtCxt3DMxd3/SJqnxXXojw/I78ZycaZ94zm56qyJnw4ubjzf/GEsjabW0l1t1GPvl2d clWy8zT3ifZLvBuCcChUKuoNVlen/Lb1Ln++av4H74uQofbf14tNlTXI5arcYGyY0d0W 6cUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=slUZHPHVWILEQDe/G53asTgV55QCgnXrDwP4FLIrtew=; b=UtihT2emtAWqU8SP1PBJx9rDTYgGGWHyInJ8rvb4ieD3LTPDGCQ+aRaJWvInP7xXoo +OmqL9THhhPYNLCL+XuYfKZ04JvME9zz5PFbkJ130LmWuB6XMf8BvsBJY5V7nNb5zlyG XnJqS1tjw6OCeCPmiw5ipZCGTXBWc49UPnMSe4FYG3fze9ugzVmNcWbukWpZ3qUKrw48 ToIO89z/Te4T5JRem8+ln11zkiLcWlsIyC+n2lRHefZbM4QtGqexdPDETOekkWbsshpF TvUaMOlEEpEFYP5WvjFi81Rvi5CntljIImIaKoWUxxYMjNSbSO+/Ny+GPDvKG1phPoom 6MPg== X-Gm-Message-State: ABuFfoja8LeF0QMk4EjhEtSnJMLoQ1+mukqs4QqU9dVxtKsRW3SCfDp6 CQ5RENxJ82ZNFX3QJB9pHWc= X-Google-Smtp-Source: ACcGV60Nk76JtkMCH1g1HWC0/HmuI92qIA6BTyXE6LzTJSoOQI79YcoBgHhfuWqAR8GOzGx4SBWj9w== X-Received: by 2002:a17:902:9a45:: with SMTP id x5-v6mr33783592plv.213.1539953378492; Fri, 19 Oct 2018 05:49:38 -0700 (PDT) Received: from vultr.guest ([2001:19f0:6001:4ff6:5400:1ff:feb7:a195]) by smtp.gmail.com with ESMTPSA id o131-v6sm33640679pgo.53.2018.10.19.05.49.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Oct 2018 05:49:37 -0700 (PDT) From: Du Changbin To: yamada.masahiro@socionext.com, michal.lkml@markovi.net, tglx@linutronix.de, mingo@redhat.com, linux@armlinux.org.uk, akpm@linux-foundation.org Cc: rostedt@goodmis.org, x86@kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sparse@vger.kernel.org, robin.murphy@arm.com, Du Changbin Subject: [PATCH v2 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations Date: Fri, 19 Oct 2018 12:49:19 +0000 Message-Id: <20181019124921.13780-3-changbin.du@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181019124921.13780-1-changbin.du@gmail.com> References: <20181019124921.13780-1-changbin.du@gmail.com> Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch add a new kernel hacking option NO_AUTO_INLINE. Selecting this option 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. Signed-off-by: Du Changbin Acked-by: Steven Rostedt (VMware) --- Makefile | 6 ++++++ lib/Kconfig.debug | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/Makefile b/Makefile index e8b599b4dcde..757d6507cb5c 100644 --- a/Makefile +++ b/Makefile @@ -749,6 +749,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 ifdef CONFIG_FTRACE_MCOUNT_RECORD # gcc 5 supports generating the mcount tables directly diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 4966c4fbe7f7..c7c28ee01dfc 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -211,6 +211,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_MUST_CHECK bool "Enable __must_check logic" default y From patchwork Fri Oct 19 12:49:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Changbin Du X-Patchwork-Id: 10649325 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6B7C83B73 for ; Fri, 19 Oct 2018 12:49:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5C0B328ADA for ; Fri, 19 Oct 2018 12:49:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 500F528ADE; Fri, 19 Oct 2018 12:49:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 74ABD28ADC for ; Fri, 19 Oct 2018 12:49:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727261AbeJSUzk (ORCPT ); Fri, 19 Oct 2018 16:55:40 -0400 Received: from mail-pl1-f195.google.com ([209.85.214.195]:44302 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727189AbeJSUzk (ORCPT ); Fri, 19 Oct 2018 16:55:40 -0400 Received: by mail-pl1-f195.google.com with SMTP id d23-v6so2390639pls.11; Fri, 19 Oct 2018 05:49:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/SbxNVQeLNR4Q7MsdDU+E0N+W9M8aEsScOy37n1U4zw=; b=HWOrcdBF/nvh5mkC194yr816eFFNmEuEanWkmfNVGGlJh/EeLdI/6f63x3wFBTn8QA yAPq/9HjYxvFI+74Trn+C9x8Bf5Yr4IxO6+bxtcSS3feq6+6mOZ+4G3Ahv46Gmh1NxP9 3aFIHLFROBGcmVeQrd4cGpCDyML5m1w2OjgL8lsbpFTs5pCZdn9msSkERpJxH/M5NF4K 6YHamnjY1pN0dnepcNkM0lWhUJQw2HCEdjoRo3eVpNfvAio0+J8cF3rL/+PKzrQHXwS9 KpcPL945HbLgXqJ/Jw7ToqGeE91yQngQjfhDEd7tPbfgNqWP8loV0gzj+XOUt6FDshQI MUUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/SbxNVQeLNR4Q7MsdDU+E0N+W9M8aEsScOy37n1U4zw=; b=dX1QkCxiydVTHsWbskhaknkr0Rly/XJrPDMxdqRgPKCXXPwMJwrHg785BzMTEg5qcj Qee5VTWBGld7PQgltxVWPbL02toYSWaAJIzpgmZZ+Hq4N0YujRHT9VeBqRUUtc+4/1bv 6s1cDU+qSAUyFvLaBr9IPmCalHKWExgCpvKD8mL+916CwvhUqKs4NBDgjt+k0/0P6fpN RDQx0BhU2ZYeOxsFzLYjQPpmHx//GWf1xs3Vu3qCTPNPYISyBbwsxnXBD2jYOKZulHEI YJbIa4XOCu9s8Ix78x0ZezEB1Vh4ctkHel0EqwmDlXoOcq0fe/IunvMiU3a9gd8oFGT3 rlgA== X-Gm-Message-State: ABuFfogSrVisblPgfDWPXPDG+LZwmLu1QyF+Iz3JPM75i4EiLYAq+1ev zgTVIg836J/EPexV4KuOBG8= X-Google-Smtp-Source: ACcGV61zGq3LnI2SSMg0hRf/eDIDxDBh6fAvq1MaSZL59r5+a8Tgp5sbIUGxO6e0djEv1zU6g7kOXg== X-Received: by 2002:a17:902:562:: with SMTP id 89-v6mr34446359plf.315.1539953381674; Fri, 19 Oct 2018 05:49:41 -0700 (PDT) Received: from vultr.guest ([2001:19f0:6001:4ff6:5400:1ff:feb7:a195]) by smtp.gmail.com with ESMTPSA id o131-v6sm33640679pgo.53.2018.10.19.05.49.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Oct 2018 05:49:41 -0700 (PDT) From: Du Changbin To: yamada.masahiro@socionext.com, michal.lkml@markovi.net, tglx@linutronix.de, mingo@redhat.com, linux@armlinux.org.uk, akpm@linux-foundation.org Cc: rostedt@goodmis.org, x86@kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sparse@vger.kernel.org, robin.murphy@arm.com, Du Changbin Subject: [PATCH v2 3/4] ARM: mm: fix build error in fix_to_virt with CONFIG_CC_OPTIMIZE_FOR_DEBUGGING Date: Fri, 19 Oct 2018 12:49:20 +0000 Message-Id: <20181019124921.13780-4-changbin.du@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181019124921.13780-1-changbin.du@gmail.com> References: <20181019124921.13780-1-changbin.du@gmail.com> Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP With '-Og' optimization level, GCC would not optimize a count for a loop as a constant value. But BUILD_BUG_ON() only accept compile-time constant values. Let's use __fix_to_virt() to avoid the error. arch/arm/mm/mmu.o: In function `fix_to_virt': /home/changbin/work/linux/./include/asm-generic/fixmap.h:31: undefined reference to `__compiletime_assert_31' Makefile:1051: recipe for target 'vmlinux' failed make: *** [vmlinux] Error 1 Signed-off-by: Du Changbin Acked-by: Steven Rostedt (VMware) --- arch/arm/mm/mmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index e46a6a446cdd..c08d74e76714 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -1599,7 +1599,7 @@ static void __init early_fixmap_shutdown(void) pte_t *pte; struct map_desc map; - map.virtual = fix_to_virt(i); + map.virtual = __fix_to_virt(i); pte = pte_offset_early_fixmap(pmd_off_k(map.virtual), map.virtual); /* Only i/o device mappings are supported ATM */ From patchwork Fri Oct 19 12:49:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Changbin Du X-Patchwork-Id: 10649321 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BC80215E2 for ; Fri, 19 Oct 2018 12:49:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AC48928ADA for ; Fri, 19 Oct 2018 12:49:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A095E28ADE; Fri, 19 Oct 2018 12:49:51 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2155A28ADA for ; Fri, 19 Oct 2018 12:49:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727589AbeJSUzn (ORCPT ); Fri, 19 Oct 2018 16:55:43 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:34658 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727189AbeJSUzm (ORCPT ); Fri, 19 Oct 2018 16:55:42 -0400 Received: by mail-pl1-f193.google.com with SMTP id f18-v6so15844519plr.1; Fri, 19 Oct 2018 05:49:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=bOm0HRmT/HL5EepHWbPNNUnvLKgst+PQQHeTsNhkPAY=; b=cdWw8+VsBI86IcDArWiR6DpHu07W/NCuIEyixrOcoNHxsP28FzRLgJso8uPIna9/fy 2kJ6xQw/UIOTuJU2NgRXwMCs1dc31mElYwdE5HcLoAdMK7yvGBvB/KCMVNl+rbT8jW9d wB7yhld+7PX5iSpoQO8lL0EQLJwlYT46r582MiNKDNMnBlvEszDTE+q7uVX357hTFrYt ZB4uCONhfPWn7dp0Uiclc5K8LWOtZms9Fl1L7x00AAk82HBjvEZhlVpsrPQ4CXM+z27m /rREhz1OZgIrQmp+ffFhwSWOep/wOco5dAw3YmwPVF29ce4If7NO0Gl+2bK1LlG/jb14 3Wrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=bOm0HRmT/HL5EepHWbPNNUnvLKgst+PQQHeTsNhkPAY=; b=lERzTOV70M/jdqNehyZPFjTVAUilur1W/XUyjvaySZDvfhw/B5xJgKGcTVXGxn0Wtl r6OprFrnaBxLughxabaDSlrCcS0Q2R7t3HbtWc/EptkAgyqRbEgve7ry3VzWSbi869Y3 A74tzuSJNCwhHLyrLKgpN+uSXmefwFuG49vMa/tJ2iBouOTkL0r52TGM6fmKrKUUwjHi s71MOcqZB03byNMWaBDbqp70i/gQHzYs0MCGQRmn/lW11qpNouYCYz4gVIwn+y73mtXJ ZZh2v++rlTQIpoYcBe8jDt1P0uN6+ZWkpGsXc44aKJONVb2RU1UlyBvC4XVI9rbbVS0W rWpQ== X-Gm-Message-State: ABuFfogel92YNDUFljC50zktnHfJxJ878Km7EE+5cX0nc/0jpaHJ66aE LHYTctAJaurVHBwhaXffuMk= X-Google-Smtp-Source: ACcGV63lQ++xgpge5a4+5IgmRhl8IM1qUJsIhp3WFWDgw9MDcUJlRgzEayX+41yHaVanS/iPVQDQPA== X-Received: by 2002:a17:902:6843:: with SMTP id f3-v6mr33968645pln.64.1539953383858; Fri, 19 Oct 2018 05:49:43 -0700 (PDT) Received: from vultr.guest ([2001:19f0:6001:4ff6:5400:1ff:feb7:a195]) by smtp.gmail.com with ESMTPSA id o131-v6sm33640679pgo.53.2018.10.19.05.49.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Oct 2018 05:49:43 -0700 (PDT) From: Du Changbin To: yamada.masahiro@socionext.com, michal.lkml@markovi.net, tglx@linutronix.de, mingo@redhat.com, linux@armlinux.org.uk, akpm@linux-foundation.org Cc: rostedt@goodmis.org, x86@kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sparse@vger.kernel.org, robin.murphy@arm.com, Du Changbin Subject: [PATCH v2 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization Date: Fri, 19 Oct 2018 12:49:21 +0000 Message-Id: <20181019124921.13780-5-changbin.du@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181019124921.13780-1-changbin.du@gmail.com> References: <20181019124921.13780-1-changbin.du@gmail.com> Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This will apply GCC '-Og' optimization level which is supported since GCC 4.8. This optimization level 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. If enabling this option breaks your kernel, you should either disable this or find a fix (mostly in the arch code). Currently this option has only been tested on x86_64 and arm platform. This option can satisfy people who was searching for a method to disable compiler optimizations so to achieve better kernel debugging experience with kgdb or qemu. The main problem of '-Og' is we must not use __attribute__((error(msg))). The compiler will report error though the call to error function still can be optimize out. So we must fallback to array tricky. Comparison of vmlinux size: a bit smaller. w/o CONFIG_CC_OPTIMIZE_FOR_DEBUGGING $ size vmlinux text data bss dec hex filename 22665554 9709674 2920908 35296136 21a9388 vmlinux w/ CONFIG_CC_OPTIMIZE_FOR_DEBUGGING $ 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_CC_OPTIMIZE_FOR_DEBUGGING $ 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_CC_OPTIMIZE_FOR_DEBUGGING $ 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% ) Signed-off-by: Du Changbin Acked-by: Steven Rostedt (VMware) --- Makefile | 5 +++++ include/linux/compiler-gcc.h | 2 +- include/linux/compiler.h | 2 +- init/Kconfig | 19 +++++++++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 757d6507cb5c..ea908cfe8594 100644 --- a/Makefile +++ b/Makefile @@ -657,6 +657,10 @@ KBUILD_CFLAGS += $(call cc-disable-warning, format-truncation) KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow) KBUILD_CFLAGS += $(call cc-disable-warning, int-in-bool-context) +ifdef CONFIG_CC_OPTIMIZE_FOR_DEBUGGING +KBUILD_CFLAGS += $(call cc-option, -Og) +KBUILD_CFLAGS += $(call cc-disable-warning,maybe-uninitialized,) +else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE KBUILD_CFLAGS += $(call cc-option,-Oz,-Os) KBUILD_CFLAGS += $(call cc-disable-warning,maybe-uninitialized,) @@ -667,6 +671,7 @@ else KBUILD_CFLAGS += -O2 endif endif +endif KBUILD_CFLAGS += $(call cc-ifversion, -lt, 0409, \ $(call cc-disable-warning,maybe-uninitialized,)) diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index 4d36b27214fd..2a76f7c64b54 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h @@ -85,7 +85,7 @@ #define __compiletime_object_size(obj) __builtin_object_size(obj, 0) -#ifndef __CHECKER__ +#if !defined(__CHECKER__) && !defined(CONFIG_CC_OPTIMIZE_FOR_DEBUGGING) #define __compiletime_warning(message) __attribute__((warning(message))) #define __compiletime_error(message) __attribute__((error(message))) diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 681d866efb1e..9385c62e9f00 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -320,7 +320,7 @@ static inline void *offset_to_ptr(const int *off) * sparse see a constant array size without breaking compiletime_assert on old * versions of GCC (e.g. 4.2.4), so hide the array from sparse altogether. */ -# ifndef __CHECKER__ +# if !defined(__CHECKER__) && !defined(CONFIG_CC_OPTIMIZE_FOR_DEBUGGING) # define __compiletime_error_fallback(condition) \ do { ((void)sizeof(char[1 - 2 * condition])); } while (0) # endif diff --git a/init/Kconfig b/init/Kconfig index 1e234e2f1cba..b01c7c654570 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1081,6 +1081,25 @@ config CC_OPTIMIZE_FOR_SIZE If unsure, say N. +config CC_OPTIMIZE_FOR_DEBUGGING + bool "Optimize for better debugging experience (-Og)" + select NO_AUTO_INLINE + help + This will apply GCC '-Og' optimization level which is supported + since GCC 4.8. This optimization level offers a reasonable level + of optimization while maintaining fast compilation and a good + debugging experience. It is similar to '-O1' while preferring to + keep debug ability over runtime speed. The overall performance + will drop a bit (~6%). + + Use only if you want to debug the kernel, especially if you want + to have better kernel debugging experience with gdb facilities + like kgdb or qemu. If enabling this option breaks your kernel, + you should either disable this or find a fix (mostly in the arch + code). + + If unsure, select N. + endchoice config HAVE_LD_DEAD_CODE_DATA_ELIMINATION