tree: https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git v5.9/ffa head: a1dd26f309d173a71b9b7b18cf6221b4e29d397e commit: de254ee743800be7154e0b19239f97fa748d1e6d [7/8] firmware: Add support for PSA FF-A transport for VM partitions config: arm-allyesconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (GCC) 9.3.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 git checkout de254ee743800be7154e0b19239f97fa748d1e6d # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): drivers/firmware/arm_ffa/driver.c: In function 'ffa_version_check': >> drivers/firmware/arm_ffa/driver.c:176:12: error: storage size of 'ver' isn't known 176 | ffa_res_t ver; | ^~~ >> drivers/firmware/arm_ffa/driver.c:178:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 178 | ver = invoke_ffa_fn(FFA_VERSION, FFA_DRIVER_VERSION, 0, 0, 0, 0, 0, 0); | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:176:12: warning: unused variable 'ver' [-Wunused-variable] 176 | ffa_res_t ver; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_features': >> drivers/firmware/arm_ffa/driver.c:199:12: error: storage size of 'ret' isn't known 199 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:201:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 201 | ret = invoke_ffa_fn(FFA_FEATURES, func_id, 0, 0, 0, 0, 0, 0); | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:199:12: warning: unused variable 'ret' [-Wunused-variable] 199 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_rx_release': drivers/firmware/arm_ffa/driver.c:211:12: error: storage size of 'ret' isn't known 211 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:213:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 213 | ret = invoke_ffa_fn(FFA_RX_RELEASE, 0, 0, 0, 0, 0, 0, 0); | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:211:12: warning: unused variable 'ret' [-Wunused-variable] 211 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_rxtx_map': drivers/firmware/arm_ffa/driver.c:225:12: error: storage size of 'ret' isn't known 225 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:227:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 227 | ret = invoke_ffa_fn(FFA_RXTX_MAP, tx_buf, rx_buf, pg_cnt, 0, 0, 0, 0); | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:225:12: warning: unused variable 'ret' [-Wunused-variable] 225 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_rxtx_unmap': drivers/firmware/arm_ffa/driver.c:237:12: error: storage size of 'ret' isn't known 237 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:239:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 239 | ret = invoke_ffa_fn(FFA_RXTX_UNMAP, vm_id, 0, 0, 0, 0, 0, 0); | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:237:12: warning: unused variable 'ret' [-Wunused-variable] 237 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_partition_info_get': >> drivers/firmware/arm_ffa/driver.c:251:12: error: storage size of 'partition_info' isn't known 251 | ffa_res_t partition_info; | ^~~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:254:19: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 254 | partition_info = invoke_ffa_fn(FFA_PARTITION_INFO_GET, uuid0, uuid1, | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:251:12: warning: unused variable 'partition_info' [-Wunused-variable] 251 | ffa_res_t partition_info; | ^~~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_id_get': >> drivers/firmware/arm_ffa/driver.c:294:12: error: storage size of 'id' isn't known 294 | ffa_res_t id; | ^~ drivers/firmware/arm_ffa/driver.c:296:7: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 296 | id = invoke_ffa_fn(FFA_ID_GET, 0, 0, 0, 0, 0, 0, 0); | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:294:12: warning: unused variable 'id' [-Wunused-variable] 294 | ffa_res_t id; | ^~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_msg_send': drivers/firmware/arm_ffa/driver.c:308:12: error: storage size of 'ret' isn't known 308 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:315:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 315 | ret = invoke_ffa_fn(FFA_MSG_SEND, src_dst_ids, 0, len, 0, 0, 0, 0); | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:308:12: warning: unused variable 'ret' [-Wunused-variable] 308 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_msg_send_direct_req': drivers/firmware/arm_ffa/driver.c:329:12: error: storage size of 'ret' isn't known 329 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:331:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 331 | ret = invoke_ffa_fn(FFA_FN_NATIVE(MSG_SEND_DIRECT_REQ), src_dst_ids, 0, | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:329:12: warning: unused variable 'ret' [-Wunused-variable] 329 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_mem_first_frag': drivers/firmware/arm_ffa/driver.c:491:12: error: storage size of 'ret' isn't known 491 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:493:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 493 | ret = invoke_ffa_fn(func_id, len, frag_len, buf, buf_sz, 0, 0, 0); | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:491:12: warning: unused variable 'ret' [-Wunused-variable] 491 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_mem_next_frag': drivers/firmware/arm_ffa/driver.c:512:12: error: storage size of 'ret' isn't known 512 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:514:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 514 | ret = invoke_ffa_fn(FFA_MEM_FRAG_TX, HANDLE_LOW(handle), | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:512:12: warning: unused variable 'ret' [-Wunused-variable] 512 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c: In function 'ffa_memory_reclaim': drivers/firmware/arm_ffa/driver.c:654:12: error: storage size of 'ret' isn't known 654 | ffa_res_t ret; | ^~~ drivers/firmware/arm_ffa/driver.c:656:8: error: invalid use of incomplete typedef 'ffa_res_t' {aka 'struct arm_smccc_v1_2_res'} 656 | ret = invoke_ffa_fn(FFA_MEM_RECLAIM, HANDLE_LOW(g_handle), | ^~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:654:12: warning: unused variable 'ret' [-Wunused-variable] 654 | ffa_res_t ret; | ^~~ At top level: drivers/firmware/arm_ffa/driver.c:918:34: warning: 'ffa_part_of_match' defined but not used [-Wunused-const-variable=] 918 | static const struct of_device_id ffa_part_of_match[] = { | ^~~~~~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:652:12: warning: 'ffa_memory_reclaim' defined but not used [-Wunused-function] 652 | static int ffa_memory_reclaim(u64 g_handle, u32 flags) | ^~~~~~~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:624:12: warning: 'ffa_memory_ops' defined but not used [-Wunused-function] 624 | static int ffa_memory_ops(u32 func_id, bool use_txbuf, u64 tag, u32 flags, | ^~~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:235:12: warning: 'ffa_rxtx_unmap' defined but not used [-Wunused-function] 235 | static int ffa_rxtx_unmap(u16 vm_id) | ^~~~~~~~~~~~~~ drivers/firmware/arm_ffa/driver.c:197:12: warning: 'ffa_features' defined but not used [-Wunused-function] 197 | static int ffa_features(u32 func_id) | ^~~~~~~~~~~~ # https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git/commit/?id=de254ee743800be7154e0b19239f97fa748d1e6d git remote add skn https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git git fetch --no-tags skn v5.9/ffa git checkout de254ee743800be7154e0b19239f97fa748d1e6d vim +176 drivers/firmware/arm_ffa/driver.c 173 174 static int ffa_version_check(u32 *version) 175 { > 176 ffa_res_t ver; 177 > 178 ver = invoke_ffa_fn(FFA_VERSION, FFA_DRIVER_VERSION, 0, 0, 0, 0, 0, 0); 179 180 if (ver.a0 == FFA_RET_NOT_SUPPORTED) { 181 pr_info("FFA_VERSION returned not supported\n"); 182 return -EOPNOTSUPP; 183 } 184 185 if (ver.a0 < FFA_MIN_VERSION || ver.a0 > FFA_DRIVER_VERSION) { 186 pr_err("Incompatible version %d.%d found\n", 187 MAJOR_VERSION(ver.a0), MINOR_VERSION(ver.a0)); 188 return -EINVAL; 189 } 190 191 *version = ver.a0; 192 pr_info("Version %d.%d found\n", MAJOR_VERSION(ver.a0), 193 MINOR_VERSION(ver.a0)); 194 return 0; 195 } 196 197 static int ffa_features(u32 func_id) 198 { > 199 ffa_res_t ret; 200 201 ret = invoke_ffa_fn(FFA_FEATURES, func_id, 0, 0, 0, 0, 0, 0); 202 203 if (ret.a0 == FFA_ERROR) 204 return ffa_to_linux_errno((int)ret.a2); 205 206 return ret.a2; 207 } 208 209 static int ffa_rx_release(void) 210 { 211 ffa_res_t ret; 212 213 ret = invoke_ffa_fn(FFA_RX_RELEASE, 0, 0, 0, 0, 0, 0, 0); 214 215 if (ret.a0 == FFA_ERROR) 216 return ffa_to_linux_errno((int)ret.a2); 217 218 /* check for ret.a0 == FFA_RX_RELEASE ? */ 219 220 return 0; 221 } 222 223 static int ffa_rxtx_map(phys_addr_t tx_buf, phys_addr_t rx_buf, u32 pg_cnt) 224 { 225 ffa_res_t ret; 226 227 ret = invoke_ffa_fn(FFA_RXTX_MAP, tx_buf, rx_buf, pg_cnt, 0, 0, 0, 0); 228 229 if (ret.a0 == FFA_ERROR) 230 return ffa_to_linux_errno((int)ret.a2); 231 232 return 0; 233 } 234 235 static int ffa_rxtx_unmap(u16 vm_id) 236 { 237 ffa_res_t ret; 238 239 ret = invoke_ffa_fn(FFA_RXTX_UNMAP, vm_id, 0, 0, 0, 0, 0, 0); 240 241 if (ret.a0 == FFA_ERROR) 242 return ffa_to_linux_errno((int)ret.a2); 243 244 return 0; 245 } 246 247 static int ffa_partition_info_get(u32 uuid0, u32 uuid1, u32 uuid2, u32 uuid3, 248 struct ffa_partition_info **buffer) 249 { 250 int count; > 251 ffa_res_t partition_info; 252 253 mutex_lock(&drv_info->rx_lock); 254 partition_info = invoke_ffa_fn(FFA_PARTITION_INFO_GET, uuid0, uuid1, 255 uuid2, uuid3, 0, 0, 0); 256 257 if (partition_info.a0 == FFA_ERROR) 258 return ffa_to_linux_errno((int)partition_info.a2); 259 260 count = partition_info.a2; 261 262 if (buffer) 263 memcpy(*buffer, drv_info->rx_buffer, sizeof(*buffer) * count); 264 265 ffa_rx_release(); 266 267 mutex_unlock(&drv_info->rx_lock); 268 269 return count; 270 } 271 272 static int ffa_partition_probe(const char *uuid_str, 273 struct ffa_partition_info *buffer) 274 { 275 int count; 276 uuid_t uuid; 277 u32 uuid0_4[4] = { 0 }; 278 279 if (uuid_parse(uuid_str, &uuid)) { 280 pr_err("invalid uuid (%s)\n", uuid_str); 281 return -ENODEV; 282 } 283 284 export_uuid((u8 *)uuid0_4, &uuid); 285 count = ffa_partition_info_get(uuid0_4[0], uuid0_4[1], uuid0_4[2], 286 uuid0_4[3], &buffer); 287 288 return count; 289 } 290 291 #define VM_ID_MASK GENMASK(15, 0) 292 static int ffa_id_get(u16 *vm_id) 293 { > 294 ffa_res_t id; 295 296 id = invoke_ffa_fn(FFA_ID_GET, 0, 0, 0, 0, 0, 0, 0); 297 298 if (id.a0 == FFA_ERROR) 299 return ffa_to_linux_errno((int)id.a2); 300 301 *vm_id = FIELD_GET(VM_ID_MASK, (id.a2)); 302 303 return 0; 304 } 305 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org