Hi Corentin,

I love your patch! Perhaps something to improve:

[auto build test WARNING on sunxi/sunxi/for-next]
[also build test WARNING on cryptodev/master crypto/master v5.8-rc2]
[cannot apply to next-20200621]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Corentin-Labbe/crypto-allwinner-add-xRNG-and-hashes/20200622-033401
base:   https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git 
sunxi/for-next
config: x86_64-allyesconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
ef455a55bcf2cfea04a99c361b182ad18b7f03f1)
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
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All warnings (new ones prefixed by >>, old ones prefixed by <<):

>> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c:22:5: warning: no previous 
>> prototype for function 'sun8i_ce_trng_read' [-Wmissing-prototypes]
int sun8i_ce_trng_read(struct hwrng *rng, void *data, size_t max, bool wait)
^
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c:22:1: note: declare 'static' 
if the function is not intended to be used outside of this translation unit
int sun8i_ce_trng_read(struct hwrng *rng, void *data, size_t max, bool wait)
^
static
>> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c:105:24: warning: result of 
>> comparison of constant 255 with expression of type 'const char' is always 
>> false [-Wtautological-constant-out-of-range-compare]
if (ce->variant->trng == CE_ID_NOTSUPP) {
~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c:121:24: warning: result of 
comparison of constant 255 with expression of type 'const char' is always false 
[-Wtautological-constant-out-of-range-compare]
if (ce->variant->trng == CE_ID_NOTSUPP)
~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~
3 warnings generated.

vim +/sun8i_ce_trng_read +22 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c

  > 22  int sun8i_ce_trng_read(struct hwrng *rng, void *data, size_t max, bool 
wait)
    23  {
    24          struct sun8i_ce_dev *ce;
    25          dma_addr_t dma_dst;
    26          int err = 0;
    27          int flow = 3;
    28          unsigned int todo;
    29          struct sun8i_ce_flow *chan;
    30          struct ce_task *cet;
    31          u32 common;
    32          void *d;
    33  
    34          ce = container_of(rng, struct sun8i_ce_dev, trng);
    35  
    36          /* round the data length to a multiple of 32*/
    37          todo = max + 32;
    38          todo -= todo % 32;
    39  
    40          d = kzalloc(todo, GFP_KERNEL | GFP_DMA);
    41          if (!d)
    42                  return -ENOMEM;
    43  
    44  #ifdef CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG
    45          ce->hwrng_stat_req++;
    46          ce->hwrng_stat_bytes += todo;
    47  #endif
    48  
    49          dma_dst = dma_map_single(ce->dev, d, todo, DMA_FROM_DEVICE);
    50          if (dma_mapping_error(ce->dev, dma_dst)) {
    51                  dev_err(ce->dev, "Cannot DMA MAP DST\n");
    52                  err = -EFAULT;
    53                  goto err_dst;
    54          }
    55  
    56          err = pm_runtime_get_sync(ce->dev);
    57          if (err < 0)
    58                  goto err_pm;
    59  
    60          mutex_lock(&ce->rnglock);
    61          chan = &ce->chanlist[flow];
    62  
    63          cet = &chan->tl[0];
    64          memset(cet, 0, sizeof(struct ce_task));
    65  
    66          cet->t_id = cpu_to_le32(flow);
    67          common = ce->variant->trng | CE_COMM_INT;
    68          cet->t_common_ctl = cpu_to_le32(common);
    69  
    70          /* recent CE (H6) need length in bytes, in word otherwise */
    71          if (ce->variant->trng_t_dlen_in_bytes)
    72                  cet->t_dlen = cpu_to_le32(todo);
    73          else
    74                  cet->t_dlen = cpu_to_le32(todo / 4);
    75  
    76          cet->t_sym_ctl = 0;
    77          cet->t_asym_ctl = 0;
    78  
    79          cet->t_dst[0].addr = cpu_to_le32(dma_dst);
    80          cet->t_dst[0].len = cpu_to_le32(todo / 4);
    81          ce->chanlist[flow].timeout = todo;
    82  
    83          err = sun8i_ce_run_task(ce, 3, "TRNG");
    84          mutex_unlock(&ce->rnglock);
    85  
    86          pm_runtime_put(ce->dev);
    87  
    88  err_pm:
    89          dma_unmap_single(ce->dev, dma_dst, todo, DMA_FROM_DEVICE);
    90  
    91          if (!err) {
    92                  memcpy(data, d, max);
    93                  err = max;
    94          }
    95          memzero_explicit(d, todo);
    96  err_dst:
    97          kfree(d);
    98          return err;
    99  }
   100  
   101  int sun8i_ce_hwrng_register(struct sun8i_ce_dev *ce)
   102  {
   103          int ret;
   104  
 > 105          if (ce->variant->trng == CE_ID_NOTSUPP) {
   106                  dev_info(ce->dev, "TRNG not supported\n");
   107                  return 0;
   108          }
   109          ce->trng.name = "sun8i Crypto Engine TRNG";
   110          ce->trng.read = sun8i_ce_trng_read;
   111          ce->trng.quality = 1000;
   112  
   113          ret = hwrng_register(&ce->trng);
   114          if (ret)
   115                  dev_err(ce->dev, "Fail to register the TRNG\n");
   116          return ret;
   117  }
   118  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to