* [PATCH] Make alignment cflags configurable.
@ 2015-08-12 12:32 dl9pf
2015-08-12 12:50 ` David Woodhouse
0 siblings, 1 reply; 8+ messages in thread
From: dl9pf @ 2015-08-12 12:32 UTC (permalink / raw)
To: dl9pf; +Cc: tglx, mingo, hpa, x86, linux-kernel, llvmlinux, dwmw2, behanw
From: Jan-Simon Möller <dl9pf@gmx.de>
This patch adds switches for
-falign-jumps=1
and
-falign-loops=1
Default is off by intention to allow seamless operation.
Signed-off-by: Jan-Simon Möller <dl9pf@gmx.de>
CC: tglx@linutronix.de
CC: mingo@redhat.com
CC: hpa@zytor.com
CC: x86@kernel.org
CC: linux-kernel@vger.kernel.org
CC: llvmlinux@lists.linuxfoundation.org
CC: dwmw2@infradead.org
CC: behanw@converseincode.com
---
arch/x86/Kconfig | 22 ++++++++++++++++++++++
arch/x86/Makefile | 4 ++++
2 files changed, 26 insertions(+)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b3a1a5d..ebd4b03 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -644,6 +644,28 @@ config SCHED_OMIT_FRAME_POINTER
If in doubt, say "Y".
+config ALIGN_JUMP_TARGETS_NONDEFAULT
+ bool "Align jump targets to 1 byte"
+ default n
+ ---help---
+ Align jump targets to 1 byte, not the default 16 bytes.
+ This results in a smaller packaging of the Kernel
+ (around 300k in a usual configuration) by removing
+ noops that would otherwise be inserted for
+ alignment reasons.
+ The default is off to make sure all compilers work.
+
+config ALIGN_LOOPS_NONDEFAULT
+ bool "Pack loops tightly"
+ default n
+ ---help---
+ Align loops to 1 byte, not the default 16 bytes.
+ This results in a smaller packaging of the Kernel
+ by removing noops that would otherwise be inserted for
+ alignment reasons.
+ The default is off to make sure all compilers work.
+
+
menuconfig HYPERVISOR_GUEST
bool "Linux guest support"
---help---
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 118e6de..38c38f4 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -77,11 +77,15 @@ else
KBUILD_AFLAGS += -m64
KBUILD_CFLAGS += -m64
+ifdef ALIGN_JUMP_TARGETS_NONDEFAULT
# Align jump targets to 1 byte, not the default 16 bytes:
KBUILD_CFLAGS += -falign-jumps=1
+endif
+ifdef ALIGN_LOOPS_NONDEFAULT
# Pack loops tightly as well:
KBUILD_CFLAGS += -falign-loops=1
+endif
# Don't autogenerate traditional x87 instructions
KBUILD_CFLAGS += $(call cc-option,-mno-80387)
--
2.5.0
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] Make alignment cflags configurable.
2015-08-12 12:32 [PATCH] Make alignment cflags configurable dl9pf
@ 2015-08-12 12:50 ` David Woodhouse
2015-08-12 22:30 ` Jan-Simon Moeller
0 siblings, 1 reply; 8+ messages in thread
From: David Woodhouse @ 2015-08-12 12:50 UTC (permalink / raw)
To: dl9pf; +Cc: tglx, mingo, hpa, x86, linux-kernel, llvmlinux, behanw
[-- Attachment #1: Type: text/plain, Size: 814 bytes --]
On Wed, 2015-08-12 at 14:32 +0200, dl9pf@gmx.de wrote:
> From: Jan-Simon Möller <dl9pf@gmx.de>
>
> This patch adds switches for
> -falign-jumps=1
> and
> -falign-loops=1
>
> Default is off by intention to allow seamless operation.
>
> Signed-off-by: Jan-Simon Möller <dl9pf@gmx.de>
You could mention that this is to fix the clang build. But why is it
needed? It isn't that clang just doesn't accept the option, is it?
Otherwise we could just use $(call cc-option, -falign-jumps=1) etc.
Did you get to the bottom of the clang failure here? Just turning this
off without a coherent explanation doesn't seem like the right thing to
do.
--
David Woodhouse Open Source Technology Centre
David.Woodhouse@intel.com Intel Corporation
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5691 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Make alignment cflags configurable.
2015-08-12 12:50 ` David Woodhouse
@ 2015-08-12 22:30 ` Jan-Simon Moeller
2015-08-12 22:37 ` H. Peter Anvin
0 siblings, 1 reply; 8+ messages in thread
From: Jan-Simon Moeller @ 2015-08-12 22:30 UTC (permalink / raw)
To: David Woodhouse; +Cc: tglx, mingo, hpa, x86, linux-kernel, llvmlinux, behanw
Hi all!
> You could mention that this is to fix the clang build. But why is it
> needed? It isn't that clang just doesn't accept the option, is it?
> Otherwise we could just use $(call cc-option, -falign-jumps=1) etc.
Yes it is to fix the build with clang.
I tried cc-option, but it does not improve the situation (more below).
This is why I chose the config option approach in the patch.
> Did you get to the bottom of the clang failure here? Just turning this
> off without a coherent explanation doesn't seem like the right thing to
> do.
I know it is not the final solution which is why I turned it into a config
option. We can still debate if default should be "y" or "n". This way we all
can proceed.
@Ingo: would it be fine if we wrap it into a config option defaulting to "y" ?
What I can say so far is that although clang warns about the unknown option
and ignores it, the resulting kernel still fails to boot somewhere early in
start_kernel(). I'm still investigating.
My current trace ends like this:
page_address_init ~ setup_arch ~ then arch/x86/kernel/setup.c:898
setup.c:898 is a printk actually ...
early_idt_handler_array[i] ~> early_idt_handler_common
The mail thread is here:
http://lists.linuxfoundation.org/pipermail/llvmlinux/2015-August/001276.html
<wild guess>
We still build with -no-integrated-as which means we use gas. Maybe the flag
is passed-on there and things get confused.
</wile guess>
Best,
Jan-Simon
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Make alignment cflags configurable.
2015-08-12 22:30 ` Jan-Simon Moeller
@ 2015-08-12 22:37 ` H. Peter Anvin
2015-08-12 23:17 ` [llvmlinux] " Jan-Simon Moeller
0 siblings, 1 reply; 8+ messages in thread
From: H. Peter Anvin @ 2015-08-12 22:37 UTC (permalink / raw)
To: Jan-Simon Moeller, David Woodhouse
Cc: tglx, mingo, x86, linux-kernel, llvmlinux, behanw
NAK. This is crazy.
On August 12, 2015 3:30:19 PM PDT, Jan-Simon Moeller <dl9pf@gmx.de> wrote:
>Hi all!
>
>> You could mention that this is to fix the clang build. But why is it
>> needed? It isn't that clang just doesn't accept the option, is it?
>> Otherwise we could just use $(call cc-option, -falign-jumps=1) etc.
>
>Yes it is to fix the build with clang.
>I tried cc-option, but it does not improve the situation (more below).
>This is why I chose the config option approach in the patch.
>
>
>> Did you get to the bottom of the clang failure here? Just turning
>this
>> off without a coherent explanation doesn't seem like the right thing
>to
>> do.
>
>I know it is not the final solution which is why I turned it into a
>config
>option. We can still debate if default should be "y" or "n". This way
>we all
>can proceed.
>
>@Ingo: would it be fine if we wrap it into a config option defaulting
>to "y" ?
>
>
>What I can say so far is that although clang warns about the unknown
>option
>and ignores it, the resulting kernel still fails to boot somewhere
>early in
>start_kernel(). I'm still investigating.
>
>My current trace ends like this:
>page_address_init ~ setup_arch ~ then arch/x86/kernel/setup.c:898
>setup.c:898 is a printk actually ...
>early_idt_handler_array[i] ~> early_idt_handler_common
>
>The mail thread is here:
>http://lists.linuxfoundation.org/pipermail/llvmlinux/2015-August/001276.html
>
>
><wild guess>
>We still build with -no-integrated-as which means we use gas. Maybe the
>flag
>is passed-on there and things get confused.
></wile guess>
>
>Best,
>Jan-Simon
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [llvmlinux] [PATCH] Make alignment cflags configurable.
2015-08-12 22:37 ` H. Peter Anvin
@ 2015-08-12 23:17 ` Jan-Simon Moeller
2015-08-12 23:37 ` David Woodhouse
0 siblings, 1 reply; 8+ messages in thread
From: Jan-Simon Moeller @ 2015-08-12 23:17 UTC (permalink / raw)
To: llvmlinux; +Cc: H. Peter Anvin, David Woodhouse, x86, linux-kernel, mingo, tglx
Am Mittwoch, 12. August 2015, 15:37:05 schrieb H. Peter Anvin:
> NAK. This is crazy.
Ok roger that. What about the cc-option at least?
This way we can figure why it does not work for clang and keep things as-is
for gcc.
JS
> On August 12, 2015 3:30:19 PM PDT, Jan-Simon Moeller <dl9pf@gmx.de> wrote:
> >Hi all!
> >
> >> You could mention that this is to fix the clang build. But why is it
> >> needed? It isn't that clang just doesn't accept the option, is it?
> >> Otherwise we could just use $(call cc-option, -falign-jumps=1) etc.
> >
> >Yes it is to fix the build with clang.
> >I tried cc-option, but it does not improve the situation (more below).
> >This is why I chose the config option approach in the patch.
> >
> >> Did you get to the bottom of the clang failure here? Just turning
> >
> >this
> >
> >> off without a coherent explanation doesn't seem like the right thing
> >
> >to
> >
> >> do.
> >
> >I know it is not the final solution which is why I turned it into a
> >config
> >option. We can still debate if default should be "y" or "n". This way
> >we all
> >can proceed.
> >
> >@Ingo: would it be fine if we wrap it into a config option defaulting
> >to "y" ?
> >
> >
> >What I can say so far is that although clang warns about the unknown
> >option
> >and ignores it, the resulting kernel still fails to boot somewhere
> >early in
> >start_kernel(). I'm still investigating.
> >
> >My current trace ends like this:
> >page_address_init ~ setup_arch ~ then arch/x86/kernel/setup.c:898
> >setup.c:898 is a printk actually ...
> >early_idt_handler_array[i] ~> early_idt_handler_common
> >
> >The mail thread is here:
> >http://lists.linuxfoundation.org/pipermail/llvmlinux/2015-August/001276.htm
> >l
> >
> >
> ><wild guess>
> >We still build with -no-integrated-as which means we use gas. Maybe the
> >flag
> >is passed-on there and things get confused.
> ></wile guess>
> >
> >Best,
> >Jan-Simon
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [llvmlinux] [PATCH] Make alignment cflags configurable.
2015-08-12 23:17 ` [llvmlinux] " Jan-Simon Moeller
@ 2015-08-12 23:37 ` David Woodhouse
2015-08-12 23:59 ` Jan-Simon Moeller
0 siblings, 1 reply; 8+ messages in thread
From: David Woodhouse @ 2015-08-12 23:37 UTC (permalink / raw)
To: Jan-Simon Moeller, llvmlinux
Cc: H. Peter Anvin, x86, linux-kernel, mingo, tglx
[-- Attachment #1: Type: text/plain, Size: 449 bytes --]
On Thu, 2015-08-13 at 01:17 +0200, Jan-Simon Moeller wrote:
> This way we can figure why it does not work for clang and keep things
> as-is for gcc.
Let's figure it out first. Or at *least* bisect and find which kernel
commit broke it.
Then we can talk about the best way to fix it.
--
David Woodhouse Open Source Technology Centre
David.Woodhouse@intel.com Intel Corporation
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5691 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [llvmlinux] [PATCH] Make alignment cflags configurable.
2015-08-12 23:37 ` David Woodhouse
@ 2015-08-12 23:59 ` Jan-Simon Moeller
2015-08-13 0:05 ` David Woodhouse
0 siblings, 1 reply; 8+ messages in thread
From: Jan-Simon Moeller @ 2015-08-12 23:59 UTC (permalink / raw)
To: llvmlinux; +Cc: David Woodhouse, tglx, x86, mingo, linux-kernel, H. Peter Anvin
Am Donnerstag, 13. August 2015, 00:37:05 schrieb David Woodhouse:
> On Thu, 2015-08-13 at 01:17 +0200, Jan-Simon Moeller wrote:
> > This way we can figure why it does not work for clang and keep things
> > as-is for gcc.
>
> Let's figure it out first. Or at *least* bisect and find which kernel
> commit broke it.
>
> Then we can talk about the best way to fix it.
I bisected it already.
down to -faling-jumps in
be6cb02779ca74d83481f017db21578cfe92891c is the first bad commit
commit be6cb02779ca74d83481f017db21578cfe92891c
Author: Ingo Molnar <mingo@kernel.org>
Date: Fri Apr 10 14:08:46 2015 +0200
x86: Align jump targets to 1-byte boundaries
Best,
Jan-Simon
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [llvmlinux] [PATCH] Make alignment cflags configurable.
2015-08-12 23:59 ` Jan-Simon Moeller
@ 2015-08-13 0:05 ` David Woodhouse
0 siblings, 0 replies; 8+ messages in thread
From: David Woodhouse @ 2015-08-13 0:05 UTC (permalink / raw)
To: Jan-Simon Moeller, llvmlinux
Cc: x86, linux-kernel, mingo, H. Peter Anvin, tglx
[-- Attachment #1: Type: text/plain, Size: 218 bytes --]
On Thu, 2015-08-13 at 01:59 +0200, Jan-Simon Moeller wrote:
>
> I bisected it already.
>
> down to -faling-jumps in
Can you work out on which file(s) this change actually makes the
difference?
--
dwmw2
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5691 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-08-13 0:05 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-12 12:32 [PATCH] Make alignment cflags configurable dl9pf
2015-08-12 12:50 ` David Woodhouse
2015-08-12 22:30 ` Jan-Simon Moeller
2015-08-12 22:37 ` H. Peter Anvin
2015-08-12 23:17 ` [llvmlinux] " Jan-Simon Moeller
2015-08-12 23:37 ` David Woodhouse
2015-08-12 23:59 ` Jan-Simon Moeller
2015-08-13 0:05 ` David Woodhouse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®