Hi Michal, kernel test robot noticed the following build errors: [auto build test ERROR on rafael-pm/linux-next] [also build test ERROR on chrome-platform/for-next groeck-staging/hwmon-next linus/master v6.4-rc1 next-20230512] [cannot apply to jic23-iio/togreg nvdimm/libnvdimm-for-next nvdimm/dax-misc crng-random/master] [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/Michal-Wilczynski/acpi-Adjust-functions-installing-bus-event-handlers/20230512-220607 base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next patch link: https://lore.kernel.org/r/20230512140222.124868-8-michal.wilczynski%40intel.com patch subject: [PATCH v1 07/34] acpi/nfit: Move handler installing logic to driver config: arm64-randconfig-r032-20230511 (https://download.01.org/0day-ci/archive/20230513/202305130006.7vOawF8K-lkp@xxxxxxxxx/config) compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project b0fb98227c90adf2536c9ad644a74d5e92961111) 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 # install arm64 cross compiling tool for clang build # apt-get install binutils-aarch64-linux-gnu # https://github.com/intel-lab-lkp/linux/commit/2f0865bfe3ea129ced1df996b1f80fb5d44133e8 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Michal-Wilczynski/acpi-Adjust-functions-installing-bus-event-handlers/20230512-220607 git checkout 2f0865bfe3ea129ced1df996b1f80fb5d44133e8 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/acpi/nfit/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Link: https://lore.kernel.org/oe-kbuild-all/202305130006.7vOawF8K-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/acpi/nfit/core.c:1717:13: warning: no previous prototype for function 'nfit_intel_shutdown_status' [-Wmissing-prototypes] __weak void nfit_intel_shutdown_status(struct nfit_mem *nfit_mem) ^ drivers/acpi/nfit/core.c:1717:8: note: declare 'static' if the function is not intended to be used outside of this translation unit __weak void nfit_intel_shutdown_status(struct nfit_mem *nfit_mem) ^ static >> drivers/acpi/nfit/core.c:3376:43: error: use of undeclared identifier 'device' return acpi_device_install_event_handler(device, ACPI_DEVICE_NOTIFY, acpi_nfit_notify); ^ >> drivers/acpi/nfit/core.c:3376:71: error: use of undeclared identifier 'acpi_nfit_notify' return acpi_device_install_event_handler(device, ACPI_DEVICE_NOTIFY, acpi_nfit_notify); ^ drivers/acpi/nfit/core.c:3381:35: error: use of undeclared identifier 'device' acpi_device_remove_event_handler(device, ACPI_DEVICE_NOTIFY, acpi_nfit_notify); ^ drivers/acpi/nfit/core.c:3381:63: error: use of undeclared identifier 'acpi_nfit_notify' acpi_device_remove_event_handler(device, ACPI_DEVICE_NOTIFY, acpi_nfit_notify); ^ >> drivers/acpi/nfit/core.c:3457:15: error: use of undeclared identifier 'adev' device_lock(&adev->dev); ^ drivers/acpi/nfit/core.c:3458:22: error: use of undeclared identifier 'adev' __acpi_nfit_notify(&adev->dev, adev->handle, event); ^ drivers/acpi/nfit/core.c:3458:33: error: use of undeclared identifier 'adev' __acpi_nfit_notify(&adev->dev, adev->handle, event); ^ drivers/acpi/nfit/core.c:3459:17: error: use of undeclared identifier 'adev' device_unlock(&adev->dev); ^ 1 warning and 8 errors generated. vim +/device +3376 drivers/acpi/nfit/core.c 3314 3315 static int acpi_nfit_add(struct acpi_device *adev) 3316 { 3317 struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER, NULL }; 3318 struct acpi_nfit_desc *acpi_desc; 3319 struct device *dev = &adev->dev; 3320 struct acpi_table_header *tbl; 3321 acpi_status status = AE_OK; 3322 acpi_size sz; 3323 int rc = 0; 3324 3325 status = acpi_get_table(ACPI_SIG_NFIT, 0, &tbl); 3326 if (ACPI_FAILURE(status)) { 3327 /* The NVDIMM root device allows OS to trigger enumeration of 3328 * NVDIMMs through NFIT at boot time and re-enumeration at 3329 * root level via the _FIT method during runtime. 3330 * This is ok to return 0 here, we could have an nvdimm 3331 * hotplugged later and evaluate _FIT method which returns 3332 * data in the format of a series of NFIT Structures. 3333 */ 3334 dev_dbg(dev, "failed to find NFIT at startup\n"); 3335 return 0; 3336 } 3337 3338 rc = devm_add_action_or_reset(dev, acpi_nfit_put_table, tbl); 3339 if (rc) 3340 return rc; 3341 sz = tbl->length; 3342 3343 acpi_desc = devm_kzalloc(dev, sizeof(*acpi_desc), GFP_KERNEL); 3344 if (!acpi_desc) 3345 return -ENOMEM; 3346 acpi_nfit_desc_init(acpi_desc, &adev->dev); 3347 3348 /* Save the acpi header for exporting the revision via sysfs */ 3349 acpi_desc->acpi_header = *tbl; 3350 3351 /* Evaluate _FIT and override with that if present */ 3352 status = acpi_evaluate_object(adev->handle, "_FIT", NULL, &buf); 3353 if (ACPI_SUCCESS(status) && buf.length > 0) { 3354 union acpi_object *obj = buf.pointer; 3355 3356 if (obj->type == ACPI_TYPE_BUFFER) 3357 rc = acpi_nfit_init(acpi_desc, obj->buffer.pointer, 3358 obj->buffer.length); 3359 else 3360 dev_dbg(dev, "invalid type %d, ignoring _FIT\n", 3361 (int) obj->type); 3362 kfree(buf.pointer); 3363 } else 3364 /* skip over the lead-in header table */ 3365 rc = acpi_nfit_init(acpi_desc, (void *) tbl 3366 + sizeof(struct acpi_table_nfit), 3367 sz - sizeof(struct acpi_table_nfit)); 3368 3369 if (rc) 3370 return rc; 3371 3372 rc = devm_add_action_or_reset(dev, acpi_nfit_shutdown, acpi_desc); 3373 if (rc) 3374 return rc; 3375 > 3376 return acpi_device_install_event_handler(device, ACPI_DEVICE_NOTIFY, acpi_nfit_notify); 3377 } 3378 3379 static void acpi_nfit_remove(struct acpi_device *adev) 3380 { 3381 acpi_device_remove_event_handler(device, ACPI_DEVICE_NOTIFY, acpi_nfit_notify); 3382 /* see acpi_nfit_unregister */ 3383 } 3384 3385 static void acpi_nfit_update_notify(struct device *dev, acpi_handle handle) 3386 { 3387 struct acpi_nfit_desc *acpi_desc = dev_get_drvdata(dev); 3388 struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER, NULL }; 3389 union acpi_object *obj; 3390 acpi_status status; 3391 int ret; 3392 3393 if (!dev->driver) { 3394 /* dev->driver may be null if we're being removed */ 3395 dev_dbg(dev, "no driver found for dev\n"); 3396 return; 3397 } 3398 3399 if (!acpi_desc) { 3400 acpi_desc = devm_kzalloc(dev, sizeof(*acpi_desc), GFP_KERNEL); 3401 if (!acpi_desc) 3402 return; 3403 acpi_nfit_desc_init(acpi_desc, dev); 3404 } else { 3405 /* 3406 * Finish previous registration before considering new 3407 * regions. 3408 */ 3409 flush_workqueue(nfit_wq); 3410 } 3411 3412 /* Evaluate _FIT */ 3413 status = acpi_evaluate_object(handle, "_FIT", NULL, &buf); 3414 if (ACPI_FAILURE(status)) { 3415 dev_err(dev, "failed to evaluate _FIT\n"); 3416 return; 3417 } 3418 3419 obj = buf.pointer; 3420 if (obj->type == ACPI_TYPE_BUFFER) { 3421 ret = acpi_nfit_init(acpi_desc, obj->buffer.pointer, 3422 obj->buffer.length); 3423 if (ret) 3424 dev_err(dev, "failed to merge updated NFIT\n"); 3425 } else 3426 dev_err(dev, "Invalid _FIT\n"); 3427 kfree(buf.pointer); 3428 } 3429 3430 static void acpi_nfit_uc_error_notify(struct device *dev, acpi_handle handle) 3431 { 3432 struct acpi_nfit_desc *acpi_desc = dev_get_drvdata(dev); 3433 3434 if (acpi_desc->scrub_mode == HW_ERROR_SCRUB_ON) 3435 acpi_nfit_ars_rescan(acpi_desc, ARS_REQ_LONG); 3436 else 3437 acpi_nfit_ars_rescan(acpi_desc, ARS_REQ_SHORT); 3438 } 3439 3440 void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event) 3441 { 3442 dev_dbg(dev, "event: 0x%x\n", event); 3443 3444 switch (event) { 3445 case NFIT_NOTIFY_UPDATE: 3446 return acpi_nfit_update_notify(dev, handle); 3447 case NFIT_NOTIFY_UC_MEMORY_ERROR: 3448 return acpi_nfit_uc_error_notify(dev, handle); 3449 default: 3450 return; 3451 } 3452 } 3453 EXPORT_SYMBOL_GPL(__acpi_nfit_notify); 3454 3455 static void acpi_nfit_notify(acpi_handle handle, u32 event, void *data) 3456 { > 3457 device_lock(&adev->dev); 3458 __acpi_nfit_notify(&adev->dev, adev->handle, event); 3459 device_unlock(&adev->dev); 3460 } 3461 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests