Hi Lukasz, [FYI, it's a private test report for your RFC patch.] [auto build test ERROR on pm/linux-next] [also build test ERROR on linux/master linus/master v5.13-rc7 next-20210621] [cannot apply to daniel.lezcano/clockevents/next] [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] url: https://github.com/0day-ci/linux/commits/Lukasz-Luba/Introduce-Active-Stats-framework-with-CPU-performance-statistics/20210622-160145 base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next config: sh-allmodconfig (attached as .config) compiler: sh4-linux-gcc (GCC) 9.3.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/0day-ci/linux/commit/0df5dd13ee23cf287d3045ee078cb727c184fece git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Lukasz-Luba/Introduce-Active-Stats-framework-with-CPU-performance-statistics/20210622-160145 git checkout 0df5dd13ee23cf287d3045ee078cb727c184fece # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sh If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): drivers/thermal/cpufreq_cooling.c: In function '__cpufreq_cooling_register': >> drivers/thermal/cpufreq_cooling.c:720:2: error: implicit declaration of function 'clean_cpu_monitoring' [-Werror=implicit-function-declaration] 720 | clean_cpu_monitoring(cpufreq_cdev); | ^~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for SND_ATMEL_SOC_PDC Depends on SOUND && !UML && SND && SND_SOC && SND_ATMEL_SOC && HAS_DMA Selected by - SND_ATMEL_SOC_SSC && SOUND && !UML && SND && SND_SOC && SND_ATMEL_SOC - SND_ATMEL_SOC_SSC_PDC && SOUND && !UML && SND && SND_SOC && SND_ATMEL_SOC && ATMEL_SSC vim +/clean_cpu_monitoring +720 drivers/thermal/cpufreq_cooling.c 607 608 /** 609 * __cpufreq_cooling_register - helper function to create cpufreq cooling device 610 * @np: a valid struct device_node to the cooling device device tree node 611 * @policy: cpufreq policy 612 * Normally this should be same as cpufreq policy->related_cpus. 613 * @em: Energy Model of the cpufreq policy 614 * 615 * This interface function registers the cpufreq cooling device with the name 616 * "thermal-cpufreq-%x". This api can support multiple instances of cpufreq 617 * cooling devices. It also gives the opportunity to link the cooling device 618 * with a device tree node, in order to bind it via the thermal DT code. 619 * 620 * Return: a valid struct thermal_cooling_device pointer on success, 621 * on failure, it returns a corresponding ERR_PTR(). 622 */ 623 static struct thermal_cooling_device * 624 __cpufreq_cooling_register(struct device_node *np, 625 struct cpufreq_policy *policy, 626 struct em_perf_domain *em) 627 { 628 struct thermal_cooling_device *cdev; 629 struct cpufreq_cooling_device *cpufreq_cdev; 630 unsigned int i; 631 struct device *dev; 632 int ret; 633 struct thermal_cooling_device_ops *cooling_ops; 634 char *name; 635 636 dev = get_cpu_device(policy->cpu); 637 if (unlikely(!dev)) { 638 pr_warn("No cpu device for cpu %d\n", policy->cpu); 639 return ERR_PTR(-ENODEV); 640 } 641 642 if (IS_ERR_OR_NULL(policy)) { 643 pr_err("%s: cpufreq policy isn't valid: %p\n", __func__, policy); 644 return ERR_PTR(-EINVAL); 645 } 646 647 i = cpufreq_table_count_valid_entries(policy); 648 if (!i) { 649 pr_debug("%s: CPUFreq table not found or has no valid entries\n", 650 __func__); 651 return ERR_PTR(-ENODEV); 652 } 653 654 cpufreq_cdev = kzalloc(sizeof(*cpufreq_cdev), GFP_KERNEL); 655 if (!cpufreq_cdev) 656 return ERR_PTR(-ENOMEM); 657 658 cpufreq_cdev->policy = policy; 659 660 ret = allocate_idle_time(cpufreq_cdev); 661 if (ret) { 662 cdev = ERR_PTR(ret); 663 goto free_cdev; 664 } 665 666 /* max_level is an index, not a counter */ 667 cpufreq_cdev->max_level = i - 1; 668 669 cooling_ops = &cpufreq_cooling_ops; 670 671 #ifdef CONFIG_THERMAL_GOV_POWER_ALLOCATOR 672 if (em_is_sane(cpufreq_cdev, em)) { 673 cpufreq_cdev->em = em; 674 cooling_ops->get_requested_power = cpufreq_get_requested_power; 675 cooling_ops->state2power = cpufreq_state2power; 676 cooling_ops->power2state = cpufreq_power2state; 677 678 ret = setup_cpu_monitoring(cpufreq_cdev); 679 if (ret) { 680 pr_err("%s: failed to alloc active_stats\n", __func__); 681 cdev = ERR_PTR(-EINVAL); 682 goto free_cdev; 683 } 684 } else 685 #endif 686 if (policy->freq_table_sorted == CPUFREQ_TABLE_UNSORTED) { 687 pr_err("%s: unsorted frequency tables are not supported\n", 688 __func__); 689 cdev = ERR_PTR(-EINVAL); 690 goto free_idle_time; 691 } 692 693 ret = freq_qos_add_request(&policy->constraints, 694 &cpufreq_cdev->qos_req, FREQ_QOS_MAX, 695 get_state_freq(cpufreq_cdev, 0)); 696 if (ret < 0) { 697 pr_err("%s: Failed to add freq constraint (%d)\n", __func__, 698 ret); 699 cdev = ERR_PTR(ret); 700 goto remove_active_stats; 701 } 702 703 cdev = ERR_PTR(-ENOMEM); 704 name = kasprintf(GFP_KERNEL, "cpufreq-%s", dev_name(dev)); 705 if (!name) 706 goto remove_qos_req; 707 708 cdev = thermal_of_cooling_device_register(np, name, cpufreq_cdev, 709 cooling_ops); 710 kfree(name); 711 712 if (IS_ERR(cdev)) 713 goto remove_qos_req; 714 715 return cdev; 716 717 remove_qos_req: 718 freq_qos_remove_request(&cpufreq_cdev->qos_req); 719 remove_active_stats: > 720 clean_cpu_monitoring(cpufreq_cdev); 721 free_idle_time: 722 free_idle_time(cpufreq_cdev); 723 free_cdev: 724 kfree(cpufreq_cdev); 725 return cdev; 726 } 727 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org