[PATCH] ARM: fix modular build of xor_blocks() with NEON enabled

Ard Biesheuvel ard.biesheuvel at linaro.org
Sun Sep 8 03:40:22 EDT 2013


On 7 September 2013 17:02, Josh Boyer <jwboyer at fedoraproject.org> wrote:
> On Sat, Sep 7, 2013 at 10:21 AM, Ard Biesheuvel
> <ard.biesheuvel at linaro.org> wrote:
>> Commit 0195659 introduced a NEON accelerated version of the xor_blocks()
>> function, but it needs the changes in this patch to allow it to be built
>> as a module rather than statically into the kernel.
>>
>> This patch creates a separate module xor-neon.ko which exports the NEON
>> inner xor_blocks() functions depended upon by the regular xor.ko if it
>> is built with CONFIG_KERNEL_MODE_NEON=y
>>
>> Reported-by: Josh Boyer <jwboyer at fedoraproject.org>
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
>
> Tested-by: Josh Boyer <jwboyer at fedoraproject.org>
>
> This let the config we have build successfully.  Thanks for the quick
> turn around!
>

No problem

>> ---
>>  arch/arm/lib/Makefile   | 4 +++-
>>  arch/arm/lib/xor-neon.c | 4 ++++
>>  2 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
>> index aaf3a87..6bc2bd3 100644
>> --- a/arch/arm/lib/Makefile
>> +++ b/arch/arm/lib/Makefile
>> @@ -49,5 +49,7 @@ $(obj)/csumpartialcopyuser.o: $(obj)/csumpartialcopygeneric.S
>>  ifeq ($(CONFIG_KERNEL_MODE_NEON),y)
>>    NEON_FLAGS                   := -mfloat-abi=softfp -mfpu=neon
>>    CFLAGS_xor-neon.o            += $(NEON_FLAGS)
>> -  lib-$(CONFIG_XOR_BLOCKS)     += xor-neon.o
>> +  xor-neon-$(CONFIG_XOR_BLOCKS)        := xor-neon.o
>> +  lib-y                                += $(xor-neon-y)
>> +  obj-m                                += $(xor-neon-m)

Just doing

obj-$(CONFIG_XOR_BLOCKS)        += xor-neon.o

is probably better, so if nobody objects, I will update the patch
accordingly and put it in the patch tracker.

Regards,
Ard.




>>  endif
>> diff --git a/arch/arm/lib/xor-neon.c b/arch/arm/lib/xor-neon.c
>> index f485e5a..2c40aea 100644
>> --- a/arch/arm/lib/xor-neon.c
>> +++ b/arch/arm/lib/xor-neon.c
>> @@ -9,6 +9,9 @@
>>   */
>>
>>  #include <linux/raid/xor.h>
>> +#include <linux/module.h>
>> +
>> +MODULE_LICENSE("GPL");
>>
>>  #ifndef __ARM_NEON__
>>  #error You should compile this file with '-mfloat-abi=softfp -mfpu=neon'
>> @@ -40,3 +43,4 @@ struct xor_block_template const xor_block_neon_inner = {
>>         .do_4   = xor_8regs_4,
>>         .do_5   = xor_8regs_5,
>>  };
>> +EXPORT_SYMBOL(xor_block_neon_inner);
>> --
>> 1.8.1.2
>>



More information about the linux-arm-kernel mailing list