From: kernel test robot <lkp@intel.com>
To: Vicki Pfau <vi@endrift.com>,
"Rafael J . Wysocki" <rafael@kernel.org>,
linux-acpi@vger.kernel.org, Len Brown <lenb@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev, Vicki Pfau <vi@endrift.com>
Subject: Re: [PATCH v2] ACPI: utils: Make acpi_handle_list dynamically allocated
Date: Mon, 6 Nov 2023 12:26:02 +0800 [thread overview]
Message-ID: <202311061141.kEqwdu4M-lkp@intel.com> (raw)
In-Reply-To: <20230927201725.2339488-1-vi@endrift.com>
Hi Vicki,
kernel test robot noticed the following build warnings:
[auto build test WARNING on linus/master]
[also build test WARNING on v6.6]
[cannot apply to rafael-pm/linux-next next-20231106]
[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/Vicki-Pfau/ACPI-utils-Make-acpi_handle_list-dynamically-allocated/20230928-043202
base: linus/master
patch link: https://lore.kernel.org/r/20230927201725.2339488-1-vi%40endrift.com
patch subject: [PATCH v2] ACPI: utils: Make acpi_handle_list dynamically allocated
config: x86_64-randconfig-123-20230930 (https://download.01.org/0day-ci/archive/20231106/202311061141.kEqwdu4M-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/20231106/202311061141.kEqwdu4M-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/202311061141.kEqwdu4M-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/acpi/thermal.c:310:54: sparse: sparse: incompatible types for operation (!=):
>> drivers/acpi/thermal.c:310:54: sparse: unsigned int *
>> drivers/acpi/thermal.c:310:54: sparse: unsigned int [addressable] [usertype] count
drivers/acpi/thermal.c:377:64: sparse: sparse: incompatible types for operation (!=):
drivers/acpi/thermal.c:377:64: sparse: unsigned int *
drivers/acpi/thermal.c:377:64: sparse: unsigned int [addressable] [usertype] count
vim +310 drivers/acpi/thermal.c
190
191 static void __acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
192 {
193 acpi_status status;
194 unsigned long long tmp;
195 struct acpi_handle_list devices;
196 bool valid = false;
197 int i;
198
199 /* Critical Shutdown */
200 if (flag & ACPI_TRIPS_CRITICAL) {
201 status = acpi_evaluate_integer(tz->device->handle, "_CRT", NULL, &tmp);
202 tz->trips.critical.temperature = tmp;
203 /*
204 * Treat freezing temperatures as invalid as well; some
205 * BIOSes return really low values and cause reboots at startup.
206 * Below zero (Celsius) values clearly aren't right for sure..
207 * ... so lets discard those as invalid.
208 */
209 if (ACPI_FAILURE(status)) {
210 tz->trips.critical.valid = false;
211 acpi_handle_debug(tz->device->handle,
212 "No critical threshold\n");
213 } else if (tmp <= 2732) {
214 pr_info(FW_BUG "Invalid critical threshold (%llu)\n", tmp);
215 tz->trips.critical.valid = false;
216 } else {
217 tz->trips.critical.valid = true;
218 acpi_handle_debug(tz->device->handle,
219 "Found critical threshold [%lu]\n",
220 tz->trips.critical.temperature);
221 }
222 if (tz->trips.critical.valid) {
223 if (crt == -1) {
224 tz->trips.critical.valid = false;
225 } else if (crt > 0) {
226 unsigned long crt_k = celsius_to_deci_kelvin(crt);
227
228 /*
229 * Allow override critical threshold
230 */
231 if (crt_k > tz->trips.critical.temperature)
232 pr_info("Critical threshold %d C\n", crt);
233
234 tz->trips.critical.temperature = crt_k;
235 }
236 }
237 }
238
239 /* Critical Sleep (optional) */
240 if (flag & ACPI_TRIPS_HOT) {
241 status = acpi_evaluate_integer(tz->device->handle, "_HOT", NULL, &tmp);
242 if (ACPI_FAILURE(status)) {
243 tz->trips.hot.valid = false;
244 acpi_handle_debug(tz->device->handle,
245 "No hot threshold\n");
246 } else {
247 tz->trips.hot.temperature = tmp;
248 tz->trips.hot.valid = true;
249 acpi_handle_debug(tz->device->handle,
250 "Found hot threshold [%lu]\n",
251 tz->trips.hot.temperature);
252 }
253 }
254
255 /* Passive (optional) */
256 if (((flag & ACPI_TRIPS_PASSIVE) && tz->trips.passive.trip.valid) ||
257 flag == ACPI_TRIPS_INIT) {
258 valid = tz->trips.passive.trip.valid;
259 if (psv == -1) {
260 status = AE_SUPPORT;
261 } else if (psv > 0) {
262 tmp = celsius_to_deci_kelvin(psv);
263 status = AE_OK;
264 } else {
265 status = acpi_evaluate_integer(tz->device->handle,
266 "_PSV", NULL, &tmp);
267 }
268
269 if (ACPI_FAILURE(status)) {
270 tz->trips.passive.trip.valid = false;
271 } else {
272 tz->trips.passive.trip.temperature = tmp;
273 tz->trips.passive.trip.valid = true;
274 if (flag == ACPI_TRIPS_INIT) {
275 status = acpi_evaluate_integer(tz->device->handle,
276 "_TC1", NULL, &tmp);
277 if (ACPI_FAILURE(status))
278 tz->trips.passive.trip.valid = false;
279 else
280 tz->trips.passive.tc1 = tmp;
281
282 status = acpi_evaluate_integer(tz->device->handle,
283 "_TC2", NULL, &tmp);
284 if (ACPI_FAILURE(status))
285 tz->trips.passive.trip.valid = false;
286 else
287 tz->trips.passive.tc2 = tmp;
288
289 status = acpi_evaluate_integer(tz->device->handle,
290 "_TSP", NULL, &tmp);
291 if (ACPI_FAILURE(status))
292 tz->trips.passive.trip.valid = false;
293 else
294 tz->trips.passive.tsp = tmp;
295 }
296 }
297 }
298 if ((flag & ACPI_TRIPS_DEVICES) && tz->trips.passive.trip.valid) {
299 memset(&devices, 0, sizeof(struct acpi_handle_list));
300 status = acpi_evaluate_reference(tz->device->handle, "_PSL",
301 NULL, &devices);
302 if (ACPI_FAILURE(status)) {
303 acpi_handle_info(tz->device->handle,
304 "Invalid passive threshold\n");
305 tz->trips.passive.trip.valid = false;
306 } else {
307 tz->trips.passive.trip.valid = true;
308 }
309
> 310 if (&tz->trips.passive.devices.count != devices.count ||
311 memcmp(tz->trips.passive.devices.handles,
312 devices.handles, sizeof(acpi_handle) * devices.count)) {
313 kfree(tz->trips.passive.devices.handles);
314 memcpy(&tz->trips.passive.devices, &devices,
315 sizeof(struct acpi_handle_list));
316 ACPI_THERMAL_TRIPS_EXCEPTION(flag, tz, "device");
317 }
318 }
319 if ((flag & ACPI_TRIPS_PASSIVE) || (flag & ACPI_TRIPS_DEVICES)) {
320 if (valid != tz->trips.passive.trip.valid)
321 ACPI_THERMAL_TRIPS_EXCEPTION(flag, tz, "state");
322 }
323
324 /* Active (optional) */
325 for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++) {
326 char name[5] = { '_', 'A', 'C', ('0' + i), '\0' };
327 valid = tz->trips.active[i].trip.valid;
328
329 if (act == -1)
330 break; /* disable all active trip points */
331
332 if (flag == ACPI_TRIPS_INIT || ((flag & ACPI_TRIPS_ACTIVE) &&
333 tz->trips.active[i].trip.valid)) {
334 status = acpi_evaluate_integer(tz->device->handle,
335 name, NULL, &tmp);
336 if (ACPI_FAILURE(status)) {
337 tz->trips.active[i].trip.valid = false;
338 if (i == 0)
339 break;
340
341 if (act <= 0)
342 break;
343
344 if (i == 1)
345 tz->trips.active[0].trip.temperature =
346 celsius_to_deci_kelvin(act);
347 else
348 /*
349 * Don't allow override higher than
350 * the next higher trip point
351 */
352 tz->trips.active[i-1].trip.temperature =
353 min_t(unsigned long,
354 tz->trips.active[i-2].trip.temperature,
355 celsius_to_deci_kelvin(act));
356
357 break;
358 } else {
359 tz->trips.active[i].trip.temperature = tmp;
360 tz->trips.active[i].trip.valid = true;
361 }
362 }
363
364 name[2] = 'L';
365 if ((flag & ACPI_TRIPS_DEVICES) && tz->trips.active[i].trip.valid) {
366 memset(&devices, 0, sizeof(struct acpi_handle_list));
367 status = acpi_evaluate_reference(tz->device->handle,
368 name, NULL, &devices);
369 if (ACPI_FAILURE(status)) {
370 acpi_handle_info(tz->device->handle,
371 "Invalid active%d threshold\n", i);
372 tz->trips.active[i].trip.valid = false;
373 } else {
374 tz->trips.active[i].trip.valid = true;
375 }
376
377 if (&tz->trips.active[i].devices.count != devices.count ||
378 memcmp(tz->trips.active[i].devices.handles,
379 devices.handles, sizeof(acpi_handle) * devices.count)) {
380 kfree(tz->trips.active[i].devices.handles);
381 memcpy(&tz->trips.active[i].devices, &devices,
382 sizeof(struct acpi_handle_list));
383 ACPI_THERMAL_TRIPS_EXCEPTION(flag, tz, "device");
384 }
385 }
386 if ((flag & ACPI_TRIPS_ACTIVE) || (flag & ACPI_TRIPS_DEVICES))
387 if (valid != tz->trips.active[i].trip.valid)
388 ACPI_THERMAL_TRIPS_EXCEPTION(flag, tz, "state");
389
390 if (!tz->trips.active[i].trip.valid)
391 break;
392 }
393
394 if (flag & ACPI_TRIPS_DEVICES) {
395 memset(&devices, 0, sizeof(devices));
396 status = acpi_evaluate_reference(tz->device->handle, "_TZD",
397 NULL, &devices);
398 if (ACPI_SUCCESS(status) && (tz->devices.count != devices.count ||
399 memcmp(tz->devices.handles, devices.handles,
400 sizeof(acpi_handle) * devices.count))) {
401 kfree(tz->devices.handles);
402 tz->devices = devices;
403 ACPI_THERMAL_TRIPS_EXCEPTION(flag, tz, "device");
404 }
405 }
406 }
407
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
prev parent reply other threads:[~2023-11-06 4:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-27 20:17 [PATCH v2] ACPI: utils: Make acpi_handle_list dynamically allocated Vicki Pfau
2023-09-28 15:40 ` Rafael J. Wysocki
2023-09-28 21:06 ` Vicki Pfau
2023-11-06 4:26 ` kernel test robot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202311061141.kEqwdu4M-lkp@intel.com \
--to=lkp@intel.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=rafael@kernel.org \
--cc=vi@endrift.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox