1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
Delivered-To: jwboyer@gmail.com
Received: by 10.216.166.129 with SMTP id g1csp52986wel;
Sat, 7 Sep 2013 07:21:20 -0700 (PDT)
X-Received: by 10.50.26.36 with SMTP id i4mr2187231igg.33.1378563679768;
Sat, 07 Sep 2013 07:21:19 -0700 (PDT)
Return-Path: <ard.biesheuvel@linaro.org>
Received: from bastion.fedoraproject.org (bastion02.fedoraproject.org. [209.132.181.3])
by mx.google.com with ESMTP id mc6si3756304icc.53.1969.12.31.16.00.00;
Sat, 07 Sep 2013 07:21:19 -0700 (PDT)
Received-SPF: neutral (google.com: 209.132.181.3 is neither permitted nor denied by best guess record for domain of ard.biesheuvel@linaro.org) client-ip=209.132.181.3;
Authentication-Results: mx.google.com;
spf=neutral (google.com: 209.132.181.3 is neither permitted nor denied by best guess record for domain of ard.biesheuvel@linaro.org) smtp.mail=ard.biesheuvel@linaro.org
Received: by bastion02.phx2.fedoraproject.org (Postfix)
id EE3EB40737; Sat, 7 Sep 2013 14:21:18 +0000 (UTC)
Delivered-To: jwboyer@fedoraproject.org
Received: from mx1.redhat.com (ext-mx16.extmail.prod.ext.phx2.redhat.com [10.5.110.21])
by bastion02.phx2.fedoraproject.org (Postfix) with ESMTP id D80244052F
for <jwboyer@fedoraproject.org>; Sat, 7 Sep 2013 14:21:18 +0000 (UTC)
Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175])
by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r87ELGCQ021393
for <jwboyer@fedoraproject.org>; Sat, 7 Sep 2013 10:21:17 -0400
Received: by mail-wi0-f175.google.com with SMTP id ez12so1920603wid.14
for <jwboyer@fedoraproject.org>; Sat, 07 Sep 2013 07:21:16 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20130820;
h=x-gm-message-state:from:to:cc:subject:date:message-id;
bh=8NEw4B1Nab9xiONGFPVLOs/nT1KunUfaacstB7/m/No=;
b=DB/Eo8aD3MRNKvlw+eoioLLb0CGNH/AiibPqiInWEpiU7eNwGiVjkPnJVaqT2DiH0Z
bkL4pFXThRYvpeeJ1Qind76YdsYxX1wcqqYqASAk6m/a+623LbEnilGsC85+8sW10fbk
xeFhNZCAGQ4uROVe034V2mfoXadXiHGfB5FPzI49QJ9tzHDDWlW/q+YHVvYjtxYfJxjm
Joeciq+LG04AvYeZ3+I0XOHoSuaD8BNthivxr9IFPyUqxfA7OK8B4DG0YptbXzErpntI
1zEY5YFmR6fATLo/6RItgWle0OGD+zhqYJYPw3S56z/1JN4aJWnPII53w1sIezgFzcMv
WWLQ==
X-Gm-Message-State: ALoCoQmWJcKQMJ6xt5DORrctGdw5Yt5RzFKGNaHdcTwAevLxBc5Js9+qvziWRVYvjeGY2VutWSrU
X-Received: by 10.180.211.206 with SMTP id ne14mr2342383wic.30.1378563676626;
Sat, 07 Sep 2013 07:21:16 -0700 (PDT)
Received: from localhost.localdomain (cag06-7-83-153-85-71.fbx.proxad.net. [83.153.85.71])
by mx.google.com with ESMTPSA id ey2sm3980324wib.5.1969.12.31.16.00.00
(version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
Sat, 07 Sep 2013 07:21:16 -0700 (PDT)
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: linux-arm-kernel@lists.infradead.org
Cc: linux@arm.linux.org.uk, nico@linaro.org, jwboyer@fedoraproject.org,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: [PATCH] ARM: fix modular build of xor_blocks() with NEON enabled
Date: Sat, 7 Sep 2013 16:21:13 +0200
Message-Id: <1378563673-10637-1-git-send-email-ard.biesheuvel@linaro.org>
X-Mailer: git-send-email 1.8.1.2
X-RedHat-Spam-Score: -2.999 (BAYES_00,DCC_REPUT_00_12,RCVD_IN_DNSWL_LOW,URIBL_BLOCKED)
X-Scanned-By: MIMEDefang 2.68 on 10.5.110.21
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@fedoraproject.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
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)
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
|