Hi Jose,
kernel test robot noticed the following build errors:
[auto build test ERROR on staging/staging-testing]
url: https://github.com/intel-lab-lkp/linux/commits/Jose-A-Perez-de-Azpillaga/sta... base: staging/staging-testing patch link: https://lore.kernel.org/r/20260223195939.71151-1-azpijr%40gmail.com patch subject: [PATCH] staging: greybus: move topology allocation to codec probe config: parisc-randconfig-001-20260224 (https://download.01.org/0day-ci/archive/20260224/202602240844.4eT24iVh-lkp@i...) compiler: hppa-linux-gcc (GCC) 10.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260224/202602240844.4eT24iVh-lkp@i...)
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@intel.com | Closes: https://lore.kernel.org/oe-kbuild-all/202602240844.4eT24iVh-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
drivers/staging/greybus/audio_module.c: In function 'gb_audio_probe':
drivers/staging/greybus/audio_module.c:327:10: error: 'struct gb_audio_topology' has no member named 'size'
327 | topology->size = cpu_to_le16(size); | ^~
drivers/staging/greybus/audio_module.c:329:60: error: passing argument 2 of 'gb_audio_gb_get_topology' from incompatible pointer type [-Werror=incompatible-pointer-types]
329 | ret = gb_audio_gb_get_topology(gbmodule->mgmt_connection, topology); | ^~~~~~~~ | | | struct gb_audio_topology * In file included from drivers/staging/greybus/audio_module.c:12: drivers/staging/greybus/audio_codec.h:182:36: note: expected 'struct gb_audio_topology **' but argument is of type 'struct gb_audio_topology *' 182 | struct gb_audio_topology **topology); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~ cc1: some warnings being treated as errors --
drivers/staging/greybus/audio_gb.c:11:5: error: conflicting types for 'gb_audio_gb_get_topology'
11 | int gb_audio_gb_get_topology(struct gb_connection *connection, | ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/staging/greybus/audio_gb.c:9: drivers/staging/greybus/audio_codec.h:181:5: note: previous declaration of 'gb_audio_gb_get_topology' was here 181 | int gb_audio_gb_get_topology(struct gb_connection *connection, | ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/swab.h:5, from include/uapi/linux/byteorder/big_endian.h:14, from include/linux/byteorder/big_endian.h:5, from arch/parisc/include/uapi/asm/byteorder.h:5, from arch/parisc/include/asm/bitops.h:11, from include/linux/bitops.h:67, from include/linux/kernel.h:23, from include/linux/greybus.h:14, from drivers/staging/greybus/audio_gb.c:8: drivers/staging/greybus/audio_gb.c: In function 'gb_audio_gb_get_topology':
drivers/staging/greybus/audio_gb.c:15:43: error: 'struct gb_audio_topology' has no member named 'size'
15 | NULL, 0, topology, le16_to_cpu(topology->size)); | ^~ include/uapi/linux/swab.h:105:31: note: in definition of macro '__swab16' 105 | (__u16)(__builtin_constant_p(x) ? \ | ^ include/linux/byteorder/generic.h:91:21: note: in expansion of macro '__le16_to_cpu' 91 | #define le16_to_cpu __le16_to_cpu | ^~~~~~~~~~~~~ drivers/staging/greybus/audio_gb.c:15:23: note: in expansion of macro 'le16_to_cpu' 15 | NULL, 0, topology, le16_to_cpu(topology->size)); | ^~~~~~~~~~~
drivers/staging/greybus/audio_gb.c:15:43: error: 'struct gb_audio_topology' has no member named 'size'
15 | NULL, 0, topology, le16_to_cpu(topology->size)); | ^~ include/uapi/linux/swab.h:106:2: note: in expansion of macro '___constant_swab16' 106 | ___constant_swab16(x) : \ | ^~~~~~~~~~~~~~~~~~ include/uapi/linux/byteorder/big_endian.h:37:26: note: in expansion of macro '__swab16' 37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x)) | ^~~~~~~~ include/linux/byteorder/generic.h:91:21: note: in expansion of macro '__le16_to_cpu' 91 | #define le16_to_cpu __le16_to_cpu | ^~~~~~~~~~~~~ drivers/staging/greybus/audio_gb.c:15:23: note: in expansion of macro 'le16_to_cpu' 15 | NULL, 0, topology, le16_to_cpu(topology->size)); | ^~~~~~~~~~~
drivers/staging/greybus/audio_gb.c:15:43: error: 'struct gb_audio_topology' has no member named 'size'
15 | NULL, 0, topology, le16_to_cpu(topology->size)); | ^~ include/uapi/linux/swab.h:16:12: note: in definition of macro '___constant_swab16' 16 | (((__u16)(x) & (__u16)0xff00U) >> 8))) | ^ include/uapi/linux/byteorder/big_endian.h:37:26: note: in expansion of macro '__swab16' 37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x)) | ^~~~~~~~ include/linux/byteorder/generic.h:91:21: note: in expansion of macro '__le16_to_cpu' 91 | #define le16_to_cpu __le16_to_cpu | ^~~~~~~~~~~~~ drivers/staging/greybus/audio_gb.c:15:23: note: in expansion of macro 'le16_to_cpu' 15 | NULL, 0, topology, le16_to_cpu(topology->size)); | ^~~~~~~~~~~
drivers/staging/greybus/audio_gb.c:15:43: error: 'struct gb_audio_topology' has no member named 'size'
15 | NULL, 0, topology, le16_to_cpu(topology->size)); | ^~ include/uapi/linux/swab.h:107:12: note: in definition of macro '__swab16' 107 | __fswab16(x)) | ^ include/linux/byteorder/generic.h:91:21: note: in expansion of macro '__le16_to_cpu' 91 | #define le16_to_cpu __le16_to_cpu | ^~~~~~~~~~~~~ drivers/staging/greybus/audio_gb.c:15:23: note: in expansion of macro 'le16_to_cpu' 15 | NULL, 0, topology, le16_to_cpu(topology->size)); | ^~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:18, from include/linux/greybus.h:14, from drivers/staging/greybus/audio_gb.c:8: drivers/staging/greybus/audio_gb.c: At top level: drivers/staging/greybus/audio_gb.c:17:19: error: conflicting types for 'gb_audio_gb_get_topology' 17 | EXPORT_SYMBOL_GPL(gb_audio_gb_get_topology); | ^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:76:21: note: in definition of macro '__EXPORT_SYMBOL' 76 | extern typeof(sym) sym; \ | ^~~ include/linux/export.h:90:33: note: in expansion of macro '_EXPORT_SYMBOL' 90 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL") | ^~~~~~~~~~~~~~ drivers/staging/greybus/audio_gb.c:17:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' 17 | EXPORT_SYMBOL_GPL(gb_audio_gb_get_topology); | ^~~~~~~~~~~~~~~~~ In file included from drivers/staging/greybus/audio_gb.c:9: drivers/staging/greybus/audio_codec.h:181:5: note: previous declaration of 'gb_audio_gb_get_topology' was here 181 | int gb_audio_gb_get_topology(struct gb_connection *connection, | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/staging/greybus/audio_gb.c: In function 'gb_audio_gb_get_topology':
drivers/staging/greybus/audio_gb.c:16:1: warning: control reaches end of non-void function [-Wreturn-type]
16 | } | ^
vim +327 drivers/staging/greybus/audio_module.c
228 229 /* 230 * This is the basic hook get things initialized and registered w/ gb 231 */ 232 233 static int gb_audio_probe(struct gb_bundle *bundle, 234 const struct greybus_bundle_id *id) 235 { 236 struct device *dev = &bundle->dev; 237 struct gbaudio_module_info *gbmodule; 238 struct greybus_descriptor_cport *cport_desc; 239 struct gb_audio_manager_module_descriptor desc; 240 struct gbaudio_data_connection *dai, *_dai; 241 int ret, i; 242 struct gb_audio_topology *topology; 243 struct gb_audio_get_topology_size_response size_resp; 244 u16 size; 245 246 /* There should be at least one Management and one Data cport */ 247 if (bundle->num_cports < 2) 248 return -ENODEV; 249 250 /* 251 * There can be only one Management connection and any number of data 252 * connections. 253 */ 254 gbmodule = devm_kzalloc(dev, sizeof(*gbmodule), GFP_KERNEL); 255 if (!gbmodule) 256 return -ENOMEM; 257 258 gbmodule->num_data_connections = bundle->num_cports - 1; 259 INIT_LIST_HEAD(&gbmodule->data_list); 260 INIT_LIST_HEAD(&gbmodule->widget_list); 261 INIT_LIST_HEAD(&gbmodule->ctl_list); 262 INIT_LIST_HEAD(&gbmodule->widget_ctl_list); 263 INIT_LIST_HEAD(&gbmodule->jack_list); 264 gbmodule->dev = dev; 265 snprintf(gbmodule->name, sizeof(gbmodule->name), "%s.%s", dev->driver->name, 266 dev_name(dev)); 267 greybus_set_drvdata(bundle, gbmodule); 268 269 /* Create all connections */ 270 for (i = 0; i < bundle->num_cports; i++) { 271 cport_desc = &bundle->cport_desc[i]; 272 273 switch (cport_desc->protocol_id) { 274 case GREYBUS_PROTOCOL_AUDIO_MGMT: 275 ret = gb_audio_add_mgmt_connection(gbmodule, cport_desc, 276 bundle); 277 if (ret) 278 goto destroy_connections; 279 break; 280 case GREYBUS_PROTOCOL_AUDIO_DATA: 281 ret = gb_audio_add_data_connection(gbmodule, cport_desc, 282 bundle); 283 if (ret) 284 goto destroy_connections; 285 break; 286 default: 287 dev_err(dev, "Unsupported protocol: 0x%02x\n", 288 cport_desc->protocol_id); 289 ret = -ENODEV; 290 goto destroy_connections; 291 } 292 } 293 294 /* There must be a management cport */ 295 if (!gbmodule->mgmt_connection) { 296 ret = -EINVAL; 297 dev_err(dev, "Missing management connection\n"); 298 goto destroy_connections; 299 } 300 301 /* Initialize management connection */ 302 ret = gb_connection_enable(gbmodule->mgmt_connection); 303 if (ret) { 304 dev_err(dev, "%d: Error while enabling mgmt connection\n", ret); 305 goto destroy_connections; 306 } 307 gbmodule->dev_id = gbmodule->mgmt_connection->intf->interface_id; 308 309 ret = gb_operation_sync(gbmodule->mgmt_connection, 310 GB_AUDIO_TYPE_GET_TOPOLOGY_SIZE, NULL, 0, 311 &size_resp, sizeof(size_resp)); 312 if (ret) 313 goto disable_connection; 314 315 size = le16_to_cpu(size_resp.size); 316 if (size < sizeof(*topology)) { 317 ret = -ENODATA; 318 goto disable_connection; 319 } 320 321 topology = kzalloc(size, GFP_KERNEL); 322 if (!topology) { 323 ret = -ENOMEM; 324 goto disable_connection; 325 } 326
327 topology->size = cpu_to_le16(size);
328
329 ret = gb_audio_gb_get_topology(gbmodule->mgmt_connection, topology);
330 if (ret) { 331 dev_err(dev, "%d:Error while fetching topology\n", ret); 332 kfree(topology); 333 goto disable_connection; 334 } 335 336 /* process topology data */ 337 ret = gbaudio_tplg_parse_data(gbmodule, topology); 338 if (ret) { 339 dev_err(dev, "%d:Error while parsing topology data\n", 340 ret); 341 goto free_topology; 342 } 343 gbmodule->topology = topology; 344 345 /* Initialize data connections */ 346 list_for_each_entry(dai, &gbmodule->data_list, list) { 347 ret = gb_connection_enable(dai->connection); 348 if (ret) { 349 dev_err(dev, 350 "%d:Error while enabling %d:data connection\n", 351 ret, le16_to_cpu(dai->data_cport)); 352 goto disable_data_connection; 353 } 354 } 355 356 /* register module with gbcodec */ 357 ret = gbaudio_register_module(gbmodule); 358 if (ret) 359 goto disable_data_connection; 360 361 /* inform above layer for uevent */ 362 dev_dbg(dev, "Inform set_event:%d to above layer\n", 1); 363 /* prepare for the audio manager */ 364 strscpy(desc.name, gbmodule->name, sizeof(desc.name)); 365 desc.vid = 2; /* todo */ 366 desc.pid = 3; /* todo */ 367 desc.intf_id = gbmodule->dev_id; 368 desc.op_devices = gbmodule->op_devices; 369 desc.ip_devices = gbmodule->ip_devices; 370 gbmodule->manager_id = gb_audio_manager_add(&desc); 371 372 dev_dbg(dev, "Add GB Audio device:%s\n", gbmodule->name); 373 374 gb_pm_runtime_put_autosuspend(bundle); 375 376 return 0; 377 378 disable_data_connection: 379 list_for_each_entry_safe(dai, _dai, &gbmodule->data_list, list) 380 gb_connection_disable(dai->connection); 381 gbaudio_tplg_release(gbmodule); 382 gbmodule->topology = NULL; 383 384 free_topology: 385 kfree(topology); 386 387 disable_connection: 388 gb_connection_disable(gbmodule->mgmt_connection); 389 390 destroy_connections: 391 list_for_each_entry_safe(dai, _dai, &gbmodule->data_list, list) { 392 gb_connection_destroy(dai->connection); 393 list_del(&dai->list); 394 devm_kfree(dev, dai); 395 } 396 397 if (gbmodule->mgmt_connection) 398 gb_connection_destroy(gbmodule->mgmt_connection); 399 400 devm_kfree(dev, gbmodule); 401 402 return ret; 403 } 404