Re: [PATCH v1 09/17] thermal: Add a thermal zone id accessor

From: kernel test robot
Date: Sun Feb 19 2023 - 12:15:49 EST


Hi Daniel,

I love your patch! Yet something to improve:

[auto build test ERROR on rafael-pm/thermal]
[also build test ERROR on next-20230217]
[cannot apply to groeck-staging/hwmon-next tegra/for-next linus/master v6.2-rc8]
[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/Daniel-Lezcano/thermal-core-Add-a-thermal-zone-devdata-accessor/20230219-224155
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git thermal
patch link: https://lore.kernel.org/r/20230219143657.241542-10-daniel.lezcano%40linaro.org
patch subject: [PATCH v1 09/17] thermal: Add a thermal zone id accessor
config: csky-randconfig-r005-20230219 (https://download.01.org/0day-ci/archive/20230220/202302200137.srsrI6dW-lkp@xxxxxxxxx/config)
compiler: csky-linux-gcc (GCC) 12.1.0
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
# https://github.com/intel-lab-lkp/linux/commit/37b2cf4cee949fd910b54e281577cb71b2df8842
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Daniel-Lezcano/thermal-core-Add-a-thermal-zone-devdata-accessor/20230219-224155
git checkout 37b2cf4cee949fd910b54e281577cb71b2df8842
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=csky olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=csky SHELL=/bin/bash drivers/hwmon/

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/202302200137.srsrI6dW-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

drivers/hwmon/scmi-hwmon.c: In function 'scmi_hwmon_thermal_get_temp':
drivers/hwmon/scmi-hwmon.c:144:49: error: implicit declaration of function 'thermal_zone_device_get_data'; did you mean 'thermal_zone_device_enable'? [-Werror=implicit-function-declaration]
144 | struct scmi_thermal_sensor *th_sensor = thermal_zone_device_get_data(tz);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| thermal_zone_device_enable
drivers/hwmon/scmi-hwmon.c:144:49: warning: initialization of 'struct scmi_thermal_sensor *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
In file included from include/linux/device.h:15,
from include/linux/scmi_protocol.h:12,
from drivers/hwmon/scmi-hwmon.c:11:
drivers/hwmon/scmi-hwmon.c: In function 'scmi_thermal_sensor_register':
>> drivers/hwmon/scmi-hwmon.c:223:39: error: implicit declaration of function 'thermal_zone_device_get_id'; did you mean 'thermal_zone_device_enable'? [-Werror=implicit-function-declaration]
223 | sensor->name, thermal_zone_device_get_id(tzd));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:129:48: note: in definition of macro 'dev_printk'
129 | _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/hwmon/scmi-hwmon.c:222:17: note: in expansion of macro 'dev_dbg'
222 | dev_dbg(dev, "Sensor '%s' attached to thermal zone ID:%d\n",
| ^~~~~~~
cc1: some warnings being treated as errors


vim +223 drivers/hwmon/scmi-hwmon.c

138
139 static int scmi_hwmon_thermal_get_temp(struct thermal_zone_device *tz,
140 int *temp)
141 {
142 int ret;
143 long value;
> 144 struct scmi_thermal_sensor *th_sensor = thermal_zone_device_get_data(tz);
145
146 ret = scmi_hwmon_read_scaled_value(th_sensor->ph, th_sensor->info,
147 &value);
148 if (!ret)
149 *temp = value;
150
151 return ret;
152 }
153
154 static const struct thermal_zone_device_ops scmi_hwmon_thermal_ops = {
155 .get_temp = scmi_hwmon_thermal_get_temp,
156 };
157
158 static int scmi_hwmon_add_chan_info(struct hwmon_channel_info *scmi_hwmon_chan,
159 struct device *dev, int num,
160 enum hwmon_sensor_types type, u32 config)
161 {
162 int i;
163 u32 *cfg = devm_kcalloc(dev, num + 1, sizeof(*cfg), GFP_KERNEL);
164
165 if (!cfg)
166 return -ENOMEM;
167
168 scmi_hwmon_chan->type = type;
169 scmi_hwmon_chan->config = cfg;
170 for (i = 0; i < num; i++, cfg++)
171 *cfg = config;
172
173 return 0;
174 }
175
176 static enum hwmon_sensor_types scmi_types[] = {
177 [TEMPERATURE_C] = hwmon_temp,
178 [VOLTAGE] = hwmon_in,
179 [CURRENT] = hwmon_curr,
180 [POWER] = hwmon_power,
181 [ENERGY] = hwmon_energy,
182 };
183
184 static u32 hwmon_attributes[hwmon_max] = {
185 [hwmon_temp] = HWMON_T_INPUT | HWMON_T_LABEL,
186 [hwmon_in] = HWMON_I_INPUT | HWMON_I_LABEL,
187 [hwmon_curr] = HWMON_C_INPUT | HWMON_C_LABEL,
188 [hwmon_power] = HWMON_P_INPUT | HWMON_P_LABEL,
189 [hwmon_energy] = HWMON_E_INPUT | HWMON_E_LABEL,
190 };
191
192 static int scmi_thermal_sensor_register(struct device *dev,
193 const struct scmi_protocol_handle *ph,
194 const struct scmi_sensor_info *sensor)
195 {
196 struct scmi_thermal_sensor *th_sensor;
197 struct thermal_zone_device *tzd;
198
199 th_sensor = devm_kzalloc(dev, sizeof(*th_sensor), GFP_KERNEL);
200 if (!th_sensor)
201 return -ENOMEM;
202
203 th_sensor->ph = ph;
204 th_sensor->info = sensor;
205
206 /*
207 * Try to register a temperature sensor with the Thermal Framework:
208 * skip sensors not defined as part of any thermal zone (-ENODEV) but
209 * report any other errors related to misconfigured zones/sensors.
210 */
211 tzd = devm_thermal_of_zone_register(dev, th_sensor->info->id, th_sensor,
212 &scmi_hwmon_thermal_ops);
213 if (IS_ERR(tzd)) {
214 devm_kfree(dev, th_sensor);
215
216 if (PTR_ERR(tzd) != -ENODEV)
217 return PTR_ERR(tzd);
218
219 dev_dbg(dev, "Sensor '%s' not attached to any thermal zone.\n",
220 sensor->name);
221 } else {
222 dev_dbg(dev, "Sensor '%s' attached to thermal zone ID:%d\n",
> 223 sensor->name, thermal_zone_device_get_id(tzd));
224 }
225
226 return 0;
227 }
228

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests