From: kernel test robot <lkp@intel.com>
To: Richard van Schagen <vschagen@icloud.com>,
herbert@gondor.apana.org.au, davem@davemloft.net,
matthias.bgg@gmail.com
Cc: kbuild-all@lists.01.org, linux-crypto@vger.kernel.org,
Richard van Schagen <vschagen@icloud.com>
Subject: Re: [PATCH 2/2] crypto: mtk-eip93 - Add Mediatek EIP-93 crypto engine
Date: Wed, 27 Oct 2021 09:51:26 +0800 [thread overview]
Message-ID: <202110270948.oTLPXzXW-lkp@intel.com> (raw)
In-Reply-To: <20211025094725.2282336-3-vschagen@icloud.com>
[-- Attachment #1: Type: text/plain, Size: 8299 bytes --]
Hi Richard,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on herbert-cryptodev-2.6/master]
[also build test ERROR on herbert-crypto-2.6/master v5.15-rc7 next-20211026]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Richard-van-Schagen/Enable-the-Mediatek-EIP-93-crypto-engine/20211025-175520
base: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git master
config: nios2-allyesconfig (attached as .config)
compiler: nios2-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/837eaffbc258885acfac24a243519105d3ea21ca
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Richard-van-Schagen/Enable-the-Mediatek-EIP-93-crypto-engine/20211025-175520
git checkout 837eaffbc258885acfac24a243519105d3ea21ca
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=nios2
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/crypto/mtk-eip93/eip93-main.c:124:6: error: no previous prototype for 'mtk_handle_result_descriptor' [-Werror=missing-prototypes]
124 | void mtk_handle_result_descriptor(struct mtk_device *mtk)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/crypto/mtk-eip93/eip93-main.c: In function 'mtk_handle_result_descriptor':
>> drivers/crypto/mtk-eip93/eip93-main.c:128:26: error: variable 'complete' set but not used [-Werror=unused-but-set-variable]
128 | bool last_entry, complete;
| ^~~~~~~~
drivers/crypto/mtk-eip93/eip93-main.c: At top level:
>> drivers/crypto/mtk-eip93/eip93-main.c:221:6: error: no previous prototype for 'mtk_initialize' [-Werror=missing-prototypes]
221 | void mtk_initialize(struct mtk_device *mtk)
| ^~~~~~~~~~~~~~
drivers/crypto/mtk-eip93/eip93-main.c:438:34: error: array type has incomplete element type 'struct of_device_id'
438 | static const struct of_device_id mtk_crypto_of_match[] = {
| ^~~~~~~~~~~~~~~~~~~
>> drivers/crypto/mtk-eip93/eip93-main.c:438:34: error: 'mtk_crypto_of_match' defined but not used [-Werror=unused-variable]
cc1: all warnings being treated as errors
--
>> drivers/crypto/mtk-eip93/eip93-aead.c:16:10: fatal error: crypto/sha.h: No such file or directory
16 | #include <crypto/sha.h>
| ^~~~~~~~~~~~~~
compilation terminated.
vim +/mtk_handle_result_descriptor +124 drivers/crypto/mtk-eip93/eip93-main.c
123
> 124 void mtk_handle_result_descriptor(struct mtk_device *mtk)
125 {
126 struct crypto_async_request *async = NULL;
127 struct eip93_descriptor_s *rdesc;
> 128 bool last_entry, complete;
129 u32 flags;
130 int handled, ready;
131 int err = 0;
132 union peCrtlStat_w done1;
133 union peLength_w done2;
134
135 get_more:
136 handled = 0;
137
138 ready = readl(mtk->base + EIP93_REG_PE_RD_COUNT) & GENMASK(10, 0);
139
140 if (!ready) {
141 mtk_irq_clear(mtk, EIP93_INT_PE_RDRTHRESH_REQ);
142 mtk_irq_enable(mtk, EIP93_INT_PE_RDRTHRESH_REQ);
143 return;
144 }
145
146 last_entry = false;
147 complete = false;
148
149 while (ready) {
150 rdesc = mtk_get_descriptor(mtk);
151 if (IS_ERR(rdesc)) {
152 dev_err(mtk->dev, "Ndesc: %d nreq: %d\n",
153 handled, ready);
154 err = -EIO;
155 break;
156 }
157 /* make sure DMA is finished writing */
158 do {
159 done1.word = READ_ONCE(rdesc->peCrtlStat.word);
160 done2.word = READ_ONCE(rdesc->peLength.word);
161 } while ((!done1.bits.peReady) || (!done2.bits.peReady));
162
163 err = rdesc->peCrtlStat.bits.errStatus;
164
165 flags = rdesc->userId;
166 async = (struct crypto_async_request *)rdesc->arc4Addr;
167
168 writel(1, mtk->base + EIP93_REG_PE_RD_COUNT);
169 mtk_irq_clear(mtk, EIP93_INT_PE_RDRTHRESH_REQ);
170
171 handled++;
172 ready--;
173
174 if (flags & MTK_DESC_LAST) {
175 last_entry = true;
176 break;
177 }
178 }
179
180 if (!last_entry)
181 goto get_more;
182 #ifdef CONFIG_CRYPTO_DEV_EIP93_SKCIPHER
183 if (flags & MTK_DESC_SKCIPHER)
184 mtk_skcipher_handle_result(mtk, async, err);
185 #endif
186 #ifdef CONFIG_CRYPTO_DEV_EIP93_AEAD
187 if (flags & MTK_DESC_AEAD)
188 mtk_aead_handle_result(mtk, async, err);
189 #endif
190 goto get_more;
191 }
192
193 static void mtk_done_task(unsigned long data)
194 {
195 struct mtk_device *mtk = (struct mtk_device *)data;
196
197 mtk_handle_result_descriptor(mtk);
198 }
199
200 static irqreturn_t mtk_irq_handler(int irq, void *dev_id)
201 {
202 struct mtk_device *mtk = (struct mtk_device *)dev_id;
203 u32 irq_status;
204
205 irq_status = readl(mtk->base + EIP93_REG_INT_MASK_STAT);
206
207 if (irq_status & EIP93_INT_PE_RDRTHRESH_REQ) {
208 mtk_irq_disable(mtk, EIP93_INT_PE_RDRTHRESH_REQ);
209 tasklet_schedule(&mtk->ring->done_task);
210 return IRQ_HANDLED;
211 }
212
213 /* TODO: error handler; for now just clear ALL */
214 mtk_irq_clear(mtk, irq_status);
215 if (irq_status)
216 mtk_irq_disable(mtk, irq_status);
217
218 return IRQ_NONE;
219 }
220
> 221 void mtk_initialize(struct mtk_device *mtk)
222 {
223 union peConfig_w peConfig;
224 union peEndianCfg_w peEndianCfg;
225 union peIntCfg_w peIntCfg;
226 union peClockCfg_w peClockCfg;
227 union peBufThresh_w peBufThresh;
228 union peRingThresh_w peRingThresh;
229
230 /* Reset Engine and setup Mode */
231 peConfig.word = 0;
232 peConfig.bits.resetPE = 1;
233 peConfig.bits.resetRing = 1;
234 peConfig.bits.peMode = 3;
235 peConfig.bits.enCDRupdate = 1;
236
237 writel(peConfig.word, mtk->base + EIP93_REG_PE_CONFIG);
238
239 udelay(10);
240
241 peConfig.bits.resetPE = 0;
242 peConfig.bits.resetRing = 0;
243
244 writel(peConfig.word, mtk->base + EIP93_REG_PE_CONFIG);
245
246 /* Initialize the BYTE_ORDER_CFG register */
247 peEndianCfg.word = 0;
248 writel(peEndianCfg.word, mtk->base + EIP93_REG_PE_ENDIAN_CONFIG);
249
250 /* Initialize the INT_CFG register */
251 peIntCfg.word = 0;
252 writel(peIntCfg.word, mtk->base + EIP93_REG_INT_CFG);
253
254 /* Config Clocks */
255 peClockCfg.word = 0;
256 peClockCfg.bits.enPEclk = 1;
257 #ifdef CONFIG_CRYPTO_DEV_EIP93_DES
258 peClockCfg.bits.enDESclk = 1;
259 #endif
260 #ifdef CONFIG_CRYPTO_DEV_EIP93_AES
261 peClockCfg.bits.enAESclk = 1;
262 #endif
263 #ifdef CONFIG_CRYPTO_DEV_EIP93_HMAC
264 peClockCfg.bits.enHASHclk = 1;
265 #endif
266 writel(peClockCfg.word, mtk->base + EIP93_REG_PE_CLOCK_CTRL);
267
268 /* Config DMA thresholds */
269 peBufThresh.word = 0;
270 peBufThresh.bits.inputBuffer = 128;
271 peBufThresh.bits.outputBuffer = 128;
272
273 writel(peBufThresh.word, mtk->base + EIP93_REG_PE_BUF_THRESH);
274
275 /* Clear/ack all interrupts before disable all */
276 mtk_irq_clear(mtk, 0xFFFFFFFF);
277 mtk_irq_disable(mtk, 0xFFFFFFFF);
278
279 /* Config Ring Threshold */
280 peRingThresh.word = 0;
281 peRingThresh.bits.CDRThresh = MTK_RING_SIZE - MTK_RING_BUSY;
282 peRingThresh.bits.RDRThresh = 1;
283 peRingThresh.bits.RDTimeout = 5;
284 peRingThresh.bits.enTimeout = 1;
285
286 writel(peRingThresh.word, mtk->base + EIP93_REG_PE_RING_THRESH);
287 }
288
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 60830 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 2/2] crypto: mtk-eip93 - Add Mediatek EIP-93 crypto engine
Date: Wed, 27 Oct 2021 09:51:26 +0800 [thread overview]
Message-ID: <202110270948.oTLPXzXW-lkp@intel.com> (raw)
In-Reply-To: <20211025094725.2282336-3-vschagen@icloud.com>
[-- Attachment #1: Type: text/plain, Size: 8525 bytes --]
Hi Richard,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on herbert-cryptodev-2.6/master]
[also build test ERROR on herbert-crypto-2.6/master v5.15-rc7 next-20211026]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Richard-van-Schagen/Enable-the-Mediatek-EIP-93-crypto-engine/20211025-175520
base: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git master
config: nios2-allyesconfig (attached as .config)
compiler: nios2-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/837eaffbc258885acfac24a243519105d3ea21ca
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Richard-van-Schagen/Enable-the-Mediatek-EIP-93-crypto-engine/20211025-175520
git checkout 837eaffbc258885acfac24a243519105d3ea21ca
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=nios2
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/crypto/mtk-eip93/eip93-main.c:124:6: error: no previous prototype for 'mtk_handle_result_descriptor' [-Werror=missing-prototypes]
124 | void mtk_handle_result_descriptor(struct mtk_device *mtk)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/crypto/mtk-eip93/eip93-main.c: In function 'mtk_handle_result_descriptor':
>> drivers/crypto/mtk-eip93/eip93-main.c:128:26: error: variable 'complete' set but not used [-Werror=unused-but-set-variable]
128 | bool last_entry, complete;
| ^~~~~~~~
drivers/crypto/mtk-eip93/eip93-main.c: At top level:
>> drivers/crypto/mtk-eip93/eip93-main.c:221:6: error: no previous prototype for 'mtk_initialize' [-Werror=missing-prototypes]
221 | void mtk_initialize(struct mtk_device *mtk)
| ^~~~~~~~~~~~~~
drivers/crypto/mtk-eip93/eip93-main.c:438:34: error: array type has incomplete element type 'struct of_device_id'
438 | static const struct of_device_id mtk_crypto_of_match[] = {
| ^~~~~~~~~~~~~~~~~~~
>> drivers/crypto/mtk-eip93/eip93-main.c:438:34: error: 'mtk_crypto_of_match' defined but not used [-Werror=unused-variable]
cc1: all warnings being treated as errors
--
>> drivers/crypto/mtk-eip93/eip93-aead.c:16:10: fatal error: crypto/sha.h: No such file or directory
16 | #include <crypto/sha.h>
| ^~~~~~~~~~~~~~
compilation terminated.
vim +/mtk_handle_result_descriptor +124 drivers/crypto/mtk-eip93/eip93-main.c
123
> 124 void mtk_handle_result_descriptor(struct mtk_device *mtk)
125 {
126 struct crypto_async_request *async = NULL;
127 struct eip93_descriptor_s *rdesc;
> 128 bool last_entry, complete;
129 u32 flags;
130 int handled, ready;
131 int err = 0;
132 union peCrtlStat_w done1;
133 union peLength_w done2;
134
135 get_more:
136 handled = 0;
137
138 ready = readl(mtk->base + EIP93_REG_PE_RD_COUNT) & GENMASK(10, 0);
139
140 if (!ready) {
141 mtk_irq_clear(mtk, EIP93_INT_PE_RDRTHRESH_REQ);
142 mtk_irq_enable(mtk, EIP93_INT_PE_RDRTHRESH_REQ);
143 return;
144 }
145
146 last_entry = false;
147 complete = false;
148
149 while (ready) {
150 rdesc = mtk_get_descriptor(mtk);
151 if (IS_ERR(rdesc)) {
152 dev_err(mtk->dev, "Ndesc: %d nreq: %d\n",
153 handled, ready);
154 err = -EIO;
155 break;
156 }
157 /* make sure DMA is finished writing */
158 do {
159 done1.word = READ_ONCE(rdesc->peCrtlStat.word);
160 done2.word = READ_ONCE(rdesc->peLength.word);
161 } while ((!done1.bits.peReady) || (!done2.bits.peReady));
162
163 err = rdesc->peCrtlStat.bits.errStatus;
164
165 flags = rdesc->userId;
166 async = (struct crypto_async_request *)rdesc->arc4Addr;
167
168 writel(1, mtk->base + EIP93_REG_PE_RD_COUNT);
169 mtk_irq_clear(mtk, EIP93_INT_PE_RDRTHRESH_REQ);
170
171 handled++;
172 ready--;
173
174 if (flags & MTK_DESC_LAST) {
175 last_entry = true;
176 break;
177 }
178 }
179
180 if (!last_entry)
181 goto get_more;
182 #ifdef CONFIG_CRYPTO_DEV_EIP93_SKCIPHER
183 if (flags & MTK_DESC_SKCIPHER)
184 mtk_skcipher_handle_result(mtk, async, err);
185 #endif
186 #ifdef CONFIG_CRYPTO_DEV_EIP93_AEAD
187 if (flags & MTK_DESC_AEAD)
188 mtk_aead_handle_result(mtk, async, err);
189 #endif
190 goto get_more;
191 }
192
193 static void mtk_done_task(unsigned long data)
194 {
195 struct mtk_device *mtk = (struct mtk_device *)data;
196
197 mtk_handle_result_descriptor(mtk);
198 }
199
200 static irqreturn_t mtk_irq_handler(int irq, void *dev_id)
201 {
202 struct mtk_device *mtk = (struct mtk_device *)dev_id;
203 u32 irq_status;
204
205 irq_status = readl(mtk->base + EIP93_REG_INT_MASK_STAT);
206
207 if (irq_status & EIP93_INT_PE_RDRTHRESH_REQ) {
208 mtk_irq_disable(mtk, EIP93_INT_PE_RDRTHRESH_REQ);
209 tasklet_schedule(&mtk->ring->done_task);
210 return IRQ_HANDLED;
211 }
212
213 /* TODO: error handler; for now just clear ALL */
214 mtk_irq_clear(mtk, irq_status);
215 if (irq_status)
216 mtk_irq_disable(mtk, irq_status);
217
218 return IRQ_NONE;
219 }
220
> 221 void mtk_initialize(struct mtk_device *mtk)
222 {
223 union peConfig_w peConfig;
224 union peEndianCfg_w peEndianCfg;
225 union peIntCfg_w peIntCfg;
226 union peClockCfg_w peClockCfg;
227 union peBufThresh_w peBufThresh;
228 union peRingThresh_w peRingThresh;
229
230 /* Reset Engine and setup Mode */
231 peConfig.word = 0;
232 peConfig.bits.resetPE = 1;
233 peConfig.bits.resetRing = 1;
234 peConfig.bits.peMode = 3;
235 peConfig.bits.enCDRupdate = 1;
236
237 writel(peConfig.word, mtk->base + EIP93_REG_PE_CONFIG);
238
239 udelay(10);
240
241 peConfig.bits.resetPE = 0;
242 peConfig.bits.resetRing = 0;
243
244 writel(peConfig.word, mtk->base + EIP93_REG_PE_CONFIG);
245
246 /* Initialize the BYTE_ORDER_CFG register */
247 peEndianCfg.word = 0;
248 writel(peEndianCfg.word, mtk->base + EIP93_REG_PE_ENDIAN_CONFIG);
249
250 /* Initialize the INT_CFG register */
251 peIntCfg.word = 0;
252 writel(peIntCfg.word, mtk->base + EIP93_REG_INT_CFG);
253
254 /* Config Clocks */
255 peClockCfg.word = 0;
256 peClockCfg.bits.enPEclk = 1;
257 #ifdef CONFIG_CRYPTO_DEV_EIP93_DES
258 peClockCfg.bits.enDESclk = 1;
259 #endif
260 #ifdef CONFIG_CRYPTO_DEV_EIP93_AES
261 peClockCfg.bits.enAESclk = 1;
262 #endif
263 #ifdef CONFIG_CRYPTO_DEV_EIP93_HMAC
264 peClockCfg.bits.enHASHclk = 1;
265 #endif
266 writel(peClockCfg.word, mtk->base + EIP93_REG_PE_CLOCK_CTRL);
267
268 /* Config DMA thresholds */
269 peBufThresh.word = 0;
270 peBufThresh.bits.inputBuffer = 128;
271 peBufThresh.bits.outputBuffer = 128;
272
273 writel(peBufThresh.word, mtk->base + EIP93_REG_PE_BUF_THRESH);
274
275 /* Clear/ack all interrupts before disable all */
276 mtk_irq_clear(mtk, 0xFFFFFFFF);
277 mtk_irq_disable(mtk, 0xFFFFFFFF);
278
279 /* Config Ring Threshold */
280 peRingThresh.word = 0;
281 peRingThresh.bits.CDRThresh = MTK_RING_SIZE - MTK_RING_BUSY;
282 peRingThresh.bits.RDRThresh = 1;
283 peRingThresh.bits.RDTimeout = 5;
284 peRingThresh.bits.enTimeout = 1;
285
286 writel(peRingThresh.word, mtk->base + EIP93_REG_PE_RING_THRESH);
287 }
288
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 60830 bytes --]
next prev parent reply other threads:[~2021-10-27 1:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-25 9:47 [PATCH 0/2] Enable the Mediatek EIP-93 crypto engine Richard van Schagen
2021-10-25 9:47 ` [PATCH 1/2] dt-bindings: crypto: Add " Richard van Schagen
2021-10-26 22:03 ` kernel test robot
2021-10-26 22:03 ` kernel test robot
2021-10-25 9:47 ` [PATCH 2/2] crypto: mtk-eip93 - " Richard van Schagen
2021-10-27 1:51 ` kernel test robot [this message]
2021-10-27 1:51 ` kernel test robot
2021-10-27 4:46 ` kernel test robot
2021-10-27 4:46 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202110270948.oTLPXzXW-lkp@intel.com \
--to=lkp@intel.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=kbuild-all@lists.01.org \
--cc=linux-crypto@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=vschagen@icloud.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.