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@xxxxxxxxx> 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:
.config.gz
Description: application/gzip