Hi Christian, kernel test robot noticed the following build errors: [auto build test ERROR on robh/for-next] [also build test ERROR on linus/master v6.11-rc1 next-20240802] [cannot apply to mtd/mtd/next mtd/mtd/fixes] [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/Christian-Marangi/dt-bindings-nvme-Document-nvme-card-compatible/20240804-194357 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next patch link: https://lore.kernel.org/r/20240804114108.1893-3-ansuelsmth%40gmail.com patch subject: [PATCH 2/6] nvme: assign of_node to nvme device config: i386-buildonly-randconfig-005-20240804 (https://download.01.org/0day-ci/archive/20240804/202408042203.CNpuv8Wt-lkp@xxxxxxxxx/config) compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240804/202408042203.CNpuv8Wt-lkp@xxxxxxxxx/reproduce) 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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202408042203.CNpuv8Wt-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): >> drivers/nvme/host/core.c:4654:2: error: call to undeclared function 'of_node_put'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 4654 | of_node_put(ctrl->device->of_node); | ^ >> drivers/nvme/host/core.c:4775:26: error: call to undeclared function 'of_get_compatible_child'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 4775 | ctrl->device->of_node = of_get_compatible_child(ctrl->dev->of_node, | ^ >> drivers/nvme/host/core.c:4775:24: error: incompatible integer to pointer conversion assigning to 'struct device_node *' from 'int' [-Wint-conversion] 4775 | ctrl->device->of_node = of_get_compatible_child(ctrl->dev->of_node, | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4776 | "nvme-card"); | ~~~~~~~~~~~~ 3 errors generated. vim +/of_node_put +4654 drivers/nvme/host/core.c 4648 4649 void nvme_uninit_ctrl(struct nvme_ctrl *ctrl) 4650 { 4651 nvme_hwmon_exit(ctrl); 4652 nvme_fault_inject_fini(&ctrl->fault_inject); 4653 dev_pm_qos_hide_latency_tolerance(ctrl->device); > 4654 of_node_put(ctrl->device->of_node); 4655 cdev_device_del(&ctrl->cdev, ctrl->device); 4656 nvme_put_ctrl(ctrl); 4657 } 4658 EXPORT_SYMBOL_GPL(nvme_uninit_ctrl); 4659 4660 static void nvme_free_cels(struct nvme_ctrl *ctrl) 4661 { 4662 struct nvme_effects_log *cel; 4663 unsigned long i; 4664 4665 xa_for_each(&ctrl->cels, i, cel) { 4666 xa_erase(&ctrl->cels, i); 4667 kfree(cel); 4668 } 4669 4670 xa_destroy(&ctrl->cels); 4671 } 4672 4673 static void nvme_free_ctrl(struct device *dev) 4674 { 4675 struct nvme_ctrl *ctrl = 4676 container_of(dev, struct nvme_ctrl, ctrl_device); 4677 struct nvme_subsystem *subsys = ctrl->subsys; 4678 4679 if (!subsys || ctrl->instance != subsys->instance) 4680 ida_free(&nvme_instance_ida, ctrl->instance); 4681 key_put(ctrl->tls_key); 4682 nvme_free_cels(ctrl); 4683 nvme_mpath_uninit(ctrl); 4684 cleanup_srcu_struct(&ctrl->srcu); 4685 nvme_auth_stop(ctrl); 4686 nvme_auth_free(ctrl); 4687 __free_page(ctrl->discard_page); 4688 free_opal_dev(ctrl->opal_dev); 4689 4690 if (subsys) { 4691 mutex_lock(&nvme_subsystems_lock); 4692 list_del(&ctrl->subsys_entry); 4693 sysfs_remove_link(&subsys->dev.kobj, dev_name(ctrl->device)); 4694 mutex_unlock(&nvme_subsystems_lock); 4695 } 4696 4697 ctrl->ops->free_ctrl(ctrl); 4698 4699 if (subsys) 4700 nvme_put_subsystem(subsys); 4701 } 4702 4703 /* 4704 * Initialize a NVMe controller structures. This needs to be called during 4705 * earliest initialization so that we have the initialized structured around 4706 * during probing. 4707 * 4708 * On success, the caller must use the nvme_put_ctrl() to release this when 4709 * needed, which also invokes the ops->free_ctrl() callback. 4710 */ 4711 int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev, 4712 const struct nvme_ctrl_ops *ops, unsigned long quirks) 4713 { 4714 int ret; 4715 4716 WRITE_ONCE(ctrl->state, NVME_CTRL_NEW); 4717 ctrl->passthru_err_log_enabled = false; 4718 clear_bit(NVME_CTRL_FAILFAST_EXPIRED, &ctrl->flags); 4719 spin_lock_init(&ctrl->lock); 4720 mutex_init(&ctrl->namespaces_lock); 4721 4722 ret = init_srcu_struct(&ctrl->srcu); 4723 if (ret) 4724 return ret; 4725 4726 mutex_init(&ctrl->scan_lock); 4727 INIT_LIST_HEAD(&ctrl->namespaces); 4728 xa_init(&ctrl->cels); 4729 ctrl->dev = dev; 4730 ctrl->ops = ops; 4731 ctrl->quirks = quirks; 4732 ctrl->numa_node = NUMA_NO_NODE; 4733 INIT_WORK(&ctrl->scan_work, nvme_scan_work); 4734 INIT_WORK(&ctrl->async_event_work, nvme_async_event_work); 4735 INIT_WORK(&ctrl->fw_act_work, nvme_fw_act_work); 4736 INIT_WORK(&ctrl->delete_work, nvme_delete_ctrl_work); 4737 init_waitqueue_head(&ctrl->state_wq); 4738 4739 INIT_DELAYED_WORK(&ctrl->ka_work, nvme_keep_alive_work); 4740 INIT_DELAYED_WORK(&ctrl->failfast_work, nvme_failfast_work); 4741 memset(&ctrl->ka_cmd, 0, sizeof(ctrl->ka_cmd)); 4742 ctrl->ka_cmd.common.opcode = nvme_admin_keep_alive; 4743 ctrl->ka_last_check_time = jiffies; 4744 4745 BUILD_BUG_ON(NVME_DSM_MAX_RANGES * sizeof(struct nvme_dsm_range) > 4746 PAGE_SIZE); 4747 ctrl->discard_page = alloc_page(GFP_KERNEL); 4748 if (!ctrl->discard_page) { 4749 ret = -ENOMEM; 4750 goto out; 4751 } 4752 4753 ret = ida_alloc(&nvme_instance_ida, GFP_KERNEL); 4754 if (ret < 0) 4755 goto out; 4756 ctrl->instance = ret; 4757 4758 ret = nvme_auth_init_ctrl(ctrl); 4759 if (ret) 4760 goto out_release_instance; 4761 4762 nvme_mpath_init_ctrl(ctrl); 4763 4764 device_initialize(&ctrl->ctrl_device); 4765 ctrl->device = &ctrl->ctrl_device; 4766 ctrl->device->devt = MKDEV(MAJOR(nvme_ctrl_base_chr_devt), 4767 ctrl->instance); 4768 ctrl->device->class = &nvme_class; 4769 ctrl->device->parent = ctrl->dev; 4770 if (ops->dev_attr_groups) 4771 ctrl->device->groups = ops->dev_attr_groups; 4772 else 4773 ctrl->device->groups = nvme_dev_attr_groups; 4774 ctrl->device->release = nvme_free_ctrl; > 4775 ctrl->device->of_node = of_get_compatible_child(ctrl->dev->of_node, 4776 "nvme-card"); 4777 dev_set_drvdata(ctrl->device, ctrl); 4778 4779 return ret; 4780 4781 out_release_instance: 4782 ida_free(&nvme_instance_ida, ctrl->instance); 4783 out: 4784 if (ctrl->discard_page) 4785 __free_page(ctrl->discard_page); 4786 cleanup_srcu_struct(&ctrl->srcu); 4787 return ret; 4788 } 4789 EXPORT_SYMBOL_GPL(nvme_init_ctrl); 4790 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki