* [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global
[not found] <1382458346-24811-1-git-send-email-andi@firstfloor.org>
@ 2013-10-22 16:12 ` Andi Kleen
2013-10-22 17:59 ` David Miller
0 siblings, 1 reply; 10+ messages in thread
From: Andi Kleen @ 2013-10-22 16:12 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel, Andi Kleen, netdev
From: Andi Kleen <ak@linux.intel.com>
- Inline assembler defining C callable code has to be global
- The function has to be visible
Do this in wan/sbni
Cc: netdev@vger.kernel.org
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
drivers/net/wan/sbni.c | 6 +++---
drivers/net/wan/sbni.h | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c
index 5bbcb5e..571db25 100644
--- a/drivers/net/wan/sbni.c
+++ b/drivers/net/wan/sbni.c
@@ -160,7 +160,7 @@ static int scandone __initdata = 0;
static int num __initdata = 0;
static unsigned char rxl_tab[];
-static u32 crc32tab[];
+__visible u32 sbni_crc32tab[];
/* A list of all installed devices, for removing the driver module. */
static struct net_device *sbni_cards[ SBNI_MAX_NUM_CARDS ];
@@ -1563,7 +1563,7 @@ calc_crc32( u32 crc, u8 *p, u32 len )
"xorl %%ebx, %%ebx\n"
"movl %2, %%esi\n"
"movl %3, %%ecx\n"
- "movl $crc32tab, %%edi\n"
+ "movl $sbni_crc32tab, %%edi\n"
"shrl $2, %%ecx\n"
"jz 1f\n"
@@ -1645,7 +1645,7 @@ calc_crc32( u32 crc, u8 *p, u32 len )
#endif /* ASM_CRC */
-static u32 crc32tab[] __attribute__ ((aligned(8))) = {
+__visible u32 sbni_crc32tab[] __attribute__ ((aligned(8))) = {
0xD202EF8D, 0xA505DF1B, 0x3C0C8EA1, 0x4B0BBE37,
0xD56F2B94, 0xA2681B02, 0x3B614AB8, 0x4C667A2E,
0xDCD967BF, 0xABDE5729, 0x32D70693, 0x45D03605,
diff --git a/drivers/net/wan/sbni.h b/drivers/net/wan/sbni.h
index 8426451..7e6d980 100644
--- a/drivers/net/wan/sbni.h
+++ b/drivers/net/wan/sbni.h
@@ -132,7 +132,7 @@ struct sbni_flags {
/*
* CRC-32 stuff
*/
-#define CRC32(c,crc) (crc32tab[((size_t)(crc) ^ (c)) & 0xff] ^ (((crc) >> 8) & 0x00FFFFFF))
+#define CRC32(c,crc) (sbni_crc32tab[((size_t)(crc) ^ (c)) & 0xff] ^ (((crc) >> 8) & 0x00FFFFFF))
/* CRC generator 0xEDB88320 */
/* CRC remainder 0x2144DF1C */
/* CRC initial value 0x00000000 */
--
1.8.3.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global
2013-10-22 16:12 ` [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global Andi Kleen
@ 2013-10-22 17:59 ` David Miller
2013-10-22 18:36 ` [PATCH] net: wan: sbni: remove assembly crc32 code Sebastian Andrzej Siewior
2013-10-23 2:09 ` [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global Andi Kleen
0 siblings, 2 replies; 10+ messages in thread
From: David Miller @ 2013-10-22 17:59 UTC (permalink / raw)
To: andi; +Cc: akpm, linux-kernel, ak, netdev
From: Andi Kleen <andi@firstfloor.org>
Date: Tue, 22 Oct 2013 09:12:26 -0700
> From: Andi Kleen <ak@linux.intel.com>
>
> - Inline assembler defining C callable code has to be global
> - The function has to be visible
>
> Do this in wan/sbni
>
> Cc: netdev@vger.kernel.org
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
Is it really impossible to use the generic crc32 support instead of this
unsightly custom inline assembler?
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] net: wan: sbni: remove assembly crc32 code
2013-10-22 17:59 ` David Miller
@ 2013-10-22 18:36 ` Sebastian Andrzej Siewior
2013-10-22 18:38 ` David Miller
` (2 more replies)
2013-10-23 2:09 ` [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global Andi Kleen
1 sibling, 3 replies; 10+ messages in thread
From: Sebastian Andrzej Siewior @ 2013-10-22 18:36 UTC (permalink / raw)
To: David Miller; +Cc: andi, akpm, linux-kernel, ak, netdev
There is also a C function doing the same thing. Unless the asm code is
110% faster we could stick to the C function.
Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
---
On Tue, Oct 22, 2013 at 01:59:28PM -0400, David Miller wrote:
>
> Is it really impossible to use the generic crc32 support instead of this
> unsightly custom inline assembler?
Since you asked for this here step 1.
drivers/net/wan/sbni.c | 89 --------------------------------------------------
1 file changed, 89 deletions(-)
diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c
index 5bbcb5e..388ddf6 100644
--- a/drivers/net/wan/sbni.c
+++ b/drivers/net/wan/sbni.c
@@ -148,10 +148,6 @@ static int enslave( struct net_device *, struct net_device * );
static int emancipate( struct net_device * );
#endif
-#ifdef __i386__
-#define ASM_CRC 1
-#endif
-
static const char version[] =
"Granch SBNI12 driver ver 5.0.1 Jun 22 2001 Denis I.Timofeev.\n";
@@ -1551,88 +1547,6 @@ __setup( "sbni=", sbni_setup );
/* -------------------------------------------------------------------------- */
-#ifdef ASM_CRC
-
-static u32
-calc_crc32( u32 crc, u8 *p, u32 len )
-{
- register u32 _crc;
- _crc = crc;
-
- __asm__ __volatile__ (
- "xorl %%ebx, %%ebx\n"
- "movl %2, %%esi\n"
- "movl %3, %%ecx\n"
- "movl $crc32tab, %%edi\n"
- "shrl $2, %%ecx\n"
- "jz 1f\n"
-
- ".align 4\n"
- "0:\n"
- "movb %%al, %%bl\n"
- "movl (%%esi), %%edx\n"
- "shrl $8, %%eax\n"
- "xorb %%dl, %%bl\n"
- "shrl $8, %%edx\n"
- "xorl (%%edi,%%ebx,4), %%eax\n"
-
- "movb %%al, %%bl\n"
- "shrl $8, %%eax\n"
- "xorb %%dl, %%bl\n"
- "shrl $8, %%edx\n"
- "xorl (%%edi,%%ebx,4), %%eax\n"
-
- "movb %%al, %%bl\n"
- "shrl $8, %%eax\n"
- "xorb %%dl, %%bl\n"
- "movb %%dh, %%dl\n"
- "xorl (%%edi,%%ebx,4), %%eax\n"
-
- "movb %%al, %%bl\n"
- "shrl $8, %%eax\n"
- "xorb %%dl, %%bl\n"
- "addl $4, %%esi\n"
- "xorl (%%edi,%%ebx,4), %%eax\n"
-
- "decl %%ecx\n"
- "jnz 0b\n"
-
- "1:\n"
- "movl %3, %%ecx\n"
- "andl $3, %%ecx\n"
- "jz 2f\n"
-
- "movb %%al, %%bl\n"
- "shrl $8, %%eax\n"
- "xorb (%%esi), %%bl\n"
- "xorl (%%edi,%%ebx,4), %%eax\n"
-
- "decl %%ecx\n"
- "jz 2f\n"
-
- "movb %%al, %%bl\n"
- "shrl $8, %%eax\n"
- "xorb 1(%%esi), %%bl\n"
- "xorl (%%edi,%%ebx,4), %%eax\n"
-
- "decl %%ecx\n"
- "jz 2f\n"
-
- "movb %%al, %%bl\n"
- "shrl $8, %%eax\n"
- "xorb 2(%%esi), %%bl\n"
- "xorl (%%edi,%%ebx,4), %%eax\n"
- "2:\n"
- : "=a" (_crc)
- : "0" (_crc), "g" (p), "g" (len)
- : "bx", "cx", "dx", "si", "di"
- );
-
- return _crc;
-}
-
-#else /* ASM_CRC */
-
static u32
calc_crc32( u32 crc, u8 *p, u32 len )
{
@@ -1642,9 +1556,6 @@ calc_crc32( u32 crc, u8 *p, u32 len )
return crc;
}
-#endif /* ASM_CRC */
-
-
static u32 crc32tab[] __attribute__ ((aligned(8))) = {
0xD202EF8D, 0xA505DF1B, 0x3C0C8EA1, 0x4B0BBE37,
0xD56F2B94, 0xA2681B02, 0x3B614AB8, 0x4C667A2E,
--
1.8.4.rc3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] net: wan: sbni: remove assembly crc32 code
2013-10-22 18:36 ` [PATCH] net: wan: sbni: remove assembly crc32 code Sebastian Andrzej Siewior
@ 2013-10-22 18:38 ` David Miller
2013-10-23 2:11 ` Andi Kleen
2013-10-25 23:27 ` David Miller
2 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2013-10-22 18:38 UTC (permalink / raw)
To: sebastian; +Cc: andi, akpm, linux-kernel, ak, netdev
From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Date: Tue, 22 Oct 2013 20:36:25 +0200
>
> There is also a C function doing the same thing. Unless the asm code is
> 110% faster we could stick to the C function.
>
> Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
> ---
>
> On Tue, Oct 22, 2013 at 01:59:28PM -0400, David Miller wrote:
>>
>> Is it really impossible to use the generic crc32 support instead of this
>> unsightly custom inline assembler?
>
> Since you asked for this here step 1.
If it's that simple, this is definitely what we should do.
On the off chance, is there anyone actually able to test this
change? :-)))
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global
2013-10-22 17:59 ` David Miller
2013-10-22 18:36 ` [PATCH] net: wan: sbni: remove assembly crc32 code Sebastian Andrzej Siewior
@ 2013-10-23 2:09 ` Andi Kleen
2013-10-23 2:15 ` Florian Fainelli
1 sibling, 1 reply; 10+ messages in thread
From: Andi Kleen @ 2013-10-23 2:09 UTC (permalink / raw)
To: David Miller; +Cc: andi, akpm, linux-kernel, ak, netdev
On Tue, Oct 22, 2013 at 01:59:28PM -0400, David Miller wrote:
> From: Andi Kleen <andi@firstfloor.org>
> Date: Tue, 22 Oct 2013 09:12:26 -0700
>
> > From: Andi Kleen <ak@linux.intel.com>
> >
> > - Inline assembler defining C callable code has to be global
> > - The function has to be visible
> >
> > Do this in wan/sbni
> >
> > Cc: netdev@vger.kernel.org
> > Signed-off-by: Andi Kleen <ak@linux.intel.com>
>
> Is it really impossible to use the generic crc32 support instead of this
> unsightly custom inline assembler?
Yes it's impossible.
There's no way for me to test it, and this would be a far too big change
to submit untested.
Also my only interest here is this thing not breaking my LTO
allyesconfig build. I'm not even sure what it does.
Just because some legacy driver breaks my build you cannot make me
accountable for maintaining it now.
If it's not possible to get this trivial change in I would need
to mark it "depends on !LTO" in Kconfig.
-Andi
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] net: wan: sbni: remove assembly crc32 code
2013-10-22 18:36 ` [PATCH] net: wan: sbni: remove assembly crc32 code Sebastian Andrzej Siewior
2013-10-22 18:38 ` David Miller
@ 2013-10-23 2:11 ` Andi Kleen
2013-10-25 23:27 ` David Miller
2 siblings, 0 replies; 10+ messages in thread
From: Andi Kleen @ 2013-10-23 2:11 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: David Miller, andi, akpm, linux-kernel, ak, netdev
On Tue, Oct 22, 2013 at 08:36:25PM +0200, Sebastian Andrzej Siewior wrote:
>
> There is also a C function doing the same thing. Unless the asm code is
> 110% faster we could stick to the C function.
I have no idea if it is or not. But doing it this way would be
acceptable for me.
Thanks for the patch.
-Andi
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global
2013-10-23 2:09 ` [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global Andi Kleen
@ 2013-10-23 2:15 ` Florian Fainelli
2013-10-23 2:22 ` Andi Kleen
2013-10-23 6:28 ` Francois Romieu
0 siblings, 2 replies; 10+ messages in thread
From: Florian Fainelli @ 2013-10-23 2:15 UTC (permalink / raw)
To: Andi Kleen
Cc: David Miller, Andrew Morton, linux-kernel@vger.kernel.org, ak,
netdev
2013/10/22 Andi Kleen <andi@firstfloor.org>:
> On Tue, Oct 22, 2013 at 01:59:28PM -0400, David Miller wrote:
>> From: Andi Kleen <andi@firstfloor.org>
>> Date: Tue, 22 Oct 2013 09:12:26 -0700
>>
>> > From: Andi Kleen <ak@linux.intel.com>
>> >
>> > - Inline assembler defining C callable code has to be global
>> > - The function has to be visible
>> >
>> > Do this in wan/sbni
>> >
>> > Cc: netdev@vger.kernel.org
>> > Signed-off-by: Andi Kleen <ak@linux.intel.com>
>>
>> Is it really impossible to use the generic crc32 support instead of this
>> unsightly custom inline assembler?
>
> Yes it's impossible.
>
> There's no way for me to test it, and this would be a far too big change
> to submit untested.
>
> Also my only interest here is this thing not breaking my LTO
> allyesconfig build. I'm not even sure what it does.
>
> Just because some legacy driver breaks my build you cannot make me
> accountable for maintaining it now.
>
> If it's not possible to get this trivial change in I would need
> to mark it "depends on !LTO" in Kconfig.
How about scheduling the WAN drivers for removal? Does anybody
actually use them nowadays?
--
Florian
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global
2013-10-23 2:15 ` Florian Fainelli
@ 2013-10-23 2:22 ` Andi Kleen
2013-10-23 6:28 ` Francois Romieu
1 sibling, 0 replies; 10+ messages in thread
From: Andi Kleen @ 2013-10-23 2:22 UTC (permalink / raw)
To: Florian Fainelli
Cc: Andi Kleen, David Miller, Andrew Morton,
linux-kernel@vger.kernel.org, ak, netdev
> How about scheduling the WAN drivers for removal? Does anybody
> actually use them nowadays?
Perhaps at least the ISA devices? ISA hardware should be nearing
end of live by now.
Looking at the git log there doesn't seem to be any real changes,
other than tree sweeps or build fixes.
But I must admit I don't really know much about them.
-Andi
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global
2013-10-23 2:15 ` Florian Fainelli
2013-10-23 2:22 ` Andi Kleen
@ 2013-10-23 6:28 ` Francois Romieu
1 sibling, 0 replies; 10+ messages in thread
From: Francois Romieu @ 2013-10-23 6:28 UTC (permalink / raw)
To: Florian Fainelli
Cc: Andi Kleen, David Miller, Andrew Morton,
linux-kernel@vger.kernel.org, ak, netdev, Christophe Leroy
Florian Fainelli <f.fainelli@gmail.com> :
[...]
> How about scheduling the WAN drivers for removal? Does anybody
> actually use them nowadays?
There is still some interest in WAN drivers, see Christophe Leroy
posting on 2013/10/13 "[PATCH] WAN: Adding support for Infineon PEF2256
E1 chipset" (buggy but it's a different topic).
--
Ueimor
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] net: wan: sbni: remove assembly crc32 code
2013-10-22 18:36 ` [PATCH] net: wan: sbni: remove assembly crc32 code Sebastian Andrzej Siewior
2013-10-22 18:38 ` David Miller
2013-10-23 2:11 ` Andi Kleen
@ 2013-10-25 23:27 ` David Miller
2 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2013-10-25 23:27 UTC (permalink / raw)
To: sebastian; +Cc: andi, akpm, linux-kernel, ak, netdev
From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Date: Tue, 22 Oct 2013 20:36:25 +0200
> There is also a C function doing the same thing. Unless the asm code is
> 110% faster we could stick to the C function.
>
> Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Applied.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-10-25 23:27 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1382458346-24811-1-git-send-email-andi@firstfloor.org>
2013-10-22 16:12 ` [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global Andi Kleen
2013-10-22 17:59 ` David Miller
2013-10-22 18:36 ` [PATCH] net: wan: sbni: remove assembly crc32 code Sebastian Andrzej Siewior
2013-10-22 18:38 ` David Miller
2013-10-23 2:11 ` Andi Kleen
2013-10-25 23:27 ` David Miller
2013-10-23 2:09 ` [PATCH 11/11] asmlinkage, wan/sbni: Make inline assembler symbols visible and assembler global Andi Kleen
2013-10-23 2:15 ` Florian Fainelli
2013-10-23 2:22 ` Andi Kleen
2013-10-23 6:28 ` Francois Romieu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).