From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3100755440088757573==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [PATCH v5 08/13] ACPI: add perf low power callback Date: Thu, 27 Jan 2022 12:58:31 +0800 Message-ID: <202201271224.g4ALolMJ-lkp@intel.com> In-Reply-To: <20220126233454.3362047-9-eranian@google.com> List-Id: --===============3100755440088757573== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Stephane, Thank you for the patch! Yet something to improve: [auto build test ERROR on next-20220125] [cannot apply to tip/x86/core rafael-pm/linux-next tip/perf/core v5.17-rc1 = v5.16 v5.16-rc8 v5.17-rc1] [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/Stephane-Eranian/perf-core= -add-perf_clear_branch_entry_bitfields-helper/20220127-083516 base: d25ee88530253138d0b20d43511ca5acbda4e9f7 config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/202201= 27/202201271224.g4ALolMJ-lkp(a)intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=3D1 build): # https://github.com/0day-ci/linux/commit/fe7943af61c65b96cff36b838= 8246531402e7f26 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Stephane-Eranian/perf-core-add-per= f_clear_branch_entry_bitfields-helper/20220127-083516 git checkout fe7943af61c65b96cff36b8388246531402e7f26 # save the config file to linux build tree mkdir build_dir make W=3D1 O=3Dbuild_dir ARCH=3Dx86_64 SHELL=3D/bin/bash drivers/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): drivers/acpi/acpi_pad.c: In function 'power_saving_thread': >> drivers/acpi/acpi_pad.c:168:4: error: implicit declaration of function '= perf_lopwr_cb' [-Werror=3Dimplicit-function-declaration] 168 | perf_lopwr_cb(true); | ^~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/perf_lopwr_cb +168 drivers/acpi/acpi_pad.c 135 = 136 static unsigned int idle_pct =3D 5; /* percentage */ 137 static unsigned int round_robin_time =3D 1; /* second */ 138 static int power_saving_thread(void *data) 139 { 140 int do_sleep; 141 unsigned int tsk_index =3D (unsigned long)data; 142 u64 last_jiffies =3D 0; 143 = 144 sched_set_fifo_low(current); 145 = 146 while (!kthread_should_stop()) { 147 unsigned long expire_time; 148 = 149 /* round robin to cpus */ 150 expire_time =3D last_jiffies + round_robin_time * HZ; 151 if (time_before(expire_time, jiffies)) { 152 last_jiffies =3D jiffies; 153 round_robin_cpu(tsk_index); 154 } 155 = 156 do_sleep =3D 0; 157 = 158 expire_time =3D jiffies + HZ * (100 - idle_pct) / 100; 159 = 160 while (!need_resched()) { 161 if (tsc_detected_unstable && !tsc_marked_unstable) { 162 /* TSC could halt in idle, so notify users */ 163 mark_tsc_unstable("TSC halts in idle"); 164 tsc_marked_unstable =3D 1; 165 } 166 local_irq_disable(); 167 = > 168 perf_lopwr_cb(true); 169 = 170 tick_broadcast_enable(); 171 tick_broadcast_enter(); 172 stop_critical_timings(); 173 = 174 mwait_idle_with_hints(power_saving_mwait_eax, 1); 175 = 176 start_critical_timings(); 177 tick_broadcast_exit(); 178 = 179 perf_lopwr_cb(false); 180 = 181 local_irq_enable(); 182 = 183 if (time_before(expire_time, jiffies)) { 184 do_sleep =3D 1; 185 break; 186 } 187 } 188 = 189 /* 190 * current sched_rt has threshold for rt task running time. 191 * When a rt task uses 95% CPU time, the rt thread will be 192 * scheduled out for 5% CPU time to not starve other tasks. But 193 * the mechanism only works when all CPUs have RT task running, 194 * as if one CPU hasn't RT task, RT task from other CPUs will 195 * borrow CPU time from this CPU and cause RT task use > 95% 196 * CPU time. To make 'avoid starvation' work, takes a nap here. 197 */ 198 if (unlikely(do_sleep)) 199 schedule_timeout_killable(HZ * idle_pct / 100); 200 = 201 /* If an external event has set the need_resched flag, then 202 * we need to deal with it, or this loop will continue to 203 * spin without calling __mwait(). 204 */ 205 if (unlikely(need_resched())) 206 schedule(); 207 } 208 = 209 exit_round_robin(tsk_index); 210 return 0; 211 } 212 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============3100755440088757573==--