Hi Maxim, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on char-misc/char-misc-testing] [also build test WARNING on linus/master v5.7-rc6 next-20200519] [cannot apply to linux/master] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Maxim-Uvarov/optee-register-drivers-on-optee-bus/20200518-213659 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git 57c76221d5af648c8355a55c09b050c5d8d38189 config: arm64-randconfig-r026-20200519 (attached as .config) compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 135b877874fae96b4372c8a3fbfaa8ff44ff86e3) reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm64 cross compiling tool for clang build # apt-get install binutils-aarch64-linux-gnu # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot All warnings (new ones prefixed by >>, old ones prefixed by <<): >> drivers/tee/optee/device.c:90:5: warning: no previous prototype for function '__optee_enumerate_devices' [-Wmissing-prototypes] int __optee_enumerate_devices(u32 func) ^ drivers/tee/optee/device.c:90:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int __optee_enumerate_devices(u32 func) ^ static 1 warning generated. vim +/__optee_enumerate_devices +90 drivers/tee/optee/device.c 89 > 90 int __optee_enumerate_devices(u32 func) 91 { 92 const uuid_t pta_uuid = 93 UUID_INIT(0x7011a688, 0xddde, 0x4053, 94 0xa5, 0xa9, 0x7b, 0x3c, 0x4d, 0xdf, 0x13, 0xb8); 95 struct tee_ioctl_open_session_arg sess_arg; 96 struct tee_shm *device_shm = NULL; 97 const uuid_t *device_uuid = NULL; 98 struct tee_context *ctx = NULL; 99 u32 shm_size = 0, idx, num_devices = 0; 100 int rc; 101 102 memset(&sess_arg, 0, sizeof(sess_arg)); 103 104 /* Open context with OP-TEE driver */ 105 ctx = tee_client_open_context(NULL, optee_ctx_match, NULL, NULL); 106 if (IS_ERR(ctx)) 107 return -ENODEV; 108 109 /* Open session with device enumeration pseudo TA */ 110 memcpy(sess_arg.uuid, pta_uuid.b, TEE_IOCTL_UUID_LEN); 111 sess_arg.clnt_login = TEE_IOCTL_LOGIN_PUBLIC; 112 sess_arg.num_params = 0; 113 114 rc = tee_client_open_session(ctx, &sess_arg, NULL); 115 if ((rc < 0) || (sess_arg.ret != TEEC_SUCCESS)) { 116 /* Device enumeration pseudo TA not found */ 117 rc = 0; 118 goto out_ctx; 119 } 120 121 rc = get_devices(ctx, sess_arg.session, NULL, &shm_size, func); 122 if (rc < 0 || !shm_size) 123 goto out_sess; 124 125 device_shm = tee_shm_alloc(ctx, shm_size, 126 TEE_SHM_MAPPED | TEE_SHM_DMA_BUF); 127 if (IS_ERR(device_shm)) { 128 pr_err("tee_shm_alloc failed\n"); 129 rc = PTR_ERR(device_shm); 130 goto out_sess; 131 } 132 133 rc = get_devices(ctx, sess_arg.session, device_shm, &shm_size, func); 134 if (rc < 0) 135 goto out_shm; 136 137 device_uuid = tee_shm_get_va(device_shm, 0); 138 if (IS_ERR(device_uuid)) { 139 pr_err("tee_shm_get_va failed\n"); 140 rc = PTR_ERR(device_uuid); 141 goto out_shm; 142 } 143 144 num_devices = shm_size / sizeof(uuid_t); 145 146 for (idx = 0; idx < num_devices; idx++) { 147 rc = optee_register_device(&device_uuid[idx], idx); 148 if (rc) 149 goto out_shm; 150 } 151 152 out_shm: 153 tee_shm_free(device_shm); 154 out_sess: 155 tee_client_close_session(ctx, sess_arg.session); 156 out_ctx: 157 tee_client_close_context(ctx); 158 159 return rc; 160 } 161 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org