[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202204231525.D4VKBvJr-lkp@intel.com>
Date: Sat, 23 Apr 2022 15:50:47 +0800
From: kernel test robot <lkp@...el.com>
To: Claudiu Beznea <claudiu.beznea@...rochip.com>,
nicolas.ferre@...rochip.com, alexandre.belloni@...tlin.com,
linux@...linux.org.uk
Cc: llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
Claudiu Beznea <claudiu.beznea@...rochip.com>
Subject: Re: [PATCH v2 3/4] ARM: at91: pm: add quirks for pm
Hi Claudiu,
I love your patch! Yet something to improve:
[auto build test ERROR on soc/for-next]
[also build test ERROR on v5.18-rc3 next-20220422]
[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/intel-lab-lkp/linux/commits/Claudiu-Beznea/ARM-at91-pm-add-quirks-for-ethernet/20220412-233013
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
config: arm-randconfig-r004-20220422 (https://download.01.org/0day-ci/archive/20220423/202204231525.D4VKBvJr-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 5bd87350a5ae429baf8f373cb226a57b62f87280)
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 arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/338e7bd157de47af9322de066375e240f453a0e3
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Claudiu-Beznea/ARM-at91-pm-add-quirks-for-ethernet/20220412-233013
git checkout 338e7bd157de47af9322de066375e240f453a0e3
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All error/warnings (new ones prefixed by >>):
>> arch/arm/mach-at91/pm.c:374:4: error: call to undeclared function 'wakeup_sources_walk_start'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
for_each_wakeup_source(ws) {
^
include/linux/pm_wakeup.h:67:14: note: expanded from macro 'for_each_wakeup_source'
for ((ws) = wakeup_sources_walk_start(); \
^
arch/arm/mach-at91/pm.c:374:4: note: did you mean 'wakeup_source_register'?
include/linux/pm_wakeup.h:67:14: note: expanded from macro 'for_each_wakeup_source'
for ((ws) = wakeup_sources_walk_start(); \
^
include/linux/pm_wakeup.h:144:37: note: 'wakeup_source_register' declared here
static inline struct wakeup_source *wakeup_source_register(struct device *dev,
^
>> arch/arm/mach-at91/pm.c:374:4: warning: incompatible integer to pointer conversion assigning to 'struct wakeup_source *' from 'int' [-Wint-conversion]
for_each_wakeup_source(ws) {
^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/pm_wakeup.h:67:12: note: expanded from macro 'for_each_wakeup_source'
for ((ws) = wakeup_sources_walk_start(); \
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> arch/arm/mach-at91/pm.c:374:4: error: call to undeclared function 'wakeup_sources_walk_next'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
include/linux/pm_wakeup.h:69:14: note: expanded from macro 'for_each_wakeup_source'
(ws) = wakeup_sources_walk_next((ws)))
^
>> arch/arm/mach-at91/pm.c:374:4: warning: incompatible integer to pointer conversion assigning to 'struct wakeup_source *' from 'int' [-Wint-conversion]
for_each_wakeup_source(ws) {
^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/pm_wakeup.h:69:12: note: expanded from macro 'for_each_wakeup_source'
(ws) = wakeup_sources_walk_next((ws)))
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings and 2 errors generated.
vim +/wakeup_sources_walk_start +374 arch/arm/mach-at91/pm.c
344
345 static int at91_pm_config_quirks(bool suspend)
346 {
347 struct wakeup_source *ws;
348 int i, j, ret, tmp;
349
350 /*
351 * Ethernet IPs who's device_node pointers are stored into
352 * soc_pm.quirks.eth[].np cannot handle WoL packets while in ULP0, ULP1
353 * or both due to a hardware bug. If they receive WoL packets while in
354 * ULP0 or ULP1 IPs could stop working or the whole system could stop
355 * working. We cannot handle this scenario in the ethernet driver itself
356 * as the driver is common to multiple vendors and also we only know
357 * here, in this file, if we suspend to ULP0 or ULP1 mode. Thus handle
358 * these scenarios here, as quirks.
359 */
360 for (i = 0; i < AT91_PM_MAX_ETH; i++) {
361 if (!at91_pm_eth_quirk_is_valid(i))
362 continue;
363
364 /*
365 * For modes in dns_modes mask the system blocks if quirk is not
366 * applied but if applied the interface doesn't act at WoL
367 * events. Thus take care to avoid suspending if this interface
368 * is the only configured wakeup source.
369 */
370 if (suspend &&
371 soc_pm.quirks.eth[i].dns_modes & BIT(soc_pm.data.mode)) {
372 int ws_count = 0;
373
> 374 for_each_wakeup_source(ws) {
375 ws_count++;
376 if (ws_count > 1)
377 break;
378 }
379
380 /*
381 * Checking ws == 1 is good for all SAMA5 based platforms
382 * even when both G_ETH and E_ETH are available as dsn_modes
383 * is populated only on G_ETH interface.
384 */
385 if (ws_count == 1) {
386 pr_err("AT91: PM: Ethernet cannot resume from WoL!");
387 ret = -EPERM;
388 goto clk_unconfigure;
389 }
390 }
391
392 if (suspend) {
393 clk_bulk_disable_unprepare(AT91_PM_ETH_MAX_CLK,
394 soc_pm.quirks.eth[i].clks);
395 } else {
396 ret = clk_bulk_prepare_enable(AT91_PM_ETH_MAX_CLK,
397 soc_pm.quirks.eth[i].clks);
398 if (ret)
399 goto clk_unconfigure;
400 }
401 }
402
403 return 0;
404
405 clk_unconfigure:
406 /*
407 * In case of resume we reach this point if clk_prepare_enable() failed.
408 * we don't want to revert the previous clk_prepare_enable() for the
409 * other IP.
410 */
411 if (suspend) {
412 for (j = i - 1; j <= 0; j--) {
413 if (!at91_pm_eth_quirk_is_valid(i))
414 continue;
415
416 tmp = clk_bulk_prepare_enable(AT91_PM_ETH_MAX_CLK,
417 soc_pm.quirks.eth[i].clks);
418 if (tmp) {
419 pr_err("AT91: PM: failed to enable %s clock\n",
420 i == AT91_PM_ETH_PCLK ? "pclk" : "hclk");
421 }
422 }
423 }
424
425 return ret;
426 }
427
--
0-DAY CI Kernel Test Service
https://01.org/lkp
Powered by blists - more mailing lists