Re: [PATCH v5 1/8] i3c: add target mode support

kernel test robot
2024-02-02T17:30:30Z

Hi Frank,

kernel test robot noticed the following build errors:

[auto build test ERROR on tty/tty-testing]
[also build test ERROR on tty/tty-next tty/tty-linus robh/for-next linus/master v6.8-rc2 next-20240202]
[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/Frank-Li/i3c-add-target-mode-support/20240130-035826
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
patch link: https://lore.kernel.org/r/20240129195321.229867-2-Frank.Li%40nxp.com
patch subject: [PATCH v5 1/8] i3c: add target mode support
config: x86_64-randconfig-104-20240202 (https://download.01.org/0day-ci/archive/20240203/202402030100.hmViPmOK-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240203/202402030100.hmViPmOK-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402030100.hmViPmOK-lkp@intel.com/

All errors (new ones prefixed by >>):

ld: drivers/i3c/target.o: in function `i3c_target_ctrl_destroy':
>> drivers/i3c/target.c:182: undefined reference to `i3c_target_cfs_remove_ctrl_group'
ld: drivers/i3c/target.o: in function `__i3c_target_func_register_driver':
>> drivers/i3c/target.c:406: undefined reference to `i3c_target_cfs_add_func_group'
ld: drivers/i3c/target.o: in function `__i3c_target_ctrl_create':
>> drivers/i3c/target.c:141: undefined reference to `i3c_target_cfs_add_ctrl_group'
ld: drivers/i3c/target.o: in function `i3c_target_ctrl_destroy':
>> drivers/i3c/target.c:182: undefined reference to `i3c_target_cfs_remove_ctrl_group'

vim +182 drivers/i3c/target.c

104
105 /**
106 * __i3c_target_ctrl_create() - create a new target controller device
107 * @dev: device that is creating the new target controller
108 * @ops: function pointers for performing target controller operations
109 * @owner: the owner of the module that creates the target controller device
110 *
111 * Return: Pointer to struct i3c_target_ctrl
112 */
113 struct i3c_target_ctrl *
114 __i3c_target_ctrl_create(struct device *dev, const struct i3c_target_ctrl_ops *ops,
115 struct module *owner)
116 {
117 struct i3c_target_ctrl *ctrl;
118 int ret;
119
120 if (WARN_ON(!dev))
121 return ERR_PTR(-EINVAL);
122
123 ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
124 if (!ctrl)
125 return ERR_PTR(-ENOMEM);
126
127 device_initialize(&ctrl->dev);
128 ctrl->dev.class = i3c_target_ctrl_class;
129 ctrl->dev.parent = dev;
130 ctrl->dev.release = i3c_target_ctrl_release;
131 ctrl->ops = ops;
132
133 ret = dev_set_name(&ctrl->dev, "%s", dev_name(dev));
134 if (ret)
135 goto put_dev;
136
137 ret = device_add(&ctrl->dev);
138 if (ret)
139 goto put_dev;
140
> 141 ctrl->group = i3c_target_cfs_add_ctrl_group(ctrl);
142 if (!ctrl->group)
143 goto put_dev;
144
145 return ctrl;
146
147 put_dev:
148 put_device(&ctrl->dev);
149 kfree(ctrl);
150
151 return ERR_PTR(ret);
152 }
153 EXPORT_SYMBOL_GPL(__i3c_target_ctrl_create);
154
155 /**
156 * devm_i3c_target_ctrl_destroy() - destroy the target controller device
157 * @dev: device that hat has to be destroy
158 * @ctrl: the target controller device that has to be destroy
159 *
160 * Invoke to create a new target controller device and add it to i3c_target class. While at that, it
161 * also associates the device with the i3c_target using devres. On driver detach, release function
162 * is invoked on the devres data, then devres data is freed.
163 */
164 void devm_i3c_target_ctrl_destroy(struct device *dev, struct i3c_target_ctrl *ctrl)
165 {
166 int r;
167
168 r = devres_destroy(dev, devm_i3c_target_ctrl_release, devm_i3c_target_ctrl_match,
169 ctrl);
170 dev_WARN_ONCE(dev, r, "couldn't find I3C controller resource\n");
171 }
172 EXPORT_SYMBOL_GPL(devm_i3c_target_ctrl_destroy);
173
174 /**
175 * i3c_target_ctrl_destroy() - destroy the target controller device
176 * @ctrl: the target controller device that has to be destroyed
177 *
178 * Invoke to destroy the I3C target device
179 */
180 void i3c_target_ctrl_destroy(struct i3c_target_ctrl *ctrl)
181 {
> 182 i3c_target_cfs_remove_ctrl_group(ctrl->group);
183 device_unregister(&ctrl->dev);
184 }
185 EXPORT_SYMBOL_GPL(i3c_target_ctrl_destroy);
186

--
0-DAY CI Kernel Test Service