* [PATCH v3 0/4] kernel hacking: GCC optimization for better debug experience (-Og)
@ 2018-10-28 13:09 ` Changbin Du
0 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: yamada.masahiro, michal.lkml, tglx, mingo, linux, akpm, gregkh
Cc: rostedt, x86, linux-kbuild, linux-kernel, linux-arm-kernel,
linux-sparse, robin.murphy, Changbin Du
Hi all,
I have posted this series several months ago but interrupted by personal
affairs. Now I get time to complete this task. Thanks for all of the
reviewers.
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 relies 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_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% )
v3:
o Take suggestions from Masahiro Yamada.
v2:
o rebase on top of mainline.
Changbin Du (4):
x86/mm: declare check_la57_support() as inline
kernel hacking: new config NO_AUTO_INLINE to disable compiler
auto-inline optimizations
ARM: mm: fix build error in fix_to_virt with
CONFIG_CC_OPTIMIZE_FOR_DEBUGGING
kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og
optimization
Makefile | 11 +++++++++++
arch/arm/mm/mmu.c | 2 +-
arch/x86/kernel/head64.c | 2 +-
include/linux/compiler-gcc.h | 2 +-
include/linux/compiler.h | 2 +-
init/Kconfig | 20 ++++++++++++++++++++
kernel/configs/tiny.config | 1 +
lib/Kconfig.debug | 17 +++++++++++++++++
8 files changed, 53 insertions(+), 4 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 0/4] kernel hacking: GCC optimization for better debug experience (-Og)
@ 2018-10-28 13:09 ` Changbin Du
0 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: linux-arm-kernel
Hi all,
I have posted this series several months ago but interrupted by personal
affairs. Now I get time to complete this task. Thanks for all of the
reviewers.
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 relies 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_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% )
v3:
o Take suggestions from Masahiro Yamada.
v2:
o rebase on top of mainline.
Changbin Du (4):
x86/mm: declare check_la57_support() as inline
kernel hacking: new config NO_AUTO_INLINE to disable compiler
auto-inline optimizations
ARM: mm: fix build error in fix_to_virt with
CONFIG_CC_OPTIMIZE_FOR_DEBUGGING
kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og
optimization
Makefile | 11 +++++++++++
arch/arm/mm/mmu.c | 2 +-
arch/x86/kernel/head64.c | 2 +-
include/linux/compiler-gcc.h | 2 +-
include/linux/compiler.h | 2 +-
init/Kconfig | 20 ++++++++++++++++++++
kernel/configs/tiny.config | 1 +
lib/Kconfig.debug | 17 +++++++++++++++++
8 files changed, 53 insertions(+), 4 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
2018-10-28 13:09 ` Changbin Du
@ 2018-10-28 13:09 ` Changbin Du
-1 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: yamada.masahiro, michal.lkml, tglx, mingo, linux, akpm, gregkh
Cc: rostedt, x86, linux-kbuild, linux-kernel, linux-arm-kernel,
linux-sparse, robin.murphy, Changbin Du
The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
So declare check_la57_support() as inline to make sure the code
referring to level4_kernel_pgt is optimized out. This is a preparation
for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
Signed-off-by: Changbin Du <changbin.du@gmail.com>
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
---
arch/x86/kernel/head64.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 5dc377dc9d7b..5ae682f2aa83 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -98,7 +98,7 @@ static bool __head check_la57_support(unsigned long physaddr)
return true;
}
#else
-static bool __head check_la57_support(unsigned long physaddr)
+static inline bool __head check_la57_support(unsigned long physaddr)
{
return false;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
@ 2018-10-28 13:09 ` Changbin Du
0 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: linux-arm-kernel
The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
So declare check_la57_support() as inline to make sure the code
referring to level4_kernel_pgt is optimized out. This is a preparation
for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
Signed-off-by: Changbin Du <changbin.du@gmail.com>
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
---
arch/x86/kernel/head64.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 5dc377dc9d7b..5ae682f2aa83 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -98,7 +98,7 @@ static bool __head check_la57_support(unsigned long physaddr)
return true;
}
#else
-static bool __head check_la57_support(unsigned long physaddr)
+static inline bool __head check_la57_support(unsigned long physaddr)
{
return false;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations
2018-10-28 13:09 ` Changbin Du
@ 2018-10-28 13:09 ` Changbin Du
-1 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: yamada.masahiro, michal.lkml, tglx, mingo, linux, akpm, gregkh
Cc: rostedt, x86, linux-kbuild, linux-kernel, linux-arm-kernel,
linux-sparse, robin.murphy, Changbin Du
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: Changbin Du <changbin.du@gmail.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
Makefile | 6 ++++++
lib/Kconfig.debug | 17 +++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/Makefile b/Makefile
index 7d4ba5196010..04beb822ddfc 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 04adfc3b185e..d50711b41dad 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
--
2.17.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations
@ 2018-10-28 13:09 ` Changbin Du
0 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: linux-arm-kernel
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: Changbin Du <changbin.du@gmail.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
Makefile | 6 ++++++
lib/Kconfig.debug | 17 +++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/Makefile b/Makefile
index 7d4ba5196010..04beb822ddfc 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 04adfc3b185e..d50711b41dad 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
--
2.17.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 3/4] ARM: mm: fix build error in fix_to_virt with CONFIG_CC_OPTIMIZE_FOR_DEBUGGING
2018-10-28 13:09 ` Changbin Du
@ 2018-10-28 13:09 ` Changbin Du
-1 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: yamada.masahiro, michal.lkml, tglx, mingo, linux, akpm, gregkh
Cc: rostedt, x86, linux-kbuild, linux-kernel, linux-arm-kernel,
linux-sparse, robin.murphy, Changbin Du
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: Changbin Du <changbin.du@gmail.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
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 */
--
2.17.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 3/4] ARM: mm: fix build error in fix_to_virt with CONFIG_CC_OPTIMIZE_FOR_DEBUGGING
@ 2018-10-28 13:09 ` Changbin Du
0 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: linux-arm-kernel
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: Changbin Du <changbin.du@gmail.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
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 */
--
2.17.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization
2018-10-28 13:09 ` Changbin Du
@ 2018-10-28 13:09 ` Changbin Du
-1 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: yamada.masahiro, michal.lkml, tglx, mingo, linux, akpm, gregkh
Cc: rostedt, x86, linux-kbuild, linux-kernel, linux-arm-kernel,
linux-sparse, robin.murphy, Changbin Du
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: Changbin Du <changbin.du@gmail.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
---
v3:
o make CC_OPTIMIZE_FOR_DEBUGGING depends on $(cc-option,-Og)
o reflect CONFIG_CC_OPTIMIZE_FOR_DEBUGGING in tiny.config
---
Makefile | 5 +++++
include/linux/compiler-gcc.h | 2 +-
include/linux/compiler.h | 2 +-
init/Kconfig | 20 ++++++++++++++++++++
kernel/configs/tiny.config | 1 +
5 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 04beb822ddfc..10de245a3325 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 += -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 90ddfefb6c2b..4832c98c7885 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 1921545c6351..3836397bf477 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -350,7 +350,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 a4112e95724a..0fb9c0b5f1a1 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1105,6 +1105,26 @@ config CC_OPTIMIZE_FOR_SIZE
If unsure, say N.
+config CC_OPTIMIZE_FOR_DEBUGGING
+ bool "Optimize for better debugging experience (-Og)"
+ depends on $(cc-option,-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
diff --git a/kernel/configs/tiny.config b/kernel/configs/tiny.config
index 7fa0c4ae6394..599ea86b0800 100644
--- a/kernel/configs/tiny.config
+++ b/kernel/configs/tiny.config
@@ -1,5 +1,6 @@
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CC_OPTIMIZE_FOR_DEBUGGING is not set
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
--
2.17.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization
@ 2018-10-28 13:09 ` Changbin Du
0 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-28 13:09 UTC (permalink / raw
To: linux-arm-kernel
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: Changbin Du <changbin.du@gmail.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
---
v3:
o make CC_OPTIMIZE_FOR_DEBUGGING depends on $(cc-option,-Og)
o reflect CONFIG_CC_OPTIMIZE_FOR_DEBUGGING in tiny.config
---
Makefile | 5 +++++
include/linux/compiler-gcc.h | 2 +-
include/linux/compiler.h | 2 +-
init/Kconfig | 20 ++++++++++++++++++++
kernel/configs/tiny.config | 1 +
5 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 04beb822ddfc..10de245a3325 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 += -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 90ddfefb6c2b..4832c98c7885 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 1921545c6351..3836397bf477 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -350,7 +350,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 a4112e95724a..0fb9c0b5f1a1 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1105,6 +1105,26 @@ config CC_OPTIMIZE_FOR_SIZE
If unsure, say N.
+config CC_OPTIMIZE_FOR_DEBUGGING
+ bool "Optimize for better debugging experience (-Og)"
+ depends on $(cc-option,-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
diff --git a/kernel/configs/tiny.config b/kernel/configs/tiny.config
index 7fa0c4ae6394..599ea86b0800 100644
--- a/kernel/configs/tiny.config
+++ b/kernel/configs/tiny.config
@@ -1,5 +1,6 @@
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CC_OPTIMIZE_FOR_DEBUGGING is not set
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
--
2.17.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
2018-10-28 13:09 ` Changbin Du
@ 2018-10-28 18:09 ` Steven Rostedt
-1 siblings, 0 replies; 28+ messages in thread
From: Steven Rostedt @ 2018-10-28 18:09 UTC (permalink / raw
To: Changbin Du
Cc: yamada.masahiro, michal.lkml, tglx, mingo, linux, akpm, gregkh,
x86, linux-kbuild, linux-kernel, linux-arm-kernel, linux-sparse,
robin.murphy
On Sun, 28 Oct 2018 13:09:42 +0000
Changbin Du <changbin.du@gmail.com> wrote:
> The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> So declare check_la57_support() as inline to make sure the code
> referring to level4_kernel_pgt is optimized out. This is a preparation
> for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
>
> Signed-off-by: Changbin Du <changbin.du@gmail.com>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-- Steve
> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
> arch/x86/kernel/head64.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
> index 5dc377dc9d7b..5ae682f2aa83 100644
> --- a/arch/x86/kernel/head64.c
> +++ b/arch/x86/kernel/head64.c
> @@ -98,7 +98,7 @@ static bool __head check_la57_support(unsigned long physaddr)
> return true;
> }
> #else
> -static bool __head check_la57_support(unsigned long physaddr)
> +static inline bool __head check_la57_support(unsigned long physaddr)
> {
> return false;
> }
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
@ 2018-10-28 18:09 ` Steven Rostedt
0 siblings, 0 replies; 28+ messages in thread
From: Steven Rostedt @ 2018-10-28 18:09 UTC (permalink / raw
To: linux-arm-kernel
On Sun, 28 Oct 2018 13:09:42 +0000
Changbin Du <changbin.du@gmail.com> wrote:
> The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> So declare check_la57_support() as inline to make sure the code
> referring to level4_kernel_pgt is optimized out. This is a preparation
> for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
>
> Signed-off-by: Changbin Du <changbin.du@gmail.com>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-- Steve
> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
> arch/x86/kernel/head64.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
> index 5dc377dc9d7b..5ae682f2aa83 100644
> --- a/arch/x86/kernel/head64.c
> +++ b/arch/x86/kernel/head64.c
> @@ -98,7 +98,7 @@ static bool __head check_la57_support(unsigned long physaddr)
> return true;
> }
> #else
> -static bool __head check_la57_support(unsigned long physaddr)
> +static inline bool __head check_la57_support(unsigned long physaddr)
> {
> return false;
> }
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations
2018-10-28 13:09 ` Changbin Du
@ 2018-10-29 13:03 ` Masahiro Yamada
-1 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-10-29 13:03 UTC (permalink / raw
To: Changbin Du
Cc: Michal Marek, Thomas Gleixner, Ingo Molnar, Russell King,
Andrew Morton, Greg Kroah-Hartman, Steven Rostedt, X86 ML,
Linux Kbuild mailing list, Linux Kernel Mailing List,
linux-arm-kernel, linux-sparse, Robin Murphy
On Sun, Oct 28, 2018 at 10:13 PM Changbin Du <changbin.du@gmail.com> wrote:
>
> This patch add a new kernel hacking option NO_AUTO_INLINE. Selecting
I fixed "This patch add ..." to "This patch adds ..."
then applied to linux-kbuild.
> 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: Changbin Du <changbin.du@gmail.com>
> Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> ---
> Makefile | 6 ++++++
> lib/Kconfig.debug | 17 +++++++++++++++++
> 2 files changed, 23 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index 7d4ba5196010..04beb822ddfc 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 04adfc3b185e..d50711b41dad 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
> --
> 2.17.1
>
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations
@ 2018-10-29 13:03 ` Masahiro Yamada
0 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-10-29 13:03 UTC (permalink / raw
To: linux-arm-kernel
On Sun, Oct 28, 2018 at 10:13 PM Changbin Du <changbin.du@gmail.com> wrote:
>
> This patch add a new kernel hacking option NO_AUTO_INLINE. Selecting
I fixed "This patch add ..." to "This patch adds ..."
then applied to linux-kbuild.
> 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: Changbin Du <changbin.du@gmail.com>
> Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> ---
> Makefile | 6 ++++++
> lib/Kconfig.debug | 17 +++++++++++++++++
> 2 files changed, 23 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index 7d4ba5196010..04beb822ddfc 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 04adfc3b185e..d50711b41dad 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
> --
> 2.17.1
>
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
2018-10-28 18:09 ` Steven Rostedt
@ 2018-10-29 13:04 ` Masahiro Yamada
-1 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-10-29 13:04 UTC (permalink / raw
To: Steven Rostedt
Cc: Changbin Du, Michal Marek, Thomas Gleixner, Ingo Molnar,
Russell King, Andrew Morton, Greg Kroah-Hartman, X86 ML,
Linux Kbuild mailing list, Linux Kernel Mailing List,
linux-arm-kernel, linux-sparse, Robin Murphy
On Mon, Oct 29, 2018 at 3:09 AM Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Sun, 28 Oct 2018 13:09:42 +0000
> Changbin Du <changbin.du@gmail.com> wrote:
>
> > The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> > So declare check_la57_support() as inline to make sure the code
> > referring to level4_kernel_pgt is optimized out. This is a preparation
> > for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
> >
> > Signed-off-by: Changbin Du <changbin.du@gmail.com>
>
> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
>
> -- Steve
>
Applied to linux-kbuild.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
@ 2018-10-29 13:04 ` Masahiro Yamada
0 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-10-29 13:04 UTC (permalink / raw
To: linux-arm-kernel
On Mon, Oct 29, 2018 at 3:09 AM Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Sun, 28 Oct 2018 13:09:42 +0000
> Changbin Du <changbin.du@gmail.com> wrote:
>
> > The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> > So declare check_la57_support() as inline to make sure the code
> > referring to level4_kernel_pgt is optimized out. This is a preparation
> > for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
> >
> > Signed-off-by: Changbin Du <changbin.du@gmail.com>
>
> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
>
> -- Steve
>
Applied to linux-kbuild.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 3/4] ARM: mm: fix build error in fix_to_virt with CONFIG_CC_OPTIMIZE_FOR_DEBUGGING
2018-10-28 13:09 ` Changbin Du
@ 2018-10-29 13:05 ` Masahiro Yamada
-1 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-10-29 13:05 UTC (permalink / raw
To: Changbin Du
Cc: Michal Marek, Thomas Gleixner, Ingo Molnar, Russell King,
Andrew Morton, Greg Kroah-Hartman, Steven Rostedt, X86 ML,
Linux Kbuild mailing list, Linux Kernel Mailing List,
linux-arm-kernel, linux-sparse, Robin Murphy
On Sun, Oct 28, 2018 at 10:13 PM Changbin Du <changbin.du@gmail.com> wrote:
>
> 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: Changbin Du <changbin.du@gmail.com>
> Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> ---
Applied to linux-kbuild
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 3/4] ARM: mm: fix build error in fix_to_virt with CONFIG_CC_OPTIMIZE_FOR_DEBUGGING
@ 2018-10-29 13:05 ` Masahiro Yamada
0 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-10-29 13:05 UTC (permalink / raw
To: linux-arm-kernel
On Sun, Oct 28, 2018 at 10:13 PM Changbin Du <changbin.du@gmail.com> wrote:
>
> 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: Changbin Du <changbin.du@gmail.com>
> Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> ---
Applied to linux-kbuild
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization
2018-10-28 13:09 ` Changbin Du
@ 2018-10-29 13:16 ` Masahiro Yamada
-1 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-10-29 13:16 UTC (permalink / raw
To: Changbin Du
Cc: Michal Marek, Thomas Gleixner, Ingo Molnar, Russell King,
Andrew Morton, Greg Kroah-Hartman, Steven Rostedt, X86 ML,
Linux Kbuild mailing list, Linux Kernel Mailing List,
linux-arm-kernel, linux-sparse, Robin Murphy
On Sun, Oct 28, 2018 at 10:11 PM Changbin Du <changbin.du@gmail.com> wrote:
>
> 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.
I removed the sentence "So we must fallback to array tricky."
Commit 81b45683487a51b0f4d3b29d37f20d6d078544e4
killed the fallback to the negative array trick.
I also resolved a conflict.
Your series is now available in the following branch.
git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild kbuild
Please double check if I did it correctly.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization
@ 2018-10-29 13:16 ` Masahiro Yamada
0 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-10-29 13:16 UTC (permalink / raw
To: linux-arm-kernel
On Sun, Oct 28, 2018 at 10:11 PM Changbin Du <changbin.du@gmail.com> wrote:
>
> 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.
I removed the sentence "So we must fallback to array tricky."
Commit 81b45683487a51b0f4d3b29d37f20d6d078544e4
killed the fallback to the negative array trick.
I also resolved a conflict.
Your series is now available in the following branch.
git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild kbuild
Please double check if I did it correctly.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization
2018-10-29 13:16 ` Masahiro Yamada
@ 2018-10-29 14:54 ` Changbin Du
-1 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-29 14:54 UTC (permalink / raw
To: Masahiro Yamada
Cc: Changbin Du, Michal Marek, Thomas Gleixner, Ingo Molnar,
Russell King, Andrew Morton, Greg Kroah-Hartman, Steven Rostedt,
X86 ML, Linux Kbuild mailing list, Linux Kernel Mailing List,
linux-arm-kernel, linux-sparse, Robin Murphy
On Mon, Oct 29, 2018 at 10:16:02PM +0900, Masahiro Yamada wrote:
> On Sun, Oct 28, 2018 at 10:11 PM Changbin Du <changbin.du@gmail.com> wrote:
> >
> > 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.
>
>
> I removed the sentence "So we must fallback to array tricky."
>
> Commit 81b45683487a51b0f4d3b29d37f20d6d078544e4
> killed the fallback to the negative array trick.
>
>
> I also resolved a conflict.
>
> Your series is now available in the following branch.
>
> git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild kbuild
>
>
> Please double check if I did it correctly.
>
I have tested your kbuild branch and no issues found. Thanks for checking this
series!
>
> --
> Best Regards
> Masahiro Yamada
--
Thanks,
Changbin Du
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization
@ 2018-10-29 14:54 ` Changbin Du
0 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-10-29 14:54 UTC (permalink / raw
To: linux-arm-kernel
On Mon, Oct 29, 2018 at 10:16:02PM +0900, Masahiro Yamada wrote:
> On Sun, Oct 28, 2018 at 10:11 PM Changbin Du <changbin.du@gmail.com> wrote:
> >
> > 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.
>
>
> I removed the sentence "So we must fallback to array tricky."
>
> Commit 81b45683487a51b0f4d3b29d37f20d6d078544e4
> killed the fallback to the negative array trick.
>
>
> I also resolved a conflict.
>
> Your series is now available in the following branch.
>
> git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild kbuild
>
>
> Please double check if I did it correctly.
>
I have tested your kbuild branch and no issues found. Thanks for checking this
series!
>
> --
> Best Regards
> Masahiro Yamada
--
Thanks,
Changbin Du
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
2018-10-29 13:04 ` Masahiro Yamada
@ 2018-11-02 11:27 ` Borislav Petkov
-1 siblings, 0 replies; 28+ messages in thread
From: Borislav Petkov @ 2018-11-02 11:27 UTC (permalink / raw
To: Masahiro Yamada
Cc: Steven Rostedt, Changbin Du, Michal Marek, Thomas Gleixner,
Ingo Molnar, Russell King, Andrew Morton, Greg Kroah-Hartman,
X86 ML, Linux Kbuild mailing list, Linux Kernel Mailing List,
linux-arm-kernel, linux-sparse, Robin Murphy
On Mon, Oct 29, 2018 at 10:04:46PM +0900, Masahiro Yamada wrote:
> On Mon, Oct 29, 2018 at 3:09 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > On Sun, 28 Oct 2018 13:09:42 +0000
> > Changbin Du <changbin.du@gmail.com> wrote:
> >
> > > The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> > > So declare check_la57_support() as inline to make sure the code
> > > referring to level4_kernel_pgt is optimized out. This is a preparation
> > > for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
> > >
> > > Signed-off-by: Changbin Du <changbin.du@gmail.com>
> >
> > Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> >
> > -- Steve
> >
>
> Applied to linux-kbuild.
Next time, before you route a patch through your tree, please get an x86
maintainer's ACK first.
Thx.
--
Regards/Gruss,
Boris.
Good mailing practices for 400: avoid top-posting and trim the reply.
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
@ 2018-11-02 11:27 ` Borislav Petkov
0 siblings, 0 replies; 28+ messages in thread
From: Borislav Petkov @ 2018-11-02 11:27 UTC (permalink / raw
To: linux-arm-kernel
On Mon, Oct 29, 2018 at 10:04:46PM +0900, Masahiro Yamada wrote:
> On Mon, Oct 29, 2018 at 3:09 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > On Sun, 28 Oct 2018 13:09:42 +0000
> > Changbin Du <changbin.du@gmail.com> wrote:
> >
> > > The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> > > So declare check_la57_support() as inline to make sure the code
> > > referring to level4_kernel_pgt is optimized out. This is a preparation
> > > for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
> > >
> > > Signed-off-by: Changbin Du <changbin.du@gmail.com>
> >
> > Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> >
> > -- Steve
> >
>
> Applied to linux-kbuild.
Next time, before you route a patch through your tree, please get an x86
maintainer's ACK first.
Thx.
--
Regards/Gruss,
Boris.
Good mailing practices for 400: avoid top-posting and trim the reply.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
2018-11-02 11:27 ` Borislav Petkov
@ 2018-11-09 16:27 ` Masahiro Yamada
-1 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-11-09 16:27 UTC (permalink / raw
To: Borislav Petkov
Cc: Steven Rostedt, Changbin Du, Michal Marek, Thomas Gleixner,
Ingo Molnar, Russell King, Andrew Morton, Greg Kroah-Hartman,
X86 ML, Linux Kbuild mailing list, Linux Kernel Mailing List,
linux-arm-kernel, linux-sparse, Robin Murphy
On Fri, Nov 2, 2018 at 8:28 PM Borislav Petkov <bp@alien8.de> wrote:
>
> On Mon, Oct 29, 2018 at 10:04:46PM +0900, Masahiro Yamada wrote:
> > On Mon, Oct 29, 2018 at 3:09 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> > >
> > > On Sun, 28 Oct 2018 13:09:42 +0000
> > > Changbin Du <changbin.du@gmail.com> wrote:
> > >
> > > > The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> > > > So declare check_la57_support() as inline to make sure the code
> > > > referring to level4_kernel_pgt is optimized out. This is a preparation
> > > > for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
> > > >
> > > > Signed-off-by: Changbin Du <changbin.du@gmail.com>
> > >
> > > Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> > >
> > > -- Steve
> > >
> >
> > Applied to linux-kbuild.
>
> Next time, before you route a patch through your tree, please get an x86
> maintainer's ACK first.
I changed my mind, and did not include this in my previous pull request
because this series is causing many warnings.
Now, it is aiming for v5.0-rc1
So, it is not too late.
If x86 maintainers issue Acked-by,
I am happy to add it.
> Thx.
>
> --
> Regards/Gruss,
> Boris.
>
> Good mailing practices for 400: avoid top-posting and trim the reply.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
@ 2018-11-09 16:27 ` Masahiro Yamada
0 siblings, 0 replies; 28+ messages in thread
From: Masahiro Yamada @ 2018-11-09 16:27 UTC (permalink / raw
To: linux-arm-kernel
On Fri, Nov 2, 2018 at 8:28 PM Borislav Petkov <bp@alien8.de> wrote:
>
> On Mon, Oct 29, 2018 at 10:04:46PM +0900, Masahiro Yamada wrote:
> > On Mon, Oct 29, 2018 at 3:09 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> > >
> > > On Sun, 28 Oct 2018 13:09:42 +0000
> > > Changbin Du <changbin.du@gmail.com> wrote:
> > >
> > > > The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> > > > So declare check_la57_support() as inline to make sure the code
> > > > referring to level4_kernel_pgt is optimized out. This is a preparation
> > > > for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
> > > >
> > > > Signed-off-by: Changbin Du <changbin.du@gmail.com>
> > >
> > > Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> > >
> > > -- Steve
> > >
> >
> > Applied to linux-kbuild.
>
> Next time, before you route a patch through your tree, please get an x86
> maintainer's ACK first.
I changed my mind, and did not include this in my previous pull request
because this series is causing many warnings.
Now, it is aiming for v5.0-rc1
So, it is not too late.
If x86 maintainers issue Acked-by,
I am happy to add it.
> Thx.
>
> --
> Regards/Gruss,
> Boris.
>
> Good mailing practices for 400: avoid top-posting and trim the reply.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
2018-11-09 16:27 ` Masahiro Yamada
@ 2018-11-10 1:41 ` Changbin Du
-1 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-11-10 1:41 UTC (permalink / raw
To: Masahiro Yamada
Cc: Borislav Petkov, Steven Rostedt, Changbin Du, Michal Marek,
Thomas Gleixner, Ingo Molnar, Russell King, Andrew Morton,
Greg Kroah-Hartman, X86 ML, Linux Kbuild mailing list,
Linux Kernel Mailing List, linux-arm-kernel, linux-sparse,
Robin Murphy
On Sat, Nov 10, 2018 at 01:27:29AM +0900, Masahiro Yamada wrote:
> On Fri, Nov 2, 2018 at 8:28 PM Borislav Petkov <bp@alien8.de> wrote:
> >
> > On Mon, Oct 29, 2018 at 10:04:46PM +0900, Masahiro Yamada wrote:
> > > On Mon, Oct 29, 2018 at 3:09 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> > > >
> > > > On Sun, 28 Oct 2018 13:09:42 +0000
> > > > Changbin Du <changbin.du@gmail.com> wrote:
> > > >
> > > > > The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> > > > > So declare check_la57_support() as inline to make sure the code
> > > > > referring to level4_kernel_pgt is optimized out. This is a preparation
> > > > > for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
> > > > >
> > > > > Signed-off-by: Changbin Du <changbin.du@gmail.com>
> > > >
> > > > Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> > > >
> > > > -- Steve
> > > >
> > >
> > > Applied to linux-kbuild.
> >
> > Next time, before you route a patch through your tree, please get an x86
> > maintainer's ACK first.
>
>
> I changed my mind, and did not include this in my previous pull request
> because this series is causing many warnings.
>
Most of the new warnings are false warnings. Since this series didn't change any
code where the warnings happen. I'll make patches to make gcc happy.
> Now, it is aiming for v5.0-rc1
>
> So, it is not too late.
>
> If x86 maintainers issue Acked-by,
> I am happy to add it.
>
>
>
>
> > Thx.
> >
> > --
> > Regards/Gruss,
> > Boris.
> >
> > Good mailing practices for 400: avoid top-posting and trim the reply.
>
>
>
> --
> Best Regards
> Masahiro Yamada
--
Thanks,
Changbin Du
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline
@ 2018-11-10 1:41 ` Changbin Du
0 siblings, 0 replies; 28+ messages in thread
From: Changbin Du @ 2018-11-10 1:41 UTC (permalink / raw
To: linux-arm-kernel
On Sat, Nov 10, 2018 at 01:27:29AM +0900, Masahiro Yamada wrote:
> On Fri, Nov 2, 2018 at 8:28 PM Borislav Petkov <bp@alien8.de> wrote:
> >
> > On Mon, Oct 29, 2018 at 10:04:46PM +0900, Masahiro Yamada wrote:
> > > On Mon, Oct 29, 2018 at 3:09 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> > > >
> > > > On Sun, 28 Oct 2018 13:09:42 +0000
> > > > Changbin Du <changbin.du@gmail.com> wrote:
> > > >
> > > > > The level4_kernel_pgt is only defined when X86_5LEVEL is enabled.
> > > > > So declare check_la57_support() as inline to make sure the code
> > > > > referring to level4_kernel_pgt is optimized out. This is a preparation
> > > > > for CONFIG_CC_OPTIMIZE_FOR_DEBUGGING.
> > > > >
> > > > > Signed-off-by: Changbin Du <changbin.du@gmail.com>
> > > >
> > > > Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> > > >
> > > > -- Steve
> > > >
> > >
> > > Applied to linux-kbuild.
> >
> > Next time, before you route a patch through your tree, please get an x86
> > maintainer's ACK first.
>
>
> I changed my mind, and did not include this in my previous pull request
> because this series is causing many warnings.
>
Most of the new warnings are false warnings. Since this series didn't change any
code where the warnings happen. I'll make patches to make gcc happy.
> Now, it is aiming for v5.0-rc1
>
> So, it is not too late.
>
> If x86 maintainers issue Acked-by,
> I am happy to add it.
>
>
>
>
> > Thx.
> >
> > --
> > Regards/Gruss,
> > Boris.
> >
> > Good mailing practices for 400: avoid top-posting and trim the reply.
>
>
>
> --
> Best Regards
> Masahiro Yamada
--
Thanks,
Changbin Du
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2018-11-10 1:41 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-28 13:09 [PATCH v3 0/4] kernel hacking: GCC optimization for better debug experience (-Og) Changbin Du
2018-10-28 13:09 ` Changbin Du
2018-10-28 13:09 ` [PATCH v3 1/4] x86/mm: declare check_la57_support() as inline Changbin Du
2018-10-28 13:09 ` Changbin Du
2018-10-28 18:09 ` Steven Rostedt
2018-10-28 18:09 ` Steven Rostedt
2018-10-29 13:04 ` Masahiro Yamada
2018-10-29 13:04 ` Masahiro Yamada
2018-11-02 11:27 ` Borislav Petkov
2018-11-02 11:27 ` Borislav Petkov
2018-11-09 16:27 ` Masahiro Yamada
2018-11-09 16:27 ` Masahiro Yamada
2018-11-10 1:41 ` Changbin Du
2018-11-10 1:41 ` Changbin Du
2018-10-28 13:09 ` [PATCH v3 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations Changbin Du
2018-10-28 13:09 ` Changbin Du
2018-10-29 13:03 ` Masahiro Yamada
2018-10-29 13:03 ` Masahiro Yamada
2018-10-28 13:09 ` [PATCH v3 3/4] ARM: mm: fix build error in fix_to_virt with CONFIG_CC_OPTIMIZE_FOR_DEBUGGING Changbin Du
2018-10-28 13:09 ` Changbin Du
2018-10-29 13:05 ` Masahiro Yamada
2018-10-29 13:05 ` Masahiro Yamada
2018-10-28 13:09 ` [PATCH v3 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization Changbin Du
2018-10-28 13:09 ` Changbin Du
2018-10-29 13:16 ` Masahiro Yamada
2018-10-29 13:16 ` Masahiro Yamada
2018-10-29 14:54 ` Changbin Du
2018-10-29 14:54 ` Changbin Du
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.