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] [thread-next>] [day] [month] [year] [list]
Message-ID: <201711230535.6gmH2J4G%fengguang.wu@intel.com>
Date:   Thu, 23 Nov 2017 06:09:03 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Souvik Kumar Chakravarty <souvik.k.chakravarty@...el.com>
Cc:     kbuild-all@...org, platform-driver-x86@...r.kernel.org,
        dvhart@...radead.org, andy@...radead.org,
        linux-kernel@...r.kernel.org, rajneesh.bhardwaj@...el.com,
        Souvik Kumar Chakravarty <souvik.k.chakravarty@...el.com>
Subject: Re: [PATCH v2 2/4] platform/x86: intel_telemetry: Fix suspend stats

Hi Souvik,

I love your patch! Perhaps something to improve:

[auto build test WARNING on platform-drivers-x86/for-next]
[also build test WARNING on v4.14 next-20171122]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Souvik-Kumar-Chakravarty/platform-x86-intel_telemetry-Fix-logs-and-formatting/20171123-052155
base:   git://git.infradead.org/users/dvhart/linux-platform-drivers-x86.git for-next
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

   drivers/platform/x86/intel_telemetry_debugfs.c: In function 'pm_suspend_exit_cb':
>> drivers/platform/x86/intel_telemetry_debugfs.c:915:25: warning: 'suspend_deep_ctr_exit' may be used uninitialized in this function [-Wmaybe-uninitialized]
       suspend_deep_ctr_exit++;
       ~~~~~~~~~~~~~~~~~~~~~^~
>> drivers/platform/x86/intel_telemetry_debugfs.c:912:25: warning: 'suspend_shlw_ctr_exit' may be used uninitialized in this function [-Wmaybe-uninitialized]
       suspend_shlw_ctr_exit++;
       ~~~~~~~~~~~~~~~~~~~~~^~

vim +/suspend_deep_ctr_exit +915 drivers/platform/x86/intel_telemetry_debugfs.c

   854	
   855	static int pm_suspend_exit_cb(void)
   856	{
   857		struct telemetry_evtlog evtlog[TELEM_MAX_OS_ALLOCATED_EVENTS];
   858		struct telemetry_debugfs_conf *conf = debugfs_conf;
   859		u32 suspend_shlw_ctr_exit, suspend_deep_ctr_exit;
   860		u64 suspend_shlw_res_exit, suspend_deep_res_exit;
   861		int ret, index;
   862	
   863		if (!suspend_prep_ok)
   864			goto out;
   865	
   866		ret = telemetry_raw_read_eventlog(TELEM_IOSS, evtlog,
   867						  TELEM_MAX_OS_ALLOCATED_EVENTS);
   868		if (ret < 0)
   869			goto out;
   870	
   871		for (index = 0; index < ret; index++) {
   872			TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_shlw_occ_id,
   873						   suspend_shlw_ctr_exit);
   874	
   875			TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_deep_occ_id,
   876						   suspend_deep_ctr_exit);
   877	
   878			TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_shlw_res_id,
   879						   suspend_shlw_res_exit);
   880	
   881			TELEM_CHECK_AND_PARSE_CTRS(conf->s0ix_deep_res_id,
   882						   suspend_deep_res_exit);
   883		}
   884	
   885		if ((suspend_shlw_ctr_exit < suspend_shlw_ctr_temp) ||
   886		    (suspend_deep_ctr_exit < suspend_deep_ctr_temp) ||
   887		    (suspend_shlw_res_exit < suspend_shlw_res_temp) ||
   888		    (suspend_deep_res_exit < suspend_deep_res_temp)) {
   889			pr_err("Wrong s0ix counters detected\n");
   890			goto out;
   891		}
   892	
   893		/*
   894		 * Due to some design limitations in the firmware, sometimes the
   895		 * counters do not get updated by the time we reach here. As a
   896		 * workaround, we try to see if this was a genuine case of sleep
   897		 * failure or not by cross-checking from PMC GCR registers directly.
   898		 */
   899		if (suspend_shlw_ctr_exit == suspend_shlw_ctr_temp &&
   900		    suspend_deep_ctr_exit == suspend_deep_ctr_temp) {
   901			ret = intel_pmc_gcr_readq(PMC_GCR_TELEM_SHLW_S0IX_REG,
   902						  &suspend_shlw_res_exit);
   903			if (ret < 0)
   904				goto out;
   905	
   906			ret = intel_pmc_gcr_readq(PMC_GCR_TELEM_DEEP_S0IX_REG,
   907						  &suspend_deep_res_exit);
   908			if (ret < 0)
   909				goto out;
   910	
   911			if (suspend_shlw_res_exit > suspend_shlw_res_temp)
 > 912				suspend_shlw_ctr_exit++;
   913	
   914			if (suspend_deep_res_exit > suspend_deep_res_temp)
 > 915				suspend_deep_ctr_exit++;
   916		}
   917	
   918		suspend_shlw_ctr_exit -= suspend_shlw_ctr_temp;
   919		suspend_deep_ctr_exit -= suspend_deep_ctr_temp;
   920		suspend_shlw_res_exit -= suspend_shlw_res_temp;
   921		suspend_deep_res_exit -= suspend_deep_res_temp;
   922	
   923		if (suspend_shlw_ctr_exit == 1) {
   924			conf->suspend_stats.shlw_ctr +=
   925			suspend_shlw_ctr_exit;
   926	
   927			conf->suspend_stats.shlw_res +=
   928			suspend_shlw_res_exit;
   929		}
   930		/* Shallow Wakes Case */
   931		else if (suspend_shlw_ctr_exit > 1) {
   932			conf->suspend_stats.shlw_swake_ctr +=
   933			suspend_shlw_ctr_exit;
   934	
   935			conf->suspend_stats.shlw_swake_res +=
   936			suspend_shlw_res_exit;
   937		}
   938	
   939		if (suspend_deep_ctr_exit == 1) {
   940			conf->suspend_stats.deep_ctr +=
   941			suspend_deep_ctr_exit;
   942	
   943			conf->suspend_stats.deep_res +=
   944			suspend_deep_res_exit;
   945		}
   946	
   947		/* Shallow Wakes Case */
   948		else if (suspend_deep_ctr_exit > 1) {
   949			conf->suspend_stats.deep_swake_ctr +=
   950			suspend_deep_ctr_exit;
   951	
   952			conf->suspend_stats.deep_swake_res +=
   953			suspend_deep_res_exit;
   954		}
   955	
   956	out:
   957		suspend_prep_ok = 0;
   958		return NOTIFY_OK;
   959	}
   960	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Download attachment ".config.gz" of type "application/gzip" (61051 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ