Hi Sam, [auto build test ERROR on pm/linux-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base] url: https://github.com/0day-ci/linux/commits/B-lint-Czobor/cpufreq-interactive-New-interactive-governor/20151028-020715 config: sparc64-allyesconfig (attached as .config) reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=sparc64 All errors (new ones prefixed by >>): drivers/cpufreq/cpufreq_interactive.c: In function 'store_hispeed_freq': drivers/cpufreq/cpufreq_interactive.c:637:2: error: implicit declaration of function 'strict_strtoull' [-Werror=implicit-function-declaration] ret = strict_strtoull(buf, 0, &val); ^ drivers/cpufreq/cpufreq_interactive.c: In function 'store_go_hispeed_load': drivers/cpufreq/cpufreq_interactive.c:660:2: error: implicit declaration of function 'strict_strtoul' [-Werror=implicit-function-declaration] ret = strict_strtoul(buf, 0, &val); ^ drivers/cpufreq/cpufreq_interactive.c: In function 'cpufreq_interactive_idle_notifier': drivers/cpufreq/cpufreq_interactive.c:827:7: error: 'IDLE_START' undeclared (first use in this function) case IDLE_START: ^ drivers/cpufreq/cpufreq_interactive.c:827:7: note: each undeclared identifier is reported only once for each function it appears in drivers/cpufreq/cpufreq_interactive.c:830:7: error: 'IDLE_END' undeclared (first use in this function) case IDLE_END: ^ drivers/cpufreq/cpufreq_interactive.c: In function 'cpufreq_governor_interactive': drivers/cpufreq/cpufreq_interactive.c:895:3: error: implicit declaration of function 'idle_notifier_register' [-Werror=implicit-function-declaration] idle_notifier_register(&cpufreq_interactive_idle_nb); ^ >> drivers/cpufreq/cpufreq_interactive.c:918:3: error: implicit declaration of function 'idle_notifier_unregister' [-Werror=implicit-function-declaration] idle_notifier_unregister(&cpufreq_interactive_idle_nb); ^ cc1: some warnings being treated as errors vim +/idle_notifier_unregister +918 drivers/cpufreq/cpufreq_interactive.c 821 822 static int cpufreq_interactive_idle_notifier(struct notifier_block *nb, 823 unsigned long val, 824 void *data) 825 { 826 switch (val) { > 827 case IDLE_START: 828 cpufreq_interactive_idle_start(); 829 break; 830 case IDLE_END: 831 cpufreq_interactive_idle_end(); 832 break; 833 } 834 835 return 0; 836 } 837 838 static struct notifier_block cpufreq_interactive_idle_nb = { 839 .notifier_call = cpufreq_interactive_idle_notifier, 840 }; 841 842 static int cpufreq_governor_interactive(struct cpufreq_policy *policy, 843 unsigned int event) 844 { 845 int rc; 846 unsigned int j; 847 struct cpufreq_interactive_cpuinfo *pcpu; 848 struct cpufreq_frequency_table *freq_table; 849 850 switch (event) { 851 case CPUFREQ_GOV_START: 852 if (!cpu_online(policy->cpu)) 853 return -EINVAL; 854 855 freq_table = 856 cpufreq_frequency_get_table(policy->cpu); 857 858 for_each_cpu(j, policy->cpus) { 859 pcpu = &per_cpu(cpuinfo, j); 860 pcpu->policy = policy; 861 pcpu->target_freq = policy->cur; 862 pcpu->freq_table = freq_table; 863 pcpu->target_set_time_in_idle = 864 get_cpu_idle_time_us(j, 865 &pcpu->target_set_time); 866 pcpu->floor_freq = pcpu->target_freq; 867 pcpu->floor_validate_time = 868 pcpu->target_set_time; 869 pcpu->hispeed_validate_time = 870 pcpu->target_set_time; 871 pcpu->governor_enabled = 1; 872 smp_wmb(); 873 } 874 875 if (!hispeed_freq) 876 hispeed_freq = policy->max; 877 878 /* 879 * Do not register the idle hook and create sysfs 880 * entries if we have already done so. 881 */ 882 if (atomic_inc_return(&active_count) > 1) 883 return 0; 884 885 rc = sysfs_create_group(cpufreq_global_kobject, 886 &interactive_attr_group); 887 if (rc) 888 return rc; 889 890 rc = input_register_handler(&cpufreq_interactive_input_handler); 891 if (rc) 892 pr_warn("%s: failed to register input handler\n", 893 __func__); 894 895 idle_notifier_register(&cpufreq_interactive_idle_nb); 896 break; 897 898 case CPUFREQ_GOV_STOP: 899 for_each_cpu(j, policy->cpus) { 900 pcpu = &per_cpu(cpuinfo, j); 901 pcpu->governor_enabled = 0; 902 smp_wmb(); 903 del_timer_sync(&pcpu->cpu_timer); 904 905 /* 906 * Reset idle exit time since we may cancel the timer 907 * before it can run after the last idle exit time, 908 * to avoid tripping the check in idle exit for a timer 909 * that is trying to run. 910 */ 911 pcpu->idle_exit_time = 0; 912 } 913 914 flush_work(&freq_scale_down_work); 915 if (atomic_dec_return(&active_count) > 0) 916 return 0; 917 > 918 idle_notifier_unregister(&cpufreq_interactive_idle_nb); 919 input_unregister_handler(&cpufreq_interactive_input_handler); 920 sysfs_remove_group(cpufreq_global_kobject, 921 &interactive_attr_group); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation