lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ