aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Makefile
diff options
context:
space:
mode:
authorMiroslav Benes <mbenes@suse.cz>2019-04-04 20:44:11 +0200
committerPetr Mladek <pmladek@suse.com>2019-04-08 16:48:52 +0200
commit43bd3a95c98e1a86b8b55d97f745c224ecff02b9 (patch)
tree624c5f37459b9734e8cc1eddf7d6839a5943cd59 /Makefile
parentMerge branch 'for-5.1/atomic-replace' into for-linus (diff)
downloadwireguard-linux-43bd3a95c98e1a86b8b55d97f745c224ecff02b9.tar.xz
wireguard-linux-43bd3a95c98e1a86b8b55d97f745c224ecff02b9.zip
kbuild: use -flive-patching when CONFIG_LIVEPATCH is enabled
GCC 9 introduces a new option, -flive-patching. It disables certain optimizations which could make a compilation unsafe for later live patching of the running kernel. The option is used only if CONFIG_LIVEPATCH is enabled and $(CC) supports it. Performance impact of the option was measured on three different Intel machines - two bigger NUMA boxes and one smaller UMA box. Kernel intensive (IO, scheduling, networking) benchmarks were selected, plus a set of HPC workloads from NAS Parallel Benchmark. The tests were done on upstream kernel 5.0-rc8 with openSUSE Leap 15.0 userspace. The majority of the tests is unaffected. The only significant exception is the scheduler section which suffers 1-3% degradation. Evaluated-by: Giovanni Gherdovich <ggherdovich@suse.cz> Signed-off-by: Miroslav Benes <mbenes@suse.cz> Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> Signed-off-by: Petr Mladek <pmladek@suse.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile4
1 files changed, 4 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 60a473247657..f8d8000f830c 100644
--- a/Makefile
+++ b/Makefile
@@ -796,6 +796,10 @@ KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
LDFLAGS_vmlinux += --gc-sections
endif
+ifdef CONFIG_LIVEPATCH
+KBUILD_CFLAGS += $(call cc-option, -flive-patching=inline-clone)
+endif
+
# arch Makefile may override CC so keep this after arch Makefile is included
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)