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-Sta...
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/0df5dd13ee23cf287d3045ee078cb727c...
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 <lkp(a)intel.com>
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@lists.01.org