Hi Liming, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v5.0-rc4 next-20190131] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Liming-Sun/platform-mellanox-Add-bootctl-driver-for-Mellanox-BlueField-Soc/20190201-104657 config: arm64-allmodconfig (attached as .config) compiler: aarch64-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=8.2.0 make.cross ARCH=arm64 All errors (new ones prefixed by >>): drivers/platform/mellanox/mlxbf-bootctl.c:260:36: error: array type has incomplete element type 'struct acpi_device_id' static const struct acpi_device_id mlxbf_bootctl_acpi_ids[] = { ^~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/module.h:18, from drivers/platform/mellanox/mlxbf-bootctl.c:12: >> drivers/platform/mellanox/mlxbf-bootctl.c:314:20: error: expected ',' or ';' before 'DRIVER_DESCRIPTION' MODULE_DESCRIPTION(DRIVER_DESCRIPTION); ^~~~~~~~~~~~~~~~~~ include/linux/moduleparam.h:24:26: note: in definition of macro '__MODULE_INFO' = __stringify(tag) "=" info ^~~~ include/linux/module.h:208:42: note: in expansion of macro 'MODULE_INFO' #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) ^~~~~~~~~~~ drivers/platform/mellanox/mlxbf-bootctl.c:314:1: note: in expansion of macro 'MODULE_DESCRIPTION' MODULE_DESCRIPTION(DRIVER_DESCRIPTION); ^~~~~~~~~~~~~~~~~~ vim +314 drivers/platform/mellanox/mlxbf-bootctl.c 259 > 260 static const struct acpi_device_id mlxbf_bootctl_acpi_ids[] = { 261 {"MLNXBF04", 0}, 262 {}, 263 }; 264 265 MODULE_DEVICE_TABLE(acpi, mlxbf_bootctl_acpi_ids); 266 267 static int mlxbf_bootctl_probe(struct platform_device *pdev) 268 { 269 struct arm_smccc_res res; 270 271 /* 272 * Ensure we have the UUID we expect for this service. 273 * Note that the functionality we want is present in the first 274 * released version of this service, so we don't check the version. 275 */ 276 arm_smccc_smc(MLXBF_BOOTCTL_SIP_SVC_UID, 0, 0, 0, 0, 0, 0, 0, &res); 277 if (res.a0 != 0x89c036b4 || res.a1 != 0x11e6e7d7 || 278 res.a2 != 0x1a009787 || res.a3 != 0xc4bf00ca) 279 return -ENODEV; 280 281 /* 282 * When watchdog is used, it sets boot mode to MLXBF_BOOTCTL_SWAP_EMMC 283 * in case of boot failures. However it doesn't clear the state if there 284 * is no failure. Restore the default boot mode here to avoid any 285 * unnecessary boot partition swapping. 286 */ 287 if (mlxbf_bootctl_smc_call1(MLXBF_BOOTCTL_SET_RESET_ACTION, 288 MLXBF_BOOTCTL_EMMC) < 0) 289 pr_err("Unable to reset the EMMC boot mode\n"); 290 291 pr_info("%s (version %s)\n", MLXBF_BOOTCTL_DRIVER_DESCRIPTION, 292 MLXBF_BOOTCTL_DRIVER_VERSION); 293 294 return 0; 295 } 296 297 static int mlxbf_bootctl_remove(struct platform_device *pdev) 298 { 299 return 0; 300 } 301 302 static struct platform_driver mlxbf_bootctl_driver = { 303 .probe = mlxbf_bootctl_probe, 304 .remove = mlxbf_bootctl_remove, 305 .driver = { 306 .name = MLXBF_BOOTCTL_DRIVER_NAME, 307 .groups = mlxbf_bootctl_attr_groups, 308 .acpi_match_table = ACPI_PTR(mlxbf_bootctl_acpi_ids), 309 } 310 }; 311 312 module_platform_driver(mlxbf_bootctl_driver); 313 > 314 MODULE_DESCRIPTION(DRIVER_DESCRIPTION); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip