Re: [PATCH] ix86: fix vDSO build

2014-07-23 Thread Jan Beulich
>>> On 11.07.14 at 00:58,  wrote:
> On 07/03/2014 07:35 AM, Jan Beulich wrote:
>> Relying on static functions used just once to get inlined (and
>> subsequently have dead code paths eliminated) is wrong: Compilers are
>> free to decide whether they do this, regardless of optimization level.
>> With this not happening for vdso_addr() (observed with gcc 4.1.x), an
>> unresolved reference to align_vdso_addr() causes the build to fail.
> 
> The fix seems odd... more of the flavor of "happens to work" unless I'm
> misunderstanding something.  If this needs to be inlined, wouldn't
> __always_inline make more sense?
> 
> What am I missing?

I think this is a matter of taste: Personally I think __always_inline should
be used rather rarely, as it takes away decisions from the compiler that
it would (generally) be in the better position to make.

Sorry for the late reply (was on vacation),
Jan

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-23 Thread Jan Beulich
 On 11.07.14 at 00:58, h...@zytor.com wrote:
 On 07/03/2014 07:35 AM, Jan Beulich wrote:
 Relying on static functions used just once to get inlined (and
 subsequently have dead code paths eliminated) is wrong: Compilers are
 free to decide whether they do this, regardless of optimization level.
 With this not happening for vdso_addr() (observed with gcc 4.1.x), an
 unresolved reference to align_vdso_addr() causes the build to fail.
 
 The fix seems odd... more of the flavor of happens to work unless I'm
 misunderstanding something.  If this needs to be inlined, wouldn't
 __always_inline make more sense?
 
 What am I missing?

I think this is a matter of taste: Personally I think __always_inline should
be used rather rarely, as it takes away decisions from the compiler that
it would (generally) be in the better position to make.

Sorry for the late reply (was on vacation),
Jan

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-10 Thread H. Peter Anvin
On 07/03/2014 07:35 AM, Jan Beulich wrote:
> Relying on static functions used just once to get inlined (and
> subsequently have dead code paths eliminated) is wrong: Compilers are
> free to decide whether they do this, regardless of optimization level.
> With this not happening for vdso_addr() (observed with gcc 4.1.x), an
> unresolved reference to align_vdso_addr() causes the build to fail.

The fix seems odd... more of the flavor of "happens to work" unless I'm
misunderstanding something.  If this needs to be inlined, wouldn't
__always_inline make more sense?

What am I missing?

-hpa

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-10 Thread H. Peter Anvin
On 07/03/2014 07:35 AM, Jan Beulich wrote:
 Relying on static functions used just once to get inlined (and
 subsequently have dead code paths eliminated) is wrong: Compilers are
 free to decide whether they do this, regardless of optimization level.
 With this not happening for vdso_addr() (observed with gcc 4.1.x), an
 unresolved reference to align_vdso_addr() causes the build to fail.

The fix seems odd... more of the flavor of happens to work unless I'm
misunderstanding something.  If this needs to be inlined, wouldn't
__always_inline make more sense?

What am I missing?

-hpa

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-09 Thread Andrew Morton
On Thu, 03 Jul 2014 15:35:07 +0100 "Jan Beulich"  wrote:

> Relying on static functions used just once to get inlined (and
> subsequently have dead code paths eliminated) is wrong: Compilers are
> free to decide whether they do this, regardless of optimization level.
> With this not happening for vdso_addr() (observed with gcc 4.1.x), an
> unresolved reference to align_vdso_addr() causes the build to fail.
> 
> Signed-off-by: Jan Beulich 
> Cc: Andy Lutomirski 
> ---
>  arch/x86/vdso/vma.c|4 
>  1 file changed, 4 insertions(+)
> 
> --- 3.16-rc3/arch/x86/vdso/vma.c
> +++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c
> @@ -62,6 +62,9 @@ struct linux_binprm;
> Only used for the 64-bit and x32 vdsos. */
>  static unsigned long vdso_addr(unsigned long start, unsigned len)
>  {
> +#ifdef CONFIG_X86_32
> + return 0;
> +#else
>   unsigned long addr, end;
>   unsigned offset;
>   end = (start + PMD_SIZE - 1) & PMD_MASK;
> @@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned
>   addr = align_vdso_addr(addr);
>  
>   return addr;
> +#endif
>  }
>  
>  static int map_vdso(const struct vdso_image *image, bool calculate_addr)

Tested-by: Andrew Morton 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-09 Thread Andrew Morton
On Thu, 03 Jul 2014 15:35:07 +0100 Jan Beulich jbeul...@suse.com wrote:

 Relying on static functions used just once to get inlined (and
 subsequently have dead code paths eliminated) is wrong: Compilers are
 free to decide whether they do this, regardless of optimization level.
 With this not happening for vdso_addr() (observed with gcc 4.1.x), an
 unresolved reference to align_vdso_addr() causes the build to fail.
 
 Signed-off-by: Jan Beulich jbeul...@suse.com
 Cc: Andy Lutomirski l...@amacapital.net
 ---
  arch/x86/vdso/vma.c|4 
  1 file changed, 4 insertions(+)
 
 --- 3.16-rc3/arch/x86/vdso/vma.c
 +++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c
 @@ -62,6 +62,9 @@ struct linux_binprm;
 Only used for the 64-bit and x32 vdsos. */
  static unsigned long vdso_addr(unsigned long start, unsigned len)
  {
 +#ifdef CONFIG_X86_32
 + return 0;
 +#else
   unsigned long addr, end;
   unsigned offset;
   end = (start + PMD_SIZE - 1)  PMD_MASK;
 @@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned
   addr = align_vdso_addr(addr);
  
   return addr;
 +#endif
  }
  
  static int map_vdso(const struct vdso_image *image, bool calculate_addr)

Tested-by: Andrew Morton a...@linux-foundation.org
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-03 Thread Boris Ostrovsky

On 07/03/2014 10:35 AM, Jan Beulich wrote:

Relying on static functions used just once to get inlined (and
subsequently have dead code paths eliminated) is wrong: Compilers are
free to decide whether they do this, regardless of optimization level.
With this not happening for vdso_addr() (observed with gcc 4.1.x), an
unresolved reference to align_vdso_addr() causes the build to fail.


Tested-by: Boris Ostrovsky 



Signed-off-by: Jan Beulich 
Cc: Andy Lutomirski 
---
  arch/x86/vdso/vma.c|4 
  1 file changed, 4 insertions(+)

--- 3.16-rc3/arch/x86/vdso/vma.c
+++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c
@@ -62,6 +62,9 @@ struct linux_binprm;
 Only used for the 64-bit and x32 vdsos. */
  static unsigned long vdso_addr(unsigned long start, unsigned len)
  {
+#ifdef CONFIG_X86_32
+   return 0;
+#else
unsigned long addr, end;
unsigned offset;
end = (start + PMD_SIZE - 1) & PMD_MASK;
@@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned
addr = align_vdso_addr(addr);
  
  	return addr;

+#endif
  }
  
  static int map_vdso(const struct vdso_image *image, bool calculate_addr)




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-03 Thread Andy Lutomirski
On Thu, Jul 3, 2014 at 8:44 AM, Jan Beulich  wrote:
 On 03.07.14 at 17:34,  wrote:
>> On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich  wrote:
>>> Relying on static functions used just once to get inlined (and
>>> subsequently have dead code paths eliminated) is wrong: Compilers are
>>> free to decide whether they do this, regardless of optimization level.
>>> With this not happening for vdso_addr() (observed with gcc 4.1.x), an
>>> unresolved reference to align_vdso_addr() causes the build to fail.
>>>
>>> Signed-off-by: Jan Beulich 
>>> Cc: Andy Lutomirski 
>>
>> Acked-by: Andy Lutomirski 
>
> Thanks (also for the other one).
>
>> Any chance you could send a dump of the symbol and relocation tables
>> of a .so.dbg with this problem?  I'm curious why checkundef.sh never
>> caught it.
>
> vma.o is part of the kernel, not the .so.

Duh :)

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-03 Thread Jan Beulich
>>> On 03.07.14 at 17:34,  wrote:
> On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich  wrote:
>> Relying on static functions used just once to get inlined (and
>> subsequently have dead code paths eliminated) is wrong: Compilers are
>> free to decide whether they do this, regardless of optimization level.
>> With this not happening for vdso_addr() (observed with gcc 4.1.x), an
>> unresolved reference to align_vdso_addr() causes the build to fail.
>>
>> Signed-off-by: Jan Beulich 
>> Cc: Andy Lutomirski 
> 
> Acked-by: Andy Lutomirski 

Thanks (also for the other one).

> Any chance you could send a dump of the symbol and relocation tables
> of a .so.dbg with this problem?  I'm curious why checkundef.sh never
> caught it.

vma.o is part of the kernel, not the .so.

Jan

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-03 Thread Andy Lutomirski
On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich  wrote:
> Relying on static functions used just once to get inlined (and
> subsequently have dead code paths eliminated) is wrong: Compilers are
> free to decide whether they do this, regardless of optimization level.
> With this not happening for vdso_addr() (observed with gcc 4.1.x), an
> unresolved reference to align_vdso_addr() causes the build to fail.
>
> Signed-off-by: Jan Beulich 
> Cc: Andy Lutomirski 

Acked-by: Andy Lutomirski 

Any chance you could send a dump of the symbol and relocation tables
of a .so.dbg with this problem?  I'm curious why checkundef.sh never
caught it.

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] ix86: fix vDSO build

2014-07-03 Thread Jan Beulich
Relying on static functions used just once to get inlined (and
subsequently have dead code paths eliminated) is wrong: Compilers are
free to decide whether they do this, regardless of optimization level.
With this not happening for vdso_addr() (observed with gcc 4.1.x), an
unresolved reference to align_vdso_addr() causes the build to fail.

Signed-off-by: Jan Beulich 
Cc: Andy Lutomirski 
---
 arch/x86/vdso/vma.c|4 
 1 file changed, 4 insertions(+)

--- 3.16-rc3/arch/x86/vdso/vma.c
+++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c
@@ -62,6 +62,9 @@ struct linux_binprm;
Only used for the 64-bit and x32 vdsos. */
 static unsigned long vdso_addr(unsigned long start, unsigned len)
 {
+#ifdef CONFIG_X86_32
+   return 0;
+#else
unsigned long addr, end;
unsigned offset;
end = (start + PMD_SIZE - 1) & PMD_MASK;
@@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned
addr = align_vdso_addr(addr);
 
return addr;
+#endif
 }
 
 static int map_vdso(const struct vdso_image *image, bool calculate_addr)



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] ix86: fix vDSO build

2014-07-03 Thread Jan Beulich
Relying on static functions used just once to get inlined (and
subsequently have dead code paths eliminated) is wrong: Compilers are
free to decide whether they do this, regardless of optimization level.
With this not happening for vdso_addr() (observed with gcc 4.1.x), an
unresolved reference to align_vdso_addr() causes the build to fail.

Signed-off-by: Jan Beulich jbeul...@suse.com
Cc: Andy Lutomirski l...@amacapital.net
---
 arch/x86/vdso/vma.c|4 
 1 file changed, 4 insertions(+)

--- 3.16-rc3/arch/x86/vdso/vma.c
+++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c
@@ -62,6 +62,9 @@ struct linux_binprm;
Only used for the 64-bit and x32 vdsos. */
 static unsigned long vdso_addr(unsigned long start, unsigned len)
 {
+#ifdef CONFIG_X86_32
+   return 0;
+#else
unsigned long addr, end;
unsigned offset;
end = (start + PMD_SIZE - 1)  PMD_MASK;
@@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned
addr = align_vdso_addr(addr);
 
return addr;
+#endif
 }
 
 static int map_vdso(const struct vdso_image *image, bool calculate_addr)



--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-03 Thread Andy Lutomirski
On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich jbeul...@suse.com wrote:
 Relying on static functions used just once to get inlined (and
 subsequently have dead code paths eliminated) is wrong: Compilers are
 free to decide whether they do this, regardless of optimization level.
 With this not happening for vdso_addr() (observed with gcc 4.1.x), an
 unresolved reference to align_vdso_addr() causes the build to fail.

 Signed-off-by: Jan Beulich jbeul...@suse.com
 Cc: Andy Lutomirski l...@amacapital.net

Acked-by: Andy Lutomirski l...@amacapital.net

Any chance you could send a dump of the symbol and relocation tables
of a .so.dbg with this problem?  I'm curious why checkundef.sh never
caught it.

--Andy
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-03 Thread Jan Beulich
 On 03.07.14 at 17:34, l...@amacapital.net wrote:
 On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich jbeul...@suse.com wrote:
 Relying on static functions used just once to get inlined (and
 subsequently have dead code paths eliminated) is wrong: Compilers are
 free to decide whether they do this, regardless of optimization level.
 With this not happening for vdso_addr() (observed with gcc 4.1.x), an
 unresolved reference to align_vdso_addr() causes the build to fail.

 Signed-off-by: Jan Beulich jbeul...@suse.com
 Cc: Andy Lutomirski l...@amacapital.net
 
 Acked-by: Andy Lutomirski l...@amacapital.net

Thanks (also for the other one).

 Any chance you could send a dump of the symbol and relocation tables
 of a .so.dbg with this problem?  I'm curious why checkundef.sh never
 caught it.

vma.o is part of the kernel, not the .so.

Jan

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-03 Thread Andy Lutomirski
On Thu, Jul 3, 2014 at 8:44 AM, Jan Beulich jbeul...@suse.com wrote:
 On 03.07.14 at 17:34, l...@amacapital.net wrote:
 On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich jbeul...@suse.com wrote:
 Relying on static functions used just once to get inlined (and
 subsequently have dead code paths eliminated) is wrong: Compilers are
 free to decide whether they do this, regardless of optimization level.
 With this not happening for vdso_addr() (observed with gcc 4.1.x), an
 unresolved reference to align_vdso_addr() causes the build to fail.

 Signed-off-by: Jan Beulich jbeul...@suse.com
 Cc: Andy Lutomirski l...@amacapital.net

 Acked-by: Andy Lutomirski l...@amacapital.net

 Thanks (also for the other one).

 Any chance you could send a dump of the symbol and relocation tables
 of a .so.dbg with this problem?  I'm curious why checkundef.sh never
 caught it.

 vma.o is part of the kernel, not the .so.

Duh :)

--Andy
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ix86: fix vDSO build

2014-07-03 Thread Boris Ostrovsky

On 07/03/2014 10:35 AM, Jan Beulich wrote:

Relying on static functions used just once to get inlined (and
subsequently have dead code paths eliminated) is wrong: Compilers are
free to decide whether they do this, regardless of optimization level.
With this not happening for vdso_addr() (observed with gcc 4.1.x), an
unresolved reference to align_vdso_addr() causes the build to fail.


Tested-by: Boris Ostrovsky boris.ostrov...@oracle.com



Signed-off-by: Jan Beulich jbeul...@suse.com
Cc: Andy Lutomirski l...@amacapital.net
---
  arch/x86/vdso/vma.c|4 
  1 file changed, 4 insertions(+)

--- 3.16-rc3/arch/x86/vdso/vma.c
+++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c
@@ -62,6 +62,9 @@ struct linux_binprm;
 Only used for the 64-bit and x32 vdsos. */
  static unsigned long vdso_addr(unsigned long start, unsigned len)
  {
+#ifdef CONFIG_X86_32
+   return 0;
+#else
unsigned long addr, end;
unsigned offset;
end = (start + PMD_SIZE - 1)  PMD_MASK;
@@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned
addr = align_vdso_addr(addr);
  
  	return addr;

+#endif
  }
  
  static int map_vdso(const struct vdso_image *image, bool calculate_addr)




--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/