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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]
  Powered by Linux