2014-12-15 08:48:17

by Christian Borntraeger

[permalink] [raw]
Subject: [PATCH 0/1] arm: Fix fallout from the access_once tree

Russell,

the access_once tree in Linux next addresses an issue discussed in
http://marc.info/?i=54611D86.4040306%40de.ibm.com and
http://lwn.net/Articles/624126/

There is one small fallout left for the arm tree with rpc_defconfig:
http://kisskb.ellerman.id.au/kisskb/buildresult/12322985/

font.c:(.text+0x34): undefined reference to `data_access_exceeds_word_size'
font.c:(.text+0x9c): undefined reference to `data_access_exceeds_word_size'
make[3]: *** [arch/arm/boot/compressed/vmlinux] Error 1
make[2]: *** [arch/arm/boot/compressed/vmlinux] Error 2
make[1]: *** [zImage] Error 2
make: *** [sub-make] Error 2

Turns out that arch/arm/boot/compressed/Makefile does use
-Dstatic= which breaks compiler.h (which gets somehow included)

Can you Ack this change (or propose an alternative)
Thanks

Christian


Christian Borntraeger (1):
arm/rpc: avoid static keyword removal via define

arch/arm/boot/compressed/Makefile | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

--
1.8.5.5


2014-12-15 08:48:31

by Christian Borntraeger

[permalink] [raw]
Subject: [PATCH] arm/rpc: avoid static keyword removal via define

commit 4486b86368d7 ("[ARM] riscpc: fix decompressor font file handling")
introduced Makefile magic to avoid building a file two times. Using
-Dstatic= does break some assumptions on compiler.h that were introduced
for READ_ONCE.

Lets just use sed on the copy instead of using a define.

Signed-off-by: Christian Borntraeger <[email protected]>
Cc: Russell King <[email protected]>
---
arch/arm/boot/compressed/Makefile | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 3ea230a..198f12a 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -196,10 +196,11 @@ $(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE

$(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE

-CFLAGS_font.o := -Dstatic=
-
+# use the font from lib/fonts/. We have to make the font global,
+# for the decompressor so lets remove the static declaration
$(obj)/font.c: $(FONTC)
$(call cmd,shipped)
+ sed -i s/static//g $@

$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S
$(call cmd,shipped)
--
1.8.5.5

2014-12-16 11:16:03

by Christian Borntraeger

[permalink] [raw]
Subject: Re: [PATCH] arm/rpc: avoid static keyword removal via define

Am 15.12.2014 um 09:48 schrieb Christian Borntraeger:
> commit 4486b86368d7 ("[ARM] riscpc: fix decompressor font file handling")
> introduced Makefile magic to avoid building a file two times. Using
> -Dstatic= does break some assumptions on compiler.h that were introduced
> for READ_ONCE.
>
> Lets just use sed on the copy instead of using a define.
>
> Signed-off-by: Christian Borntraeger <[email protected]>
> Cc: Russell King <[email protected]>

This fixed the linux-next build http://kisskb.ellerman.id.au/kisskb/target/1508/
Unless anybody complains, I will send the pull request for the access_once tree tomorrow and I have this patch applied on top.

Christian


> ---
> arch/arm/boot/compressed/Makefile | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
> index 3ea230a..198f12a 100644
> --- a/arch/arm/boot/compressed/Makefile
> +++ b/arch/arm/boot/compressed/Makefile
> @@ -196,10 +196,11 @@ $(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE
>
> $(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE
>
> -CFLAGS_font.o := -Dstatic=
> -
> +# use the font from lib/fonts/. We have to make the font global,
> +# for the decompressor so lets remove the static declaration
> $(obj)/font.c: $(FONTC)
> $(call cmd,shipped)
> + sed -i s/static//g $@
>
> $(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S
> $(call cmd,shipped)
>

2014-12-16 11:41:05

by Russell King - ARM Linux

[permalink] [raw]
Subject: Re: [PATCH] arm/rpc: avoid static keyword removal via define

On Tue, Dec 16, 2014 at 12:15:54PM +0100, Christian Borntraeger wrote:
> Am 15.12.2014 um 09:48 schrieb Christian Borntraeger:
> > commit 4486b86368d7 ("[ARM] riscpc: fix decompressor font file handling")
> > introduced Makefile magic to avoid building a file two times. Using
> > -Dstatic= does break some assumptions on compiler.h that were introduced
> > for READ_ONCE.
> >
> > Lets just use sed on the copy instead of using a define.
> >
> > Signed-off-by: Christian Borntraeger <[email protected]>
> > Cc: Russell King <[email protected]>
>
> This fixed the linux-next build http://kisskb.ellerman.id.au/kisskb/target/1508/
> Unless anybody complains, I will send the pull request for the access_once tree tomorrow and I have this patch applied on top.

Please give me some time to look at this.

--
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.

2014-12-17 16:38:39

by Christian Borntraeger

[permalink] [raw]
Subject: Re: [PATCH] arm/rpc: avoid static keyword removal via define

Am 16.12.2014 um 12:40 schrieb Russell King - ARM Linux:
> On Tue, Dec 16, 2014 at 12:15:54PM +0100, Christian Borntraeger wrote:
>> Am 15.12.2014 um 09:48 schrieb Christian Borntraeger:
>>> commit 4486b86368d7 ("[ARM] riscpc: fix decompressor font file handling")
>>> introduced Makefile magic to avoid building a file two times. Using
>>> -Dstatic= does break some assumptions on compiler.h that were introduced
>>> for READ_ONCE.
>>>
>>> Lets just use sed on the copy instead of using a define.
>>>
>>> Signed-off-by: Christian Borntraeger <[email protected]>
>>> Cc: Russell King <[email protected]>
>>
>> This fixed the linux-next build http://kisskb.ellerman.id.au/kisskb/target/1508/
>> Unless anybody complains, I will send the pull request for the access_once tree tomorrow and I have this patch applied on top.
>
> Please give me some time to look at this.

>From all builds, the only problematic case was the rpc_defconfig.
So only CONFIG_ARCH_ACORN is affected.

As I said, I want to send this series this merge window, so if you
do not find the time to look into this before rc1, what about removing
this patch from my queue and we solve this later?
Acorn Risc CPU is probably not the hottest platform right now, so if we
fix this in rc2 or rc3 this might be ok - I guess.

Christian

2014-12-17 16:55:03

by Russell King - ARM Linux

[permalink] [raw]
Subject: Re: [PATCH] arm/rpc: avoid static keyword removal via define

On Wed, Dec 17, 2014 at 04:29:46PM +0100, Christian Borntraeger wrote:
> Am 16.12.2014 um 12:40 schrieb Russell King - ARM Linux:
> > On Tue, Dec 16, 2014 at 12:15:54PM +0100, Christian Borntraeger wrote:
> >> Am 15.12.2014 um 09:48 schrieb Christian Borntraeger:
> >>> commit 4486b86368d7 ("[ARM] riscpc: fix decompressor font file handling")
> >>> introduced Makefile magic to avoid building a file two times. Using
> >>> -Dstatic= does break some assumptions on compiler.h that were introduced
> >>> for READ_ONCE.
> >>>
> >>> Lets just use sed on the copy instead of using a define.
> >>>
> >>> Signed-off-by: Christian Borntraeger <[email protected]>
> >>> Cc: Russell King <[email protected]>
> >>
> >> This fixed the linux-next build http://kisskb.ellerman.id.au/kisskb/target/1508/
> >> Unless anybody complains, I will send the pull request for the access_once tree tomorrow and I have this patch applied on top.
> >
> > Please give me some time to look at this.
>
> >From all builds, the only problematic case was the rpc_defconfig.
> So only CONFIG_ARCH_ACORN is affected.
>
> As I said, I want to send this series this merge window, so if you
> do not find the time to look into this before rc1, what about removing
> this patch from my queue and we solve this later?
> Acorn Risc CPU is probably not the hottest platform right now, so if we
> fix this in rc2 or rc3 this might be ok - I guess.

How does compiler.h get included when building font.o?

Since I haven't seen your patch series, I guess it gets included somehow
via linux/types.h ?

--
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.

2014-12-17 17:26:42

by Christian Borntraeger

[permalink] [raw]
Subject: Re: [PATCH] arm/rpc: avoid static keyword removal via define

Am 16.12.2014 um 12:40 schrieb Russell King - ARM Linux:
> On Tue, Dec 16, 2014 at 12:15:54PM +0100, Christian Borntraeger wrote:
>> Am 15.12.2014 um 09:48 schrieb Christian Borntraeger:
>>> commit 4486b86368d7 ("[ARM] riscpc: fix decompressor font file handling")
>>> introduced Makefile magic to avoid building a file two times. Using
>>> -Dstatic= does break some assumptions on compiler.h that were introduced
>>> for READ_ONCE.
>>>
>>> Lets just use sed on the copy instead of using a define.
>>>
>>> Signed-off-by: Christian Borntraeger <[email protected]>
>>> Cc: Russell King <[email protected]>
>>
>> This fixed the linux-next build http://kisskb.ellerman.id.au/kisskb/target/1508/
>> Unless anybody complains, I will send the pull request for the access_once tree tomorrow and I have this patch applied on top.
>
> Please give me some time to look at this.

>From all builds, the only problematic case was the rpc_defconfig.
As I said, I want to send this series this merge window, so if you dont find the time to look into this before rc1, I can remove this patch from my queue and we solve this later?

Christian

2014-12-17 19:54:32

by Christian Borntraeger

[permalink] [raw]
Subject: Re: [PATCH] arm/rpc: avoid static keyword removal via define

Am 17.12.2014 um 17:54 schrieb Russell King - ARM Linux:
> On Wed, Dec 17, 2014 at 04:29:46PM +0100, Christian Borntraeger wrote:
>> Am 16.12.2014 um 12:40 schrieb Russell King - ARM Linux:
>>> On Tue, Dec 16, 2014 at 12:15:54PM +0100, Christian Borntraeger wrote:
>>>> Am 15.12.2014 um 09:48 schrieb Christian Borntraeger:
>>>>> commit 4486b86368d7 ("[ARM] riscpc: fix decompressor font file handling")
>>>>> introduced Makefile magic to avoid building a file two times. Using
>>>>> -Dstatic= does break some assumptions on compiler.h that were introduced
>>>>> for READ_ONCE.
>>>>>
>>>>> Lets just use sed on the copy instead of using a define.
>>>>>
>>>>> Signed-off-by: Christian Borntraeger <[email protected]>
>>>>> Cc: Russell King <[email protected]>
>>>>
>>>> This fixed the linux-next build http://kisskb.ellerman.id.au/kisskb/target/1508/
>>>> Unless anybody complains, I will send the pull request for the access_once tree tomorrow and I have this patch applied on top.
>>>
>>> Please give me some time to look at this.
>>
>> >From all builds, the only problematic case was the rpc_defconfig.
>> So only CONFIG_ARCH_ACORN is affected.
>>
>> As I said, I want to send this series this merge window, so if you
>> do not find the time to look into this before rc1, what about removing
>> this patch from my queue and we solve this later?
>> Acorn Risc CPU is probably not the hottest platform right now, so if we
>> fix this in rc2 or rc3 this might be ok - I guess.
>
> How does compiler.h get included when building font.o?
>
> Since I haven't seen your patch series, I guess it gets included somehow
> via linux/types.h ?
>

The patch series can be found here
https://lkml.org/lkml/2014/12/11/209
or
https://git.kernel.org/cgit/linux/kernel/git/borntraeger/linux.git/commit/?h=linux-next


font.i has

[..]
# 5 "./arch/arm/include/asm/types.h" 2
# 5 "include/uapi/linux/types.h" 2
# 13 "include/uapi/linux/types.h"
# 1 "./include/uapi/linux/posix_types.h" 1

# 1 "include/linux/stddef.h" 1

# 1 "include/uapi/linux/stddef.h" 1
# 1 "include/linux/compiler.h" 1
# 54 "include/linux/compiler.h"
# 1 "include/linux/compiler-gcc.h" 1
# 106 "include/linux/compiler-gcc.h"
# 1 "include/linux/compiler-gcc4.h" 1
# 107 "include/linux/compiler-gcc.h" 2
# 55 "include/linux/compiler.h" 2
# 79 "include/linux/compiler.h"
[..]

But I fail to follow that chain when I walk manually. Maybe its too late in the evening.

Christian

2014-12-18 09:34:11

by Christian Borntraeger

[permalink] [raw]
Subject: Re: [PATCH] arm/rpc: avoid static keyword removal via define

Am 17.12.2014 um 17:54 schrieb Russell King - ARM Linux:
> On Wed, Dec 17, 2014 at 04:29:46PM +0100, Christian Borntraeger wrote:
>> Am 16.12.2014 um 12:40 schrieb Russell King - ARM Linux:
>>> On Tue, Dec 16, 2014 at 12:15:54PM +0100, Christian Borntraeger wrote:
>>>> Am 15.12.2014 um 09:48 schrieb Christian Borntraeger:
>>>>> commit 4486b86368d7 ("[ARM] riscpc: fix decompressor font file handling")
>>>>> introduced Makefile magic to avoid building a file two times. Using
>>>>> -Dstatic= does break some assumptions on compiler.h that were introduced
>>>>> for READ_ONCE.
>>>>>
>>>>> Lets just use sed on the copy instead of using a define.
>>>>>
>>>>> Signed-off-by: Christian Borntraeger <[email protected]>
>>>>> Cc: Russell King <[email protected]>
>>>>
>>>> This fixed the linux-next build http://kisskb.ellerman.id.au/kisskb/target/1508/
>>>> Unless anybody complains, I will send the pull request for the access_once tree tomorrow and I have this patch applied on top.
>>>
>>> Please give me some time to look at this.
>>
>> >From all builds, the only problematic case was the rpc_defconfig.
>> So only CONFIG_ARCH_ACORN is affected.
>>
>> As I said, I want to send this series this merge window, so if you
>> do not find the time to look into this before rc1, what about removing
>> this patch from my queue and we solve this later?
>> Acorn Risc CPU is probably not the hottest platform right now, so if we
>> fix this in rc2 or rc3 this might be ok - I guess.
>
> How does compiler.h get included when building font.o?
>
> Since I haven't seen your patch series, I guess it gets included somehow
> via linux/types.h ?

Good news.
I found a way to fix this in my code by moving the empty debug function as a static inline function into compiler.h itself. No need to change arm code.

Christian