Re: [PATCH v3 4/9] crypto/ycc: Add device error handling support for ycc hw errors

kernel test robot
2022-10-25T14:26:02Z

[-- Attachment #1: Type: text/plain, Size: 5160 bytes --]

Hi 'Guanjun',

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on herbert-cryptodev-2.6/master]
[also build test WARNING on herbert-crypto-2.6/master linus/master v6.1-rc2 next-20221025]
[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#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Guanjun/Drivers-for-Alibaba-YCC-Yitian-Cryptography-Complex-cryptographic-accelerator/20221025-180005
base: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git master
patch link: https://lore.kernel.org/r/1666691616-69983-5-git-send-email-guanjun%40linux.alibaba.com
patch subject: [PATCH v3 4/9] crypto/ycc: Add device error handling support for ycc hw errors
config: sparc-allyesconfig (attached as .config)
compiler: sparc64-linux-gcc (GCC) 12.1.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/intel-lab-lkp/linux/commit/944c3c90dbd0017bbe59ea4ae5cfe2fb01f13a0e
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Guanjun/Drivers-for-Alibaba-YCC-Yitian-Cryptography-Complex-cryptographic-accelerator/20221025-180005
git checkout 944c3c90dbd0017bbe59ea4ae5cfe2fb01f13a0e
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sparc SHELL=/bin/bash drivers/crypto/ycc/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

drivers/crypto/ycc/ycc_ring.c:536:6: warning: no previous prototype for 'ycc_handle_resp' [-Wmissing-prototypes]
536 | void ycc_handle_resp(struct ycc_ring *ring, struct ycc_resp_desc *desc)
| ^~~~~~~~~~~~~~~
>> drivers/crypto/ycc/ycc_ring.c:588:6: warning: no previous prototype for 'ycc_clear_cmd_ring' [-Wmissing-prototypes]
588 | void ycc_clear_cmd_ring(struct ycc_ring *ring)
| ^~~~~~~~~~~~~~~~~~
>> drivers/crypto/ycc/ycc_ring.c:613:6: warning: no previous prototype for 'ycc_clear_resp_ring' [-Wmissing-prototypes]
613 | void ycc_clear_resp_ring(struct ycc_ring *ring)
| ^~~~~~~~~~~~~~~~~~~

vim +/ycc_clear_cmd_ring +588 drivers/crypto/ycc/ycc_ring.c

535
> 536 void ycc_handle_resp(struct ycc_ring *ring, struct ycc_resp_desc *desc)
537 {
538 struct ycc_flags *aflag;
539
540 dma_rmb();
541
542 aflag = (struct ycc_flags *)desc->private_ptr;
543 if (!aflag || (u64)aflag == CMD_INVALID_CONTENT_U64) {
544 pr_debug("Invalid command aflag\n");
545 return;
546 }
547
548 ycc_check_cmd_state(desc->state);
549 aflag->ycc_done_callback(aflag->ptr, desc->state);
550
551 memset(desc, CMD_INVALID_CONTENT_U8, sizeof(*desc));
552 kfree(aflag);
553 }
554
555 /*
556 * dequeue, read response descriptor
557 */
558 void ycc_dequeue(struct ycc_ring *ring)
559 {
560 struct ycc_resp_desc *resp;
561 int cnt = 0;
562
563 if (!test_bit(YDEV_STATUS_READY, &ring->ydev->status) || ycc_ring_stopped(ring))
564 return;
565
566 ring->resp_wr_ptr = YCC_CSR_RD(ring->csr_vaddr, REG_RING_RSP_WR_PTR);
567 while (!ycc_ring_empty(ring)) {
568 resp = (struct ycc_resp_desc *)ring->resp_base_vaddr +
569 ring->resp_rd_ptr;
570 ycc_handle_resp(ring, resp);
571
572 cnt++;
573 ring->nr_resps++;
574 if (++ring->resp_rd_ptr == ring->max_desc)
575 ring->resp_rd_ptr = 0;
576 }
577
578 if (cnt)
579 YCC_CSR_WR(ring->csr_vaddr, REG_RING_RSP_RD_PTR, ring->resp_rd_ptr);
580 }
581
582 /*
583 * Clear incompletion cmds in command queue while rollback cmd_wr_ptr.
584 *
585 * Note: Make sure been invoked when error occurs in YCC internal and
586 * YCC status is not ready.
587 */
> 588 void ycc_clear_cmd_ring(struct ycc_ring *ring)
589 {
590 struct ycc_cmd_desc *desc = NULL;
591
592 ring->cmd_rd_ptr = YCC_CSR_RD(ring->csr_vaddr, REG_RING_CMD_RD_PTR);
593 ring->cmd_wr_ptr = YCC_CSR_RD(ring->csr_vaddr, REG_RING_CMD_WR_PTR);
594
595 while (ring->cmd_rd_ptr != ring->cmd_wr_ptr) {
596 desc = (struct ycc_cmd_desc *)ring->cmd_base_vaddr +
597 ring->cmd_rd_ptr;
598 ycc_cancel_cmd(ring, desc);
599
600 if (--ring->cmd_wr_ptr == 0)
601 ring->cmd_wr_ptr = ring->max_desc;
602 }
603
604 YCC_CSR_WR(ring->csr_vaddr, REG_RING_CMD_WR_PTR, ring->cmd_wr_ptr);
605 }
606
607 /*
608 * Clear response queue
609 *
610 * Note: Make sure been invoked when error occurs in YCC internal and
611 * YCC status is not ready.
612 */
> 613 void ycc_clear_resp_ring(struct ycc_ring *ring)

--
0-DAY CI Kernel Test Service
https://01.org/lkp

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 74649 bytes --]