From: kernel test robot <lkp@intel.com>
To: Stephane Eranian <eranian@google.com>, linux-kernel@vger.kernel.org
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
peterz@infradead.org, acme@redhat.com, jolsa@redhat.com,
kim.phillips@amd.com, namhyung@kernel.org, irogers@google.com
Subject: Re: [PATCH v1 07/13] perf/core: add idle hooks
Date: Thu, 9 Sep 2021 19:02:36 +0800 [thread overview]
Message-ID: <202109091833.QRu8DKKQ-lkp@intel.com> (raw)
In-Reply-To: <20210909075700.4025355-8-eranian@google.com>
[-- Attachment #1: Type: text/plain, Size: 6114 bytes --]
Hi Stephane,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on tip/perf/core]
[also build test ERROR on next-20210909]
[cannot apply to tip/sched/core tip/x86/core v5.14]
[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-x86-amd-Add-AMD-Fam19h-Branch-Sampling-support/20210909-160050
base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 4034fb207e302cc0b1f304084d379640c1fb1436
config: riscv-randconfig-r042-20210908 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 261cbe98c38f8c1ee1a482fe76511110e790f58a)
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
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/0day-ci/linux/commit/35333fae36d4dee3e2225674fca8d745364482fa
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Stephane-Eranian/perf-x86-amd-Add-AMD-Fam19h-Branch-Sampling-support/20210909-160050
git checkout 35333fae36d4dee3e2225674fca8d745364482fa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> kernel/sched/idle.c:182:3: error: implicit declaration of function 'perf_lopwr_cb' [-Werror,-Wimplicit-function-declaration]
perf_lopwr_cb(false);
^
kernel/sched/idle.c:196:4: error: implicit declaration of function 'perf_lopwr_cb' [-Werror,-Wimplicit-function-declaration]
perf_lopwr_cb(true);
^
kernel/sched/idle.c:262:3: error: implicit declaration of function 'perf_lopwr_cb' [-Werror,-Wimplicit-function-declaration]
perf_lopwr_cb(false);
^
kernel/sched/idle.c:296:3: error: implicit declaration of function 'perf_lopwr_cb' [-Werror,-Wimplicit-function-declaration]
perf_lopwr_cb(true);
^
4 errors generated.
vim +/perf_lopwr_cb +182 kernel/sched/idle.c
160
161 /**
162 * cpuidle_idle_call - the main idle function
163 *
164 * NOTE: no locks or semaphores should be used here
165 *
166 * On architectures that support TIF_POLLING_NRFLAG, is called with polling
167 * set, and it returns with polling set. If it ever stops polling, it
168 * must clear the polling bit.
169 */
170 static void cpuidle_idle_call(void)
171 {
172 struct cpuidle_device *dev = cpuidle_get_device();
173 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
174 int next_state, entered_state;
175
176 /*
177 * Check if the idle task must be rescheduled. If it is the
178 * case, exit the function after re-enabling the local irq.
179 */
180 if (need_resched()) {
181 local_irq_enable();
> 182 perf_lopwr_cb(false);
183 return;
184 }
185
186 /*
187 * The RCU framework needs to be told that we are entering an idle
188 * section, so no more rcu read side critical sections and one more
189 * step to the grace period
190 */
191
192 if (cpuidle_not_available(drv, dev)) {
193 tick_nohz_idle_stop_tick();
194
195 if (!cpu_idle_force_poll)
196 perf_lopwr_cb(true);
197
198 default_idle_call();
199
200 if (!cpu_idle_force_poll)
201 perf_lopwr_cb(false);
202
203 goto exit_idle;
204 }
205
206 /*
207 * Suspend-to-idle ("s2idle") is a system state in which all user space
208 * has been frozen, all I/O devices have been suspended and the only
209 * activity happens here and in interrupts (if any). In that case bypass
210 * the cpuidle governor and go straight for the deepest idle state
211 * available. Possibly also suspend the local tick and the entire
212 * timekeeping to prevent timer interrupts from kicking us out of idle
213 * until a proper wakeup interrupt happens.
214 */
215
216 if (idle_should_enter_s2idle() || dev->forced_idle_latency_limit_ns) {
217 u64 max_latency_ns;
218
219 if (idle_should_enter_s2idle()) {
220
221 entered_state = call_cpuidle_s2idle(drv, dev);
222 if (entered_state > 0)
223 goto exit_idle;
224
225 max_latency_ns = U64_MAX;
226 } else {
227 max_latency_ns = dev->forced_idle_latency_limit_ns;
228 }
229
230 tick_nohz_idle_stop_tick();
231
232 next_state = cpuidle_find_deepest_state(drv, dev, max_latency_ns);
233 call_cpuidle(drv, dev, next_state);
234 } else {
235 bool stop_tick = true;
236
237 /*
238 * Ask the cpuidle framework to choose a convenient idle state.
239 */
240 next_state = cpuidle_select(drv, dev, &stop_tick);
241
242 if (stop_tick || tick_nohz_tick_stopped())
243 tick_nohz_idle_stop_tick();
244 else
245 tick_nohz_idle_retain_tick();
246
247 entered_state = call_cpuidle(drv, dev, next_state);
248 /*
249 * Give the governor an opportunity to reflect on the outcome
250 */
251 cpuidle_reflect(dev, entered_state);
252 }
253
254 exit_idle:
255 __current_set_polling();
256
257 /*
258 * It is up to the idle functions to reenable local interrupts
259 */
260 if (WARN_ON_ONCE(irqs_disabled())) {
261 local_irq_enable();
262 perf_lopwr_cb(false);
263 }
264 }
265
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 26209 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v1 07/13] perf/core: add idle hooks
Date: Thu, 09 Sep 2021 19:02:36 +0800 [thread overview]
Message-ID: <202109091833.QRu8DKKQ-lkp@intel.com> (raw)
In-Reply-To: <20210909075700.4025355-8-eranian@google.com>
[-- Attachment #1: Type: text/plain, Size: 6275 bytes --]
Hi Stephane,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on tip/perf/core]
[also build test ERROR on next-20210909]
[cannot apply to tip/sched/core tip/x86/core v5.14]
[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-x86-amd-Add-AMD-Fam19h-Branch-Sampling-support/20210909-160050
base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 4034fb207e302cc0b1f304084d379640c1fb1436
config: riscv-randconfig-r042-20210908 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 261cbe98c38f8c1ee1a482fe76511110e790f58a)
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
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/0day-ci/linux/commit/35333fae36d4dee3e2225674fca8d745364482fa
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Stephane-Eranian/perf-x86-amd-Add-AMD-Fam19h-Branch-Sampling-support/20210909-160050
git checkout 35333fae36d4dee3e2225674fca8d745364482fa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> kernel/sched/idle.c:182:3: error: implicit declaration of function 'perf_lopwr_cb' [-Werror,-Wimplicit-function-declaration]
perf_lopwr_cb(false);
^
kernel/sched/idle.c:196:4: error: implicit declaration of function 'perf_lopwr_cb' [-Werror,-Wimplicit-function-declaration]
perf_lopwr_cb(true);
^
kernel/sched/idle.c:262:3: error: implicit declaration of function 'perf_lopwr_cb' [-Werror,-Wimplicit-function-declaration]
perf_lopwr_cb(false);
^
kernel/sched/idle.c:296:3: error: implicit declaration of function 'perf_lopwr_cb' [-Werror,-Wimplicit-function-declaration]
perf_lopwr_cb(true);
^
4 errors generated.
vim +/perf_lopwr_cb +182 kernel/sched/idle.c
160
161 /**
162 * cpuidle_idle_call - the main idle function
163 *
164 * NOTE: no locks or semaphores should be used here
165 *
166 * On architectures that support TIF_POLLING_NRFLAG, is called with polling
167 * set, and it returns with polling set. If it ever stops polling, it
168 * must clear the polling bit.
169 */
170 static void cpuidle_idle_call(void)
171 {
172 struct cpuidle_device *dev = cpuidle_get_device();
173 struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev);
174 int next_state, entered_state;
175
176 /*
177 * Check if the idle task must be rescheduled. If it is the
178 * case, exit the function after re-enabling the local irq.
179 */
180 if (need_resched()) {
181 local_irq_enable();
> 182 perf_lopwr_cb(false);
183 return;
184 }
185
186 /*
187 * The RCU framework needs to be told that we are entering an idle
188 * section, so no more rcu read side critical sections and one more
189 * step to the grace period
190 */
191
192 if (cpuidle_not_available(drv, dev)) {
193 tick_nohz_idle_stop_tick();
194
195 if (!cpu_idle_force_poll)
196 perf_lopwr_cb(true);
197
198 default_idle_call();
199
200 if (!cpu_idle_force_poll)
201 perf_lopwr_cb(false);
202
203 goto exit_idle;
204 }
205
206 /*
207 * Suspend-to-idle ("s2idle") is a system state in which all user space
208 * has been frozen, all I/O devices have been suspended and the only
209 * activity happens here and in interrupts (if any). In that case bypass
210 * the cpuidle governor and go straight for the deepest idle state
211 * available. Possibly also suspend the local tick and the entire
212 * timekeeping to prevent timer interrupts from kicking us out of idle
213 * until a proper wakeup interrupt happens.
214 */
215
216 if (idle_should_enter_s2idle() || dev->forced_idle_latency_limit_ns) {
217 u64 max_latency_ns;
218
219 if (idle_should_enter_s2idle()) {
220
221 entered_state = call_cpuidle_s2idle(drv, dev);
222 if (entered_state > 0)
223 goto exit_idle;
224
225 max_latency_ns = U64_MAX;
226 } else {
227 max_latency_ns = dev->forced_idle_latency_limit_ns;
228 }
229
230 tick_nohz_idle_stop_tick();
231
232 next_state = cpuidle_find_deepest_state(drv, dev, max_latency_ns);
233 call_cpuidle(drv, dev, next_state);
234 } else {
235 bool stop_tick = true;
236
237 /*
238 * Ask the cpuidle framework to choose a convenient idle state.
239 */
240 next_state = cpuidle_select(drv, dev, &stop_tick);
241
242 if (stop_tick || tick_nohz_tick_stopped())
243 tick_nohz_idle_stop_tick();
244 else
245 tick_nohz_idle_retain_tick();
246
247 entered_state = call_cpuidle(drv, dev, next_state);
248 /*
249 * Give the governor an opportunity to reflect on the outcome
250 */
251 cpuidle_reflect(dev, entered_state);
252 }
253
254 exit_idle:
255 __current_set_polling();
256
257 /*
258 * It is up to the idle functions to reenable local interrupts
259 */
260 if (WARN_ON_ONCE(irqs_disabled())) {
261 local_irq_enable();
262 perf_lopwr_cb(false);
263 }
264 }
265
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 26209 bytes --]
next prev parent reply other threads:[~2021-09-09 11:03 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-09 7:56 [PATCH v1 00/13] perf/x86/amd: Add AMD Fam19h Branch Sampling support Stephane Eranian
2021-09-09 7:56 ` [PATCH v1 01/13] perf/core: add union to struct perf_branch_entry Stephane Eranian
2021-09-09 19:03 ` Peter Zijlstra
2021-09-10 12:09 ` Michael Ellerman
2021-09-10 14:16 ` Michael Ellerman
2021-09-15 6:03 ` Stephane Eranian
2021-09-17 6:37 ` Madhavan Srinivasan
2021-09-17 6:48 ` Stephane Eranian
2021-09-17 7:05 ` Michael Ellerman
2021-09-17 7:39 ` Stephane Eranian
2021-09-17 12:38 ` Michael Ellerman
2021-09-17 16:42 ` Stephane Eranian
2021-09-19 10:27 ` Michael Ellerman
2021-09-09 7:56 ` [PATCH v1 02/13] x86/cpufeatures: add AMD Fam19h Branch Sampling feature Stephane Eranian
2021-09-09 7:56 ` [PATCH v1 03/13] perf/x86/amd: add AMD Fam19h Branch Sampling support Stephane Eranian
2021-09-09 10:44 ` kernel test robot
2021-09-09 10:44 ` kernel test robot
2021-09-09 15:33 ` kernel test robot
2021-09-09 15:33 ` kernel test robot
2021-09-09 7:56 ` [PATCH v1 04/13] perf/x86/amd: add branch-brs helper event for Fam19h BRS Stephane Eranian
2021-09-09 7:56 ` [PATCH v1 05/13] perf/x86/amd: enable branch sampling priv level filtering Stephane Eranian
2021-09-09 7:56 ` [PATCH v1 06/13] perf/x86/amd: add AMD branch sampling period adjustment Stephane Eranian
2021-09-09 7:56 ` [PATCH v1 07/13] perf/core: add idle hooks Stephane Eranian
2021-09-09 9:15 ` Peter Zijlstra
2021-09-09 10:42 ` kernel test robot
2021-09-09 10:42 ` kernel test robot
2021-09-09 11:02 ` kernel test robot [this message]
2021-09-09 11:02 ` kernel test robot
2021-09-09 7:56 ` [PATCH v1 08/13] perf/x86/core: " Stephane Eranian
2021-09-09 9:16 ` Peter Zijlstra
2021-09-09 7:56 ` [PATCH v1 09/13] perf/x86/amd: add idle hooks for branch sampling Stephane Eranian
2021-09-09 9:20 ` Peter Zijlstra
2021-09-09 7:56 ` [PATCH v1 10/13] perf tools: add branch-brs as a new event Stephane Eranian
2021-09-09 7:56 ` [PATCH v1 11/13] perf tools: improve IBS error handling Stephane Eranian
2021-09-13 19:34 ` Arnaldo Carvalho de Melo
2021-10-04 21:57 ` Kim Phillips
2021-10-04 23:44 ` Arnaldo Carvalho de Melo
2021-09-09 7:56 ` [PATCH v1 12/13] perf tools: improve error handling of AMD Branch Sampling Stephane Eranian
2021-10-04 21:57 ` Kim Phillips
2021-09-09 7:57 ` [PATCH v1 13/13] perf report: add addr_from/addr_to sort dimensions Stephane Eranian
2021-09-09 8:55 ` [PATCH v1 00/13] perf/x86/amd: Add AMD Fam19h Branch Sampling support Peter Zijlstra
2021-09-15 5:55 ` Stephane Eranian
2021-09-15 9:04 ` Peter Zijlstra
2021-10-28 18:30 ` Stephane Eranian
2021-09-27 20:17 ` Song Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202109091833.QRu8DKKQ-lkp@intel.com \
--to=lkp@intel.com \
--cc=acme@redhat.com \
--cc=eranian@google.com \
--cc=irogers@google.com \
--cc=jolsa@redhat.com \
--cc=kbuild-all@lists.01.org \
--cc=kim.phillips@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.