Re: [PATCH 4/4] remoteproc: stm32: Add support of an OP-TEE TA to load the firmware

From: kernel test robot
Date: Tue Jan 16 2024 - 03:47:16 EST


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: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20240116/202401161603.5dloSqiJ-lkp@xxxxxxxxx/config)
compiler: clang version 18.0.0git (https://github.com/llvm/llvm-project 9bde5becb44ea071f5e1fa1f5d4071dc8788b18c)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240116/202401161603.5dloSqiJ-lkp@xxxxxxxxx/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 <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401161603.5dloSqiJ-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/remoteproc/stm32_rproc.c:977:6: warning: variable 'trproc' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
977 | if (of_device_is_compatible(np, "st,stm32mp1-m4-tee")) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/remoteproc/stm32_rproc.c:991:8: note: uninitialized use occurs here
991 | trproc ? &st_rproc_tee_ops : &st_rproc_ops,
| ^~~~~~
drivers/remoteproc/stm32_rproc.c:977:2: note: remove the 'if' if its condition is always true
977 | if (of_device_is_compatible(np, "st,stm32mp1-m4-tee")) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/remoteproc/stm32_rproc.c:968:26: note: initialize the variable 'trproc' to silence this warning
968 | struct tee_rproc *trproc;
| ^
| = NULL
1 warning generated.


vim +977 drivers/remoteproc/stm32_rproc.c

962
963 static int stm32_rproc_probe(struct platform_device *pdev)
964 {
965 struct device *dev = &pdev->dev;
966 struct stm32_rproc *ddata;
967 struct device_node *np = dev->of_node;
968 struct tee_rproc *trproc;
969 struct rproc *rproc;
970 unsigned int state;
971 int ret;
972
973 ret = dma_coerce_mask_and_coherent(dev, DMA_BIT_MASK(32));
974 if (ret)
975 return ret;
976
> 977 if (of_device_is_compatible(np, "st,stm32mp1-m4-tee")) {
978 trproc = tee_rproc_register(dev, STM32_MP1_M4_PROC_ID);
979 if (IS_ERR(trproc)) {
980 dev_err_probe(dev, PTR_ERR(trproc),
981 "signed firmware not supported by TEE\n");
982 return PTR_ERR(trproc);
983 }
984 /*
985 * Delegate the firmware management to the secure context.
986 * The firmware loaded has to be signed.
987 */
988 dev_info(dev, "Support of signed firmware only\n");
989 }
990 rproc = rproc_alloc(dev, np->name,
991 trproc ? &st_rproc_tee_ops : &st_rproc_ops,
992 NULL, sizeof(*ddata));
993 if (!rproc) {
994 ret = -ENOMEM;
995 goto free_tee;
996 }
997
998 ddata = rproc->priv;
999 ddata->trproc = trproc;
1000 if (trproc)
1001 trproc->rproc = rproc;
1002
1003 rproc_coredump_set_elf_info(rproc, ELFCLASS32, EM_NONE);
1004
1005 ret = stm32_rproc_parse_dt(pdev, ddata, &rproc->auto_boot);
1006 if (ret)
1007 goto free_rproc;
1008
1009 ret = stm32_rproc_of_memory_translations(pdev, ddata);
1010 if (ret)
1011 goto free_rproc;
1012
1013 ret = stm32_rproc_get_m4_status(ddata, &state);
1014 if (ret)
1015 goto free_rproc;
1016
1017 if (state == M4_STATE_CRUN)
1018 rproc->state = RPROC_DETACHED;
1019
1020 rproc->has_iommu = false;
1021 ddata->workqueue = create_workqueue(dev_name(dev));
1022 if (!ddata->workqueue) {
1023 dev_err(dev, "cannot create workqueue\n");
1024 ret = -ENOMEM;
1025 goto free_resources;
1026 }
1027
1028 platform_set_drvdata(pdev, rproc);
1029
1030 ret = stm32_rproc_request_mbox(rproc);
1031 if (ret)
1032 goto free_wkq;
1033
1034 ret = rproc_add(rproc);
1035 if (ret)
1036 goto free_mb;
1037
1038 return 0;
1039
1040 free_mb:
1041 stm32_rproc_free_mbox(rproc);
1042 free_wkq:
1043 destroy_workqueue(ddata->workqueue);
1044 free_resources:
1045 rproc_resource_cleanup(rproc);
1046 free_rproc:
1047 if (device_may_wakeup(dev)) {
1048 dev_pm_clear_wake_irq(dev);
1049 device_init_wakeup(dev, false);
1050 }
1051 rproc_free(rproc);
1052 free_tee:
1053 if (trproc)
1054 tee_rproc_unregister(trproc);
1055
1056 return ret;
1057 }
1058

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