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@xxxxxxxxx/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@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/202311061141.kEqwdu4M-lkp@xxxxxxxxx/ 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