public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] x86/hash: fix build failure with older binutils
@ 2014-02-21 10:32 Jan Beulich
  2014-02-21 12:51 ` H. Peter Anvin
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Beulich @ 2014-02-21 10:32 UTC (permalink / raw)
  To: mingo, tglx, hpa; +Cc: davem, dborkman, ffusco, tgraf, linux-kernel

Just like for other ISA extension instruction uses we should check
whether the assembler actually supports them. The fallback here simply
is to encode an instruction  with fixed operands (%eax and %ecx).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Cc: Francesco Fusco <ffusco@redhat.com>
Cc: Daniel Borkmann <dborkman@redhat.com>
Cc: Thomas Graf <tgraf@redhat.com>
Cc: David S. Miller <davem@davemloft.net>
---
 arch/x86/Makefile   |    1 +
 arch/x86/lib/hash.c |    4 ++++
 2 files changed, 5 insertions(+)

--- 3.14-rc3-x86-hash-crc32.orig/arch/x86/Makefile
+++ 3.14-rc3-x86-hash-crc32/arch/x86/Makefile
@@ -152,6 +152,7 @@ cfi-sections := $(call as-instr,.cfi_sec
 
 # does binutils support specific instructions?
 asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1)
+asinstr += $(call as-instr,crc32l %eax$(comma)%eax,-DCONFIG_AS_CRC32=1)
 avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1)
 avx2_instr :=$(call as-instr,vpbroadcastb %xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1)
 
--- 3.14-rc3-x86-hash-crc32.orig/arch/x86/lib/hash.c
+++ 3.14-rc3-x86-hash-crc32/arch/x86/lib/hash.c
@@ -39,7 +39,11 @@
 
 static inline u32 crc32_u32(u32 crc, u32 val)
 {
+#ifdef CONFIG_AS_CRC32
 	asm ("crc32l %1,%0\n" : "+r" (crc) : "rm" (val));
+#else
+	asm (".byte 0xf2, 0x0f, 0x38, 0xf1, 0xc1" : "+a" (crc) : "c" (val));
+#endif
 	return crc;
 }
 




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] x86/hash: fix build failure with older binutils
  2014-02-21 10:32 [PATCH 1/3] x86/hash: fix build failure with older binutils Jan Beulich
@ 2014-02-21 12:51 ` H. Peter Anvin
  2014-02-21 14:16   ` Jan Beulich
  0 siblings, 1 reply; 6+ messages in thread
From: H. Peter Anvin @ 2014-02-21 12:51 UTC (permalink / raw)
  To: Jan Beulich, mingo, tglx; +Cc: davem, dborkman, ffusco, tgraf, linux-kernel

How old?

On February 21, 2014 2:32:50 AM PST, Jan Beulich <JBeulich@suse.com> wrote:
>Just like for other ISA extension instruction uses we should check
>whether the assembler actually supports them. The fallback here simply
>is to encode an instruction  with fixed operands (%eax and %ecx).
>
>Signed-off-by: Jan Beulich <jbeulich@suse.com>
>Cc: Francesco Fusco <ffusco@redhat.com>
>Cc: Daniel Borkmann <dborkman@redhat.com>
>Cc: Thomas Graf <tgraf@redhat.com>
>Cc: David S. Miller <davem@davemloft.net>
>---
> arch/x86/Makefile   |    1 +
> arch/x86/lib/hash.c |    4 ++++
> 2 files changed, 5 insertions(+)
>
>--- 3.14-rc3-x86-hash-crc32.orig/arch/x86/Makefile
>+++ 3.14-rc3-x86-hash-crc32/arch/x86/Makefile
>@@ -152,6 +152,7 @@ cfi-sections := $(call as-instr,.cfi_sec
> 
> # does binutils support specific instructions?
> asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1)
>+asinstr += $(call as-instr,crc32l
>%eax$(comma)%eax,-DCONFIG_AS_CRC32=1)
>avx_instr := $(call as-instr,vxorps
>%ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1)
>avx2_instr :=$(call as-instr,vpbroadcastb
>%xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1)
> 
>--- 3.14-rc3-x86-hash-crc32.orig/arch/x86/lib/hash.c
>+++ 3.14-rc3-x86-hash-crc32/arch/x86/lib/hash.c
>@@ -39,7 +39,11 @@
> 
> static inline u32 crc32_u32(u32 crc, u32 val)
> {
>+#ifdef CONFIG_AS_CRC32
> 	asm ("crc32l %1,%0\n" : "+r" (crc) : "rm" (val));
>+#else
>+	asm (".byte 0xf2, 0x0f, 0x38, 0xf1, 0xc1" : "+a" (crc) : "c" (val));
>+#endif
> 	return crc;
> }
> 

-- 
Sent from my mobile phone.  Please pardon brevity and lack of formatting.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] x86/hash: fix build failure with older binutils
  2014-02-21 12:51 ` H. Peter Anvin
@ 2014-02-21 14:16   ` Jan Beulich
  2014-02-21 19:17     ` H. Peter Anvin
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Beulich @ 2014-02-21 14:16 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: davem, mingo, tglx, dborkman, ffusco, tgraf, linux-kernel

>>> On 21.02.14 at 13:51, "H. Peter Anvin" <hpa@zytor.com> wrote:
> How old?

2.16.91.0.5 (SLE10)

Jan

> On February 21, 2014 2:32:50 AM PST, Jan Beulich <JBeulich@suse.com> wrote:
>>Just like for other ISA extension instruction uses we should check
>>whether the assembler actually supports them. The fallback here simply
>>is to encode an instruction  with fixed operands (%eax and %ecx).
>>
>>Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>Cc: Francesco Fusco <ffusco@redhat.com>
>>Cc: Daniel Borkmann <dborkman@redhat.com>
>>Cc: Thomas Graf <tgraf@redhat.com>
>>Cc: David S. Miller <davem@davemloft.net>
>>---
>> arch/x86/Makefile   |    1 +
>> arch/x86/lib/hash.c |    4 ++++
>> 2 files changed, 5 insertions(+)
>>
>>--- 3.14-rc3-x86-hash-crc32.orig/arch/x86/Makefile
>>+++ 3.14-rc3-x86-hash-crc32/arch/x86/Makefile
>>@@ -152,6 +152,7 @@ cfi-sections := $(call as-instr,.cfi_sec
>> 
>> # does binutils support specific instructions?
>> asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1)
>>+asinstr += $(call as-instr,crc32l
>>%eax$(comma)%eax,-DCONFIG_AS_CRC32=1)
>>avx_instr := $(call as-instr,vxorps
>>%ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1)
>>avx2_instr :=$(call as-instr,vpbroadcastb
>>%xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1)
>> 
>>--- 3.14-rc3-x86-hash-crc32.orig/arch/x86/lib/hash.c
>>+++ 3.14-rc3-x86-hash-crc32/arch/x86/lib/hash.c
>>@@ -39,7 +39,11 @@
>> 
>> static inline u32 crc32_u32(u32 crc, u32 val)
>> {
>>+#ifdef CONFIG_AS_CRC32
>> 	asm ("crc32l %1,%0\n" : "+r" (crc) : "rm" (val));
>>+#else
>>+	asm (".byte 0xf2, 0x0f, 0x38, 0xf1, 0xc1" : "+a" (crc) : "c" (val));
>>+#endif
>> 	return crc;
>> }
>> 
> 
> -- 
> Sent from my mobile phone.  Please pardon brevity and lack of formatting.




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] x86/hash: fix build failure with older binutils
  2014-02-21 14:16   ` Jan Beulich
@ 2014-02-21 19:17     ` H. Peter Anvin
  2014-02-24  7:56       ` Jan Beulich
  0 siblings, 1 reply; 6+ messages in thread
From: H. Peter Anvin @ 2014-02-21 19:17 UTC (permalink / raw)
  To: Jan Beulich
  Cc: davem, Ingo Molnar, tglx, dborkman, ffusco, tgraf, linux-kernel

On 02/21/2014 06:16 AM, Jan Beulich wrote:
>>>> On 21.02.14 at 13:51, "H. Peter Anvin" <hpa@zytor.com> wrote:
>> How old?
> 
> 2.16.91.0.5 (SLE10)
> 

I would *love* to kill off binutils 2.16.  It was a horribly buggy
version, and it has been hard to deal with keeping things alive with it.
 How important is this?

Since this is the first I've heard of this being broken, I am kind of
encouraged that maybe we can move on?

	-hpa



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] x86/hash: fix build failure with older binutils
  2014-02-21 19:17     ` H. Peter Anvin
@ 2014-02-24  7:56       ` Jan Beulich
  2014-02-24 11:57         ` H. Peter Anvin
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Beulich @ 2014-02-24  7:56 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: davem, Ingo Molnar, tglx, dborkman, ffusco, tgraf, linux-kernel

>>> On 21.02.14 at 20:17, "H. Peter Anvin" <hpa@zytor.com> wrote:
> On 02/21/2014 06:16 AM, Jan Beulich wrote:
>>>>> On 21.02.14 at 13:51, "H. Peter Anvin" <hpa@zytor.com> wrote:
>>> How old?
>> 
>> 2.16.91.0.5 (SLE10)
>> 
> 
> I would *love* to kill off binutils 2.16.  It was a horribly buggy
> version, and it has been hard to deal with keeping things alive with it.
>  How important is this?
> 
> Since this is the first I've heard of this being broken, I am kind of
> encouraged that maybe we can move on?

2.17 doesn't have support for it either, yet has support for fxsaveq
(which you can see in the patch context we check for too). Apart
from that Documentation/Changes continues to state binutils 2.12
to be the minimum requirement...

Jan


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] x86/hash: fix build failure with older binutils
  2014-02-24  7:56       ` Jan Beulich
@ 2014-02-24 11:57         ` H. Peter Anvin
  0 siblings, 0 replies; 6+ messages in thread
From: H. Peter Anvin @ 2014-02-24 11:57 UTC (permalink / raw)
  To: Jan Beulich
  Cc: davem, Ingo Molnar, tglx, dborkman, ffusco, tgraf, linux-kernel

On 02/23/2014 11:56 PM, Jan Beulich wrote:
>
> 2.17 doesn't have support for it either, yet has support for fxsaveq
> (which you can see in the patch context we check for too). Apart
> from that Documentation/Changes continues to state binutils 2.12
> to be the minimum requirement...
>

Documentation/Changes (maybe) reflects the minimums across all 
architectures, which really has never applied to any single architecture 
for a long time.  x86 requires gcc 3.4 at a minimum, for example, and it 
is not clear that that is sufficient anymore, either.

We don't really have good documentation about what the requirements for 
various specific arches are...

That being said, it sounds like this one is justified.

	-hpa



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-02-24 11:57 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-21 10:32 [PATCH 1/3] x86/hash: fix build failure with older binutils Jan Beulich
2014-02-21 12:51 ` H. Peter Anvin
2014-02-21 14:16   ` Jan Beulich
2014-02-21 19:17     ` H. Peter Anvin
2014-02-24  7:56       ` Jan Beulich
2014-02-24 11:57         ` H. Peter Anvin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox