All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 9935/10933] drivers/cpufreq/amd-pstate.c:864:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true
@ 2023-02-07 21:33 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-02-07 21:33 UTC (permalink / raw)
  To: Perry Yuan
  Cc: llvm, oe-kbuild-all, Linux Memory Management List,
	Rafael J. Wysocki, Mario Limonciello, Wyes Karny

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   49a8133221c71b935f36a7c340c0271c2a9ee2db
commit: ffa5096a7c338641f70fb06d4778e8cf400181a8 [9935/10933] cpufreq: amd-pstate: implement Pstate EPP support for the AMD processors
config: i386-buildonly-randconfig-r004-20230206 (https://download.01.org/0day-ci/archive/20230208/202302080535.YeJXn11A-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ffa5096a7c338641f70fb06d4778e8cf400181a8
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout ffa5096a7c338641f70fb06d4778e8cf400181a8
        # 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=i386 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/cpufreq/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/cpufreq/amd-pstate.c:864:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (rc)
               ^~
   drivers/cpufreq/amd-pstate.c:920:9: note: uninitialized use occurs here
           return ret;
                  ^~~
   drivers/cpufreq/amd-pstate.c:864:2: note: remove the 'if' if its condition is always false
           if (rc)
           ^~~~~~~
   drivers/cpufreq/amd-pstate.c:853:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (!dev)
               ^~~~
   drivers/cpufreq/amd-pstate.c:920:9: note: uninitialized use occurs here
           return ret;
                  ^~~
   drivers/cpufreq/amd-pstate.c:853:2: note: remove the 'if' if its condition is always false
           if (!dev)
           ^~~~~~~~~
   drivers/cpufreq/amd-pstate.c:841:66: note: initialize the variable 'ret' to silence this warning
           int min_freq, max_freq, nominal_freq, lowest_nonlinear_freq, ret;
                                                                           ^
                                                                            = 0
>> drivers/cpufreq/amd-pstate.c:957:6: warning: variable 'epp' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (cpudata->epp_policy == cpudata->policy)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/cpufreq/amd-pstate.c:982:30: note: uninitialized use occurs here
           amd_pstate_set_epp(cpudata, epp);
                                       ^~~
   drivers/cpufreq/amd-pstate.c:957:2: note: remove the 'if' if its condition is always false
           if (cpudata->epp_policy == cpudata->policy)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/cpufreq/amd-pstate.c:936:9: note: initialize the variable 'epp' to silence this warning
           s16 epp;
                  ^
                   = 0
   3 warnings generated.


vim +864 drivers/cpufreq/amd-pstate.c

   838	
   839	static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
   840	{
   841		int min_freq, max_freq, nominal_freq, lowest_nonlinear_freq, ret;
   842		struct amd_cpudata *cpudata;
   843		struct device *dev;
   844		int rc;
   845		u64 value;
   846	
   847		/*
   848		 * Resetting PERF_CTL_MSR will put the CPU in P0 frequency,
   849		 * which is ideal for initialization process.
   850		 */
   851		amd_perf_ctl_reset(policy->cpu);
   852		dev = get_cpu_device(policy->cpu);
   853		if (!dev)
   854			goto free_cpudata1;
   855	
   856		cpudata = kzalloc(sizeof(*cpudata), GFP_KERNEL);
   857		if (!cpudata)
   858			return -ENOMEM;
   859	
   860		cpudata->cpu = policy->cpu;
   861		cpudata->epp_policy = 0;
   862	
   863		rc = amd_pstate_init_perf(cpudata);
 > 864		if (rc)
   865			goto free_cpudata1;
   866	
   867		min_freq = amd_get_min_freq(cpudata);
   868		max_freq = amd_get_max_freq(cpudata);
   869		nominal_freq = amd_get_nominal_freq(cpudata);
   870		lowest_nonlinear_freq = amd_get_lowest_nonlinear_freq(cpudata);
   871		if (min_freq < 0 || max_freq < 0 || min_freq > max_freq) {
   872			dev_err(dev, "min_freq(%d) or max_freq(%d) value is incorrect\n",
   873					min_freq, max_freq);
   874			ret = -EINVAL;
   875			goto free_cpudata1;
   876		}
   877	
   878		policy->cpuinfo.min_freq = min_freq;
   879		policy->cpuinfo.max_freq = max_freq;
   880		/* It will be updated by governor */
   881		policy->cur = policy->cpuinfo.min_freq;
   882	
   883		/* Initial processor data capability frequencies */
   884		cpudata->max_freq = max_freq;
   885		cpudata->min_freq = min_freq;
   886		cpudata->nominal_freq = nominal_freq;
   887		cpudata->lowest_nonlinear_freq = lowest_nonlinear_freq;
   888	
   889		policy->driver_data = cpudata;
   890	
   891		cpudata->epp_cached = amd_pstate_get_epp(cpudata, 0);
   892	
   893		policy->min = policy->cpuinfo.min_freq;
   894		policy->max = policy->cpuinfo.max_freq;
   895	
   896		/*
   897		 * Set the policy to powersave to provide a valid fallback value in case
   898		 * the default cpufreq governor is neither powersave nor performance.
   899		 */
   900		policy->policy = CPUFREQ_POLICY_POWERSAVE;
   901	
   902		if (boot_cpu_has(X86_FEATURE_CPPC)) {
   903			policy->fast_switch_possible = true;
   904			ret = rdmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ, &value);
   905			if (ret)
   906				return ret;
   907			WRITE_ONCE(cpudata->cppc_req_cached, value);
   908	
   909			ret = rdmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_CAP1, &value);
   910			if (ret)
   911				return ret;
   912			WRITE_ONCE(cpudata->cppc_cap1_cached, value);
   913		}
   914		amd_pstate_boost_init(cpudata);
   915	
   916		return 0;
   917	
   918	free_cpudata1:
   919		kfree(cpudata);
   920		return ret;
   921	}
   922	
   923	static int amd_pstate_epp_cpu_exit(struct cpufreq_policy *policy)
   924	{
   925		pr_debug("CPU %d exiting\n", policy->cpu);
   926		policy->fast_switch_possible = false;
   927		return 0;
   928	}
   929	
   930	static void amd_pstate_epp_init(unsigned int cpu)
   931	{
   932		struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
   933		struct amd_cpudata *cpudata = policy->driver_data;
   934		u32 max_perf, min_perf;
   935		u64 value;
   936		s16 epp;
   937	
   938		max_perf = READ_ONCE(cpudata->highest_perf);
   939		min_perf = READ_ONCE(cpudata->lowest_perf);
   940	
   941		value = READ_ONCE(cpudata->cppc_req_cached);
   942	
   943		if (cpudata->policy == CPUFREQ_POLICY_PERFORMANCE)
   944			min_perf = max_perf;
   945	
   946		/* Initial min/max values for CPPC Performance Controls Register */
   947		value &= ~AMD_CPPC_MIN_PERF(~0L);
   948		value |= AMD_CPPC_MIN_PERF(min_perf);
   949	
   950		value &= ~AMD_CPPC_MAX_PERF(~0L);
   951		value |= AMD_CPPC_MAX_PERF(max_perf);
   952	
   953		/* CPPC EPP feature require to set zero to the desire perf bit */
   954		value &= ~AMD_CPPC_DES_PERF(~0L);
   955		value |= AMD_CPPC_DES_PERF(0);
   956	
 > 957		if (cpudata->epp_policy == cpudata->policy)
   958			goto skip_epp;
   959	
   960		cpudata->epp_policy = cpudata->policy;
   961	
   962		if (cpudata->policy == CPUFREQ_POLICY_PERFORMANCE) {
   963			epp = amd_pstate_get_epp(cpudata, value);
   964			if (epp < 0)
   965				goto skip_epp;
   966			/* force the epp value to be zero for performance policy */
   967			epp = 0;
   968		} else {
   969			/* Get BIOS pre-defined epp value */
   970			epp = amd_pstate_get_epp(cpudata, value);
   971			if (epp)
   972				goto skip_epp;
   973		}
   974		/* Set initial EPP value */
   975		if (boot_cpu_has(X86_FEATURE_CPPC)) {
   976			value &= ~GENMASK_ULL(31, 24);
   977			value |= (u64)epp << 24;
   978		}
   979	
   980	skip_epp:
   981		WRITE_ONCE(cpudata->cppc_req_cached, value);
   982		amd_pstate_set_epp(cpudata, epp);
   983		cpufreq_cpu_put(policy);
   984	}
   985	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-02-07 21:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-07 21:33 [linux-next:master 9935/10933] drivers/cpufreq/amd-pstate.c:864:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true kernel test robot

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.