Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1523507 > unrolled thread

[PATCH] x86: avoid warning for zero-filling .bss

Started byArnd Bergmann <arnd@arndb.de>
First post2016-11-16 15:20 +0100
Last post2016-11-18 01:10 +0100
Articles 7 — 5 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] x86: avoid warning for zero-filling .bss Arnd Bergmann <arnd@arndb.de> - 2016-11-16 15:20 +0100
    [tip:x86/urgent] x86/boot: Avoid warning for zero-filling .bss tip-bot for Arnd Bergmann <tipbot@zytor.com> - 2016-11-17 08:30 +0100
    Re: [PATCH] x86: avoid warning for zero-filling .bss Josh Poimboeuf <jpoimboe@redhat.com> - 2016-11-17 22:10 +0100
      Re: [PATCH] x86: avoid warning for zero-filling .bss hpa@zytor.com - 2016-11-17 22:20 +0100
      Re: [PATCH] x86: avoid warning for zero-filling .bss Arnd Bergmann <arnd@arndb.de> - 2016-11-17 23:40 +0100
        Re: [PATCH] x86: avoid warning for zero-filling .bss Josh Poimboeuf <jpoimboe@redhat.com> - 2016-11-17 23:50 +0100
          Re: [PATCH] x86: avoid warning for zero-filling .bss "H. Peter Anvin" <hpa@zytor.com> - 2016-11-18 01:10 +0100

#1523507 — [PATCH] x86: avoid warning for zero-filling .bss

FromArnd Bergmann <arnd@arndb.de>
Date2016-11-16 15:20 +0100
Subject[PATCH] x86: avoid warning for zero-filling .bss
Message-ID<sE9e9-42d-21@gated-at.bofh.it>
The latest binutils are warning about a .fill directive with an explicit
value in a .bss section:

arch/x86/kernel/head_32.S: Assembler messages:
arch/x86/kernel/head_32.S:677: Warning: ignoring fill value in section `.bss..page_aligned'
arch/x86/kernel/head_32.S:679: Warning: ignoring fill value in section `.bss..page_aligned'

This comes from the 'ENTRY()' macro padding the space between the symbols
with 'nop'. Open-coding the .globl directive without the padding
avoids that warning.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/x86/kernel/head_32.S | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
index df541ac2071e..4e8577d03372 100644
--- a/arch/x86/kernel/head_32.S
+++ b/arch/x86/kernel/head_32.S
@@ -669,14 +669,17 @@ __PAGE_ALIGNED_BSS
 initial_pg_pmd:
 	.fill 1024*KPMDS,4,0
 #else
-ENTRY(initial_page_table)
+.globl initial_page_table
+initial_page_table:
 	.fill 1024,4,0
 #endif
 initial_pg_fixmap:
 	.fill 1024,4,0
-ENTRY(empty_zero_page)
+.globl empty_zero_page
+empty_zero_page:
 	.fill 4096,1,0
-ENTRY(swapper_pg_dir)
+.globl swapper_pg_dir
+swapper_pg_dir:
 	.fill 1024,4,0
 EXPORT_SYMBOL(empty_zero_page)
 
-- 
2.9.0

[toc] | [next] | [standalone]


#1524137 — [tip:x86/urgent] x86/boot: Avoid warning for zero-filling .bss

Fromtip-bot for Arnd Bergmann <tipbot@zytor.com>
Date2016-11-17 08:30 +0100
Subject[tip:x86/urgent] x86/boot: Avoid warning for zero-filling .bss
Message-ID<sEpiV-60y-3@gated-at.bofh.it>
In reply to#1523507
Commit-ID:  553bbc11aa6c1f9e0f529a06aeeca15fbe4a3985
Gitweb:     http://git.kernel.org/tip/553bbc11aa6c1f9e0f529a06aeeca15fbe4a3985
Author:     Arnd Bergmann <arnd@arndb.de>
AuthorDate: Wed, 16 Nov 2016 15:17:09 +0100
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 17 Nov 2016 07:34:58 +0100

x86/boot: Avoid warning for zero-filling .bss

The latest binutils are warning about a .fill directive with an explicit
value in a .bss section:

  arch/x86/kernel/head_32.S: Assembler messages:
  arch/x86/kernel/head_32.S:677: Warning: ignoring fill value in section `.bss..page_aligned'
  arch/x86/kernel/head_32.S:679: Warning: ignoring fill value in section `.bss..page_aligned'

This comes from the 'ENTRY()' macro padding the space between the symbols
with 'nop' via:

  .align 4,0x90

Open-coding the .globl directive without the padding avoids that warning,
as all the symbols are already page aligned.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20161116141726.2013389-1-arnd@arndb.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/head_32.S | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
index b6b2f02..2dabea4 100644
--- a/arch/x86/kernel/head_32.S
+++ b/arch/x86/kernel/head_32.S
@@ -665,14 +665,17 @@ __PAGE_ALIGNED_BSS
 initial_pg_pmd:
 	.fill 1024*KPMDS,4,0
 #else
-ENTRY(initial_page_table)
+.globl initial_page_table
+initial_page_table:
 	.fill 1024,4,0
 #endif
 initial_pg_fixmap:
 	.fill 1024,4,0
-ENTRY(empty_zero_page)
+.globl empty_zero_page
+empty_zero_page:
 	.fill 4096,1,0
-ENTRY(swapper_pg_dir)
+.globl swapper_pg_dir
+swapper_pg_dir:
 	.fill 1024,4,0
 EXPORT_SYMBOL(empty_zero_page)
 

[toc] | [prev] | [next] | [standalone]


#1524812

FromJosh Poimboeuf <jpoimboe@redhat.com>
Date2016-11-17 22:10 +0100
Message-ID<sEC6u-5ZL-21@gated-at.bofh.it>
In reply to#1523507
On Wed, Nov 16, 2016 at 03:17:09PM +0100, Arnd Bergmann wrote:
> The latest binutils are warning about a .fill directive with an explicit
> value in a .bss section:
> 
> arch/x86/kernel/head_32.S: Assembler messages:
> arch/x86/kernel/head_32.S:677: Warning: ignoring fill value in section `.bss..page_aligned'
> arch/x86/kernel/head_32.S:679: Warning: ignoring fill value in section `.bss..page_aligned'
> 
> This comes from the 'ENTRY()' macro padding the space between the symbols
> with 'nop'. Open-coding the .globl directive without the padding
> avoids that warning.

How is there space between the symbols?  Aren't they already aligned?

Isn't the warning really about the fact that it's unnecessarily filling
a .bss section with zeros?  Would it make sense to use .align instead?

> ---
>  arch/x86/kernel/head_32.S | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
> index df541ac2071e..4e8577d03372 100644
> --- a/arch/x86/kernel/head_32.S
> +++ b/arch/x86/kernel/head_32.S
> @@ -669,14 +669,17 @@ __PAGE_ALIGNED_BSS
>  initial_pg_pmd:
>  	.fill 1024*KPMDS,4,0
>  #else
> -ENTRY(initial_page_table)
> +.globl initial_page_table
> +initial_page_table:
>  	.fill 1024,4,0
>  #endif
>  initial_pg_fixmap:
>  	.fill 1024,4,0
> -ENTRY(empty_zero_page)
> +.globl empty_zero_page
> +empty_zero_page:
>  	.fill 4096,1,0
> -ENTRY(swapper_pg_dir)
> +.globl swapper_pg_dir
> +swapper_pg_dir:
>  	.fill 1024,4,0
>  EXPORT_SYMBOL(empty_zero_page)
>  
> -- 
> 2.9.0
> 

-- 
Josh

[toc] | [prev] | [next] | [standalone]


#1524815

Fromhpa@zytor.com
Date2016-11-17 22:20 +0100
Message-ID<sECga-63q-9@gated-at.bofh.it>
In reply to#1524812
On November 17, 2016 1:02:48 PM PST, Josh Poimboeuf <jpoimboe@redhat.com> wrote:
>On Wed, Nov 16, 2016 at 03:17:09PM +0100, Arnd Bergmann wrote:
>> The latest binutils are warning about a .fill directive with an
>explicit
>> value in a .bss section:
>> 
>> arch/x86/kernel/head_32.S: Assembler messages:
>> arch/x86/kernel/head_32.S:677: Warning: ignoring fill value in
>section `.bss..page_aligned'
>> arch/x86/kernel/head_32.S:679: Warning: ignoring fill value in
>section `.bss..page_aligned'
>> 
>> This comes from the 'ENTRY()' macro padding the space between the
>symbols
>> with 'nop'. Open-coding the .globl directive without the padding
>> avoids that warning.
>
>How is there space between the symbols?  Aren't they already aligned?
>
>Isn't the warning really about the fact that it's unnecessarily filling
>a .bss section with zeros?  Would it make sense to use .align instead?
>
>> ---
>>  arch/x86/kernel/head_32.S | 9 ++++++---
>>  1 file changed, 6 insertions(+), 3 deletions(-)
>> 
>> diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
>> index df541ac2071e..4e8577d03372 100644
>> --- a/arch/x86/kernel/head_32.S
>> +++ b/arch/x86/kernel/head_32.S
>> @@ -669,14 +669,17 @@ __PAGE_ALIGNED_BSS
>>  initial_pg_pmd:
>>  	.fill 1024*KPMDS,4,0
>>  #else
>> -ENTRY(initial_page_table)
>> +.globl initial_page_table
>> +initial_page_table:
>>  	.fill 1024,4,0
>>  #endif
>>  initial_pg_fixmap:
>>  	.fill 1024,4,0
>> -ENTRY(empty_zero_page)
>> +.globl empty_zero_page
>> +empty_zero_page:
>>  	.fill 4096,1,0
>> -ENTRY(swapper_pg_dir)
>> +.globl swapper_pg_dir
>> +swapper_pg_dir:
>>  	.fill 1024,4,0
>>  EXPORT_SYMBOL(empty_zero_page)
>>  
>> -- 
>> 2.9.0
>> 

Use .org, .align, or .space
-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.

[toc] | [prev] | [next] | [standalone]


#1524861

FromArnd Bergmann <arnd@arndb.de>
Date2016-11-17 23:40 +0100
Message-ID<sEDvz-6S3-3@gated-at.bofh.it>
In reply to#1524812
On Thursday, November 17, 2016 3:02:48 PM CET Josh Poimboeuf wrote:
> On Wed, Nov 16, 2016 at 03:17:09PM +0100, Arnd Bergmann wrote:
> > The latest binutils are warning about a .fill directive with an explicit
> > value in a .bss section:
> > 
> > arch/x86/kernel/head_32.S: Assembler messages:
> > arch/x86/kernel/head_32.S:677: Warning: ignoring fill value in section `.bss..page_aligned'
> > arch/x86/kernel/head_32.S:679: Warning: ignoring fill value in section `.bss..page_aligned'
> > 
> > This comes from the 'ENTRY()' macro padding the space between the symbols
> > with 'nop'. Open-coding the .globl directive without the padding
> > avoids that warning.
> 
> How is there space between the symbols?  Aren't they already aligned?

My understanding is that they are aligned, it's just that gas complains
about the .align directive with a nonzero fill value.

> Isn't the warning really about the fact that it's unnecessarily filling
> a .bss section with zeros?  Would it make sense to use .align instead?

Filling with zeroes is allowed, and that's what we are intending anyway.
.align would not do the right thing here as it only adds padding if it's
not already aligned, but we know it is.

	Arnd

[toc] | [prev] | [next] | [standalone]


#1524862

FromJosh Poimboeuf <jpoimboe@redhat.com>
Date2016-11-17 23:50 +0100
Message-ID<sEDFf-6VS-5@gated-at.bofh.it>
In reply to#1524861
On Thu, Nov 17, 2016 at 11:32:30PM +0100, Arnd Bergmann wrote:
> On Thursday, November 17, 2016 3:02:48 PM CET Josh Poimboeuf wrote:
> > On Wed, Nov 16, 2016 at 03:17:09PM +0100, Arnd Bergmann wrote:
> > > The latest binutils are warning about a .fill directive with an explicit
> > > value in a .bss section:
> > > 
> > > arch/x86/kernel/head_32.S: Assembler messages:
> > > arch/x86/kernel/head_32.S:677: Warning: ignoring fill value in section `.bss..page_aligned'
> > > arch/x86/kernel/head_32.S:679: Warning: ignoring fill value in section `.bss..page_aligned'
> > > 
> > > This comes from the 'ENTRY()' macro padding the space between the symbols
> > > with 'nop'. Open-coding the .globl directive without the padding
> > > avoids that warning.
> > 
> > How is there space between the symbols?  Aren't they already aligned?
> 
> My understanding is that they are aligned, it's just that gas complains
> about the .align directive with a nonzero fill value.

Ah, I see now.  In that case your patch looks fine to me.

Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>

> 
> > Isn't the warning really about the fact that it's unnecessarily filling
> > a .bss section with zeros?  Would it make sense to use .align instead?
> 
> Filling with zeroes is allowed, and that's what we are intending anyway.
> .align would not do the right thing here as it only adds padding if it's
> not already aligned, but we know it is.

-- 
Josh

[toc] | [prev] | [next] | [standalone]


#1524907

From"H. Peter Anvin" <hpa@zytor.com>
Date2016-11-18 01:10 +0100
Message-ID<sEEUF-7T0-11@gated-at.bofh.it>
In reply to#1524862
On 11/17/16 14:44, Josh Poimboeuf wrote:
> On Thu, Nov 17, 2016 at 11:32:30PM +0100, Arnd Bergmann wrote:
>> On Thursday, November 17, 2016 3:02:48 PM CET Josh Poimboeuf wrote:
>>> On Wed, Nov 16, 2016 at 03:17:09PM +0100, Arnd Bergmann wrote:
>>>> The latest binutils are warning about a .fill directive with an explicit
>>>> value in a .bss section:
>>>>
>>>> arch/x86/kernel/head_32.S: Assembler messages:
>>>> arch/x86/kernel/head_32.S:677: Warning: ignoring fill value in section `.bss..page_aligned'
>>>> arch/x86/kernel/head_32.S:679: Warning: ignoring fill value in section `.bss..page_aligned'
>>>>
>>>> This comes from the 'ENTRY()' macro padding the space between the symbols
>>>> with 'nop'. Open-coding the .globl directive without the padding
>>>> avoids that warning.
>>>
>>> How is there space between the symbols?  Aren't they already aligned?
>>
>> My understanding is that they are aligned, it's just that gas complains
>> about the .align directive with a nonzero fill value.
> 
> Ah, I see now.  In that case your patch looks fine to me.
> 

Yes, ENTRY() is for code.

	-hpa

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web