tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: fbcd4a3032a53350f6d182c9daeaa4c46e65d964 commit: 1ab6383ee94e788fe424d7eac10dc8ec3bfa6828 [2688/3769] ACPI / PPTT: Provide a helper to walk processor containers config: loongarch-randconfig-r112-20240302 (https://download.01.org/0day-ci/archive/20240303/202403031641.WjM6vjTf-lkp@i...) compiler: loongarch64-linux-gcc (GCC) 13.2.0 reproduce: (https://download.01.org/0day-ci/archive/20240303/202403031641.WjM6vjTf-lkp@i...)
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/202403031641.WjM6vjTf-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
drivers/acpi/pptt.c:309:5: sparse: sparse: symbol 'acpi_pptt_for_each_container' was not declared. Should it be static?
vim +/acpi_pptt_for_each_container +309 drivers/acpi/pptt.c
297 298 /** 299 * acpi_pptt_for_each_container() - Iterate over all processor containers 300 * 301 * Not all 'Processor' entries in the PPTT are either a CPU or a Processor 302 * Container, they may exist purely to describe a Private resource. CPUs 303 * have to be leaves, so a Processor Container is a non-leaf that has the 304 * 'ACPI Processor ID valid' flag set. 305 * 306 * Return: 0 for a complete walk, or the first non-zero value from the callback 307 * that stopped the walk. 308 */
309 int acpi_pptt_for_each_container(acpi_pptt_cpu_callback_t callback, void *arg)
310 { 311 struct acpi_pptt_processor *cpu_node; 312 struct acpi_table_header *table_hdr; 313 struct acpi_subtable_header *entry; 314 bool leaf_flag, has_leaf_flag = false; 315 unsigned long table_end; 316 acpi_status status; 317 u32 proc_sz; 318 int ret = 0; 319 320 status = acpi_get_table(ACPI_SIG_PPTT, 0, &table_hdr); 321 if (ACPI_FAILURE(status)) 322 return 0; 323 324 if (table_hdr->revision > 1) 325 has_leaf_flag = true; 326 327 table_end = (unsigned long)table_hdr + table_hdr->length; 328 entry = ACPI_ADD_PTR(struct acpi_subtable_header, table_hdr, 329 sizeof(struct acpi_table_pptt)); 330 proc_sz = sizeof(struct acpi_pptt_processor); 331 while ((unsigned long)entry + proc_sz < table_end) { 332 cpu_node = (struct acpi_pptt_processor *)entry; 333 if (entry->type == ACPI_PPTT_TYPE_PROCESSOR && 334 cpu_node->flags & ACPI_PPTT_ACPI_PROCESSOR_ID_VALID) 335 { 336 leaf_flag = cpu_node->flags & ACPI_PPTT_ACPI_LEAF_NODE; 337 if ((has_leaf_flag && !leaf_flag) || 338 (!has_leaf_flag && !acpi_pptt_leaf_node(table_hdr, cpu_node))) 339 { 340 ret = callback(cpu_node, arg); 341 if (ret) 342 break; 343 } 344 } 345 entry = ACPI_ADD_PTR(struct acpi_subtable_header, entry, 346 entry->length); 347 } 348 349 acpi_put_table(table_hdr); 350 351 return ret; 352 } 353