Hi Arnaud,

kernel test robot noticed the following build warnings:

[auto build test WARNING on remoteproc/rproc-next]
[also build test WARNING on robh/for-next linus/master v6.7 next-20240112]
[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/Arnaud-Pouliquen/remoteproc-Add-TEE-support/20240115-215613
base:   git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux.git 
rproc-next
patch link:    
https://lore.kernel.org/r/20240115135249.296822-5-arnaud.pouliquen%40foss.st.com
patch subject: [PATCH 4/4] remoteproc: stm32: Add support of an OP-TEE TA to 
load the firmware
config: um-randconfig-r113-20240116 
(https://download.01.org/0day-ci/archive/20240116/202401161552.jwqxl1kd-...@intel.com/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20240116/202401161552.jwqxl1kd-...@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202401161552.jwqxl1kd-...@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/remoteproc/tee_remoteproc.c:82:26: sparse: sparse: symbol 
>> 'tee_rproc_ctx' was not declared. Should it be static?
>> drivers/remoteproc/tee_remoteproc.c:166:24: sparse: sparse: incorrect type 
>> in assignment (different address spaces) @@     expected void *rsc_va @@     
>> got void [noderef] __iomem * @@
   drivers/remoteproc/tee_remoteproc.c:166:24: sparse:     expected void *rsc_va
   drivers/remoteproc/tee_remoteproc.c:166:24: sparse:     got void [noderef] 
__iomem *
>> drivers/remoteproc/tee_remoteproc.c:233:31: sparse: sparse: incorrect type 
>> in argument 1 (different address spaces) @@     expected void volatile 
>> [noderef] __iomem *addr @@     got void *rsc_va @@
   drivers/remoteproc/tee_remoteproc.c:233:31: sparse:     expected void 
volatile [noderef] __iomem *addr
   drivers/remoteproc/tee_remoteproc.c:233:31: sparse:     got void *rsc_va
   drivers/remoteproc/tee_remoteproc.c: note: in included file (through 
include/linux/preempt.h, include/linux/spinlock.h, include/linux/mmzone.h, ...):
   include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates 
to true

vim +/tee_rproc_ctx +82 drivers/remoteproc/tee_remoteproc.c

6805d1065198e1 Arnaud Pouliquen 2024-01-15   81  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  @82  struct tee_rproc_context 
*tee_rproc_ctx;
6805d1065198e1 Arnaud Pouliquen 2024-01-15   83  
6805d1065198e1 Arnaud Pouliquen 2024-01-15   84  static void 
prepare_args(struct tee_rproc *trproc, int cmd, struct tee_ioctl_invoke_arg 
*arg,
6805d1065198e1 Arnaud Pouliquen 2024-01-15   85                          struct 
tee_param *param, unsigned int num_params)
6805d1065198e1 Arnaud Pouliquen 2024-01-15   86  {
6805d1065198e1 Arnaud Pouliquen 2024-01-15   87         memset(arg, 0, 
sizeof(*arg));
6805d1065198e1 Arnaud Pouliquen 2024-01-15   88         memset(param, 0, 
MAX_TEE_PARAM_ARRY_MEMBER * sizeof(*param));
6805d1065198e1 Arnaud Pouliquen 2024-01-15   89  
6805d1065198e1 Arnaud Pouliquen 2024-01-15   90         arg->func = cmd;
6805d1065198e1 Arnaud Pouliquen 2024-01-15   91         arg->session = 
trproc->session_id;
6805d1065198e1 Arnaud Pouliquen 2024-01-15   92         arg->num_params = 
num_params + 1;
6805d1065198e1 Arnaud Pouliquen 2024-01-15   93  
6805d1065198e1 Arnaud Pouliquen 2024-01-15   94         param[0] = (struct 
tee_param) {
6805d1065198e1 Arnaud Pouliquen 2024-01-15   95                 .attr = 
TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT,
6805d1065198e1 Arnaud Pouliquen 2024-01-15   96                 .u.value.a = 
trproc->rproc_id,
6805d1065198e1 Arnaud Pouliquen 2024-01-15   97         };
6805d1065198e1 Arnaud Pouliquen 2024-01-15   98  }
6805d1065198e1 Arnaud Pouliquen 2024-01-15   99  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  100  int tee_rproc_load_fw(struct 
tee_rproc *trproc, const struct firmware *fw)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  101  {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  102         struct 
tee_ioctl_invoke_arg arg;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  103         struct tee_param 
param[MAX_TEE_PARAM_ARRY_MEMBER];
6805d1065198e1 Arnaud Pouliquen 2024-01-15  104         struct tee_shm *fw_shm;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  105         int ret;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  106  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  107         fw_shm = 
tee_shm_register_kernel_buf(tee_rproc_ctx->tee_ctx, (void *)fw->data, fw->size);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  108         if (IS_ERR(fw_shm))
6805d1065198e1 Arnaud Pouliquen 2024-01-15  109                 return 
PTR_ERR(fw_shm);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  110  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  111         prepare_args(trproc, 
TA_RPROC_FW_CMD_LOAD_FW, &arg, param, 1);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  112  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  113         /* Provide the address 
of the firmware image */
6805d1065198e1 Arnaud Pouliquen 2024-01-15  114         param[1] = (struct 
tee_param) {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  115                 .attr = 
TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT,
6805d1065198e1 Arnaud Pouliquen 2024-01-15  116                 .u.memref = {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  117                         .shm = 
fw_shm,
6805d1065198e1 Arnaud Pouliquen 2024-01-15  118                         .size = 
fw->size,
6805d1065198e1 Arnaud Pouliquen 2024-01-15  119                         
.shm_offs = 0,
6805d1065198e1 Arnaud Pouliquen 2024-01-15  120                 },
6805d1065198e1 Arnaud Pouliquen 2024-01-15  121         };
6805d1065198e1 Arnaud Pouliquen 2024-01-15  122  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  123         ret = 
tee_client_invoke_func(tee_rproc_ctx->tee_ctx, &arg, param);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  124         if (ret < 0 || arg.ret 
!= 0) {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  125                 
dev_err(tee_rproc_ctx->dev,
6805d1065198e1 Arnaud Pouliquen 2024-01-15  126                         
"TA_RPROC_FW_CMD_LOAD_FW invoke failed TEE err: %x, ret:%x\n",
6805d1065198e1 Arnaud Pouliquen 2024-01-15  127                         
arg.ret, ret);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  128                 if (!ret)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  129                         ret = 
-EIO;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  130         }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  131  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  132         tee_shm_free(fw_shm);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  133  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  134         return ret;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  135  }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  136  
EXPORT_SYMBOL_GPL(tee_rproc_load_fw);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  137  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  138  int 
rproc_tee_get_rsc_table(struct tee_rproc *trproc)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  139  {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  140         struct 
tee_ioctl_invoke_arg arg;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  141         struct tee_param 
param[MAX_TEE_PARAM_ARRY_MEMBER];
6805d1065198e1 Arnaud Pouliquen 2024-01-15  142         struct rproc *rproc = 
trproc->rproc;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  143         size_t rsc_size;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  144         int ret;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  145  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  146         prepare_args(trproc, 
TA_RPROC_FW_CMD_GET_RSC_TABLE, &arg, param, 2);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  147  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  148         param[1].attr = 
TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  149         param[2].attr = 
TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  150  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  151         ret = 
tee_client_invoke_func(tee_rproc_ctx->tee_ctx, &arg, param);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  152         if (ret < 0 || arg.ret 
!= 0) {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  153                 
dev_err(tee_rproc_ctx->dev,
6805d1065198e1 Arnaud Pouliquen 2024-01-15  154                         
"TA_RPROC_FW_CMD_GET_RSC_TABLE invoke failed TEE err: %x, ret:%x\n",
6805d1065198e1 Arnaud Pouliquen 2024-01-15  155                         
arg.ret, ret);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  156                 return -EIO;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  157         }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  158  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  159         rsc_size = 
param[2].u.value.a;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  160  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  161         /* If the size is null 
no resource table defined in the image */
6805d1065198e1 Arnaud Pouliquen 2024-01-15  162         if (!rsc_size)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  163                 return 0;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  164  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  165         /* Store the resource 
table address that would be updated by the remote core . */
6805d1065198e1 Arnaud Pouliquen 2024-01-15 @166         trproc->rsc_va = 
ioremap_wc(param[1].u.value.a, rsc_size);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  167         if 
(IS_ERR_OR_NULL(trproc->rsc_va)) {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  168                 
dev_err(tee_rproc_ctx->dev, "Unable to map memory region: %lld+%zx\n",
6805d1065198e1 Arnaud Pouliquen 2024-01-15  169                         
param[1].u.value.a, rsc_size);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  170                 trproc->rsc_va 
= NULL;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  171                 return -ENOMEM;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  172         }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  173  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  174         /*
6805d1065198e1 Arnaud Pouliquen 2024-01-15  175          * A cached table is 
requested as the physical address is not mapped yet
6805d1065198e1 Arnaud Pouliquen 2024-01-15  176          * but remoteproc needs 
to parse the table for resources.
6805d1065198e1 Arnaud Pouliquen 2024-01-15  177          */
6805d1065198e1 Arnaud Pouliquen 2024-01-15  178         rproc->cached_table = 
kmemdup(trproc->rsc_va, rsc_size, GFP_KERNEL);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  179         if 
(!rproc->cached_table)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  180                 return -ENOMEM;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  181  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  182         rproc->table_ptr = 
rproc->cached_table;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  183         rproc->table_sz = 
rsc_size;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  184  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  185         return 0;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  186  }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  187  
EXPORT_SYMBOL_GPL(rproc_tee_get_rsc_table);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  188  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  189  struct resource_table 
*tee_rproc_get_loaded_rsc_table(struct tee_rproc *trproc)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  190  {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  191         return (struct 
resource_table *)trproc->rsc_va;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  192  }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  193  
EXPORT_SYMBOL_GPL(tee_rproc_get_loaded_rsc_table);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  194  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  195  int tee_rproc_start(struct 
tee_rproc *trproc)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  196  {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  197         struct 
tee_ioctl_invoke_arg arg;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  198         struct tee_param 
param[MAX_TEE_PARAM_ARRY_MEMBER];
6805d1065198e1 Arnaud Pouliquen 2024-01-15  199         int ret;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  200  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  201         prepare_args(trproc, 
TA_RPROC_FW_CMD_START_FW, &arg, param, 0);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  202  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  203         ret = 
tee_client_invoke_func(tee_rproc_ctx->tee_ctx, &arg, param);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  204         if (ret < 0 || arg.ret 
!= 0) {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  205                 
dev_err(tee_rproc_ctx->dev,
6805d1065198e1 Arnaud Pouliquen 2024-01-15  206                         
"TA_RPROC_FW_CMD_START_FW invoke failed TEE err: %x, ret:%x\n",
6805d1065198e1 Arnaud Pouliquen 2024-01-15  207                         
arg.ret, ret);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  208                 if (!ret)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  209                         ret = 
-EIO;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  210         }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  211  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  212         return ret;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  213  }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  214  
EXPORT_SYMBOL_GPL(tee_rproc_start);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  215  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  216  int tee_rproc_stop(struct 
tee_rproc *trproc)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  217  {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  218         struct 
tee_ioctl_invoke_arg arg;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  219         struct tee_param 
param[MAX_TEE_PARAM_ARRY_MEMBER];
6805d1065198e1 Arnaud Pouliquen 2024-01-15  220         int ret;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  221  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  222         prepare_args(trproc, 
TA_RPROC_FW_CMD_STOP_FW, &arg, param, 0);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  223  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  224         ret = 
tee_client_invoke_func(tee_rproc_ctx->tee_ctx, &arg, param);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  225         if (ret < 0 || arg.ret 
!= 0) {
6805d1065198e1 Arnaud Pouliquen 2024-01-15  226                 
dev_err(tee_rproc_ctx->dev,
6805d1065198e1 Arnaud Pouliquen 2024-01-15  227                         
"TA_RPROC_FW_CMD_STOP_FW invoke failed TEE err: %x, ret:%x\n",
6805d1065198e1 Arnaud Pouliquen 2024-01-15  228                         
arg.ret, ret);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  229                 if (!ret)
6805d1065198e1 Arnaud Pouliquen 2024-01-15  230                         ret = 
-EIO;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  231         }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  232         if (trproc->rsc_va)
6805d1065198e1 Arnaud Pouliquen 2024-01-15 @233                 
iounmap(trproc->rsc_va);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  234         trproc->rsc_va = NULL;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  235  
6805d1065198e1 Arnaud Pouliquen 2024-01-15  236         return ret;
6805d1065198e1 Arnaud Pouliquen 2024-01-15  237  }
6805d1065198e1 Arnaud Pouliquen 2024-01-15  238  
EXPORT_SYMBOL_GPL(tee_rproc_stop);
6805d1065198e1 Arnaud Pouliquen 2024-01-15  239  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to