linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: kbuild-all@01.org, rjw@rjwysocki.net, tglx@linutronix.de,
	mingo@redhat.com, bp@suse.de, peterz@infradead.org,
	x86@kernel.org, linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	tim.c.chen@linux.intel.com,
	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Subject: Re: [PATCH v2 8/8] cpufreq: intel_pstate: Use CPPC to get max performance
Date: Fri, 2 Sep 2016 06:31:54 +0800	[thread overview]
Message-ID: <201609020616.X0hzEvoR%fengguang.wu@intel.com> (raw)
In-Reply-To: <1472762024-88771-9-git-send-email-srinivas.pandruvada@linux.intel.com>

[-- Attachment #1: Type: text/plain, Size: 31149 bytes --]

Hi Srinivas,

[auto build test ERROR on tip/sched/core]
[also build test ERROR on v4.8-rc4 next-20160825]
[cannot apply to tip/x86/core]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
[Suggest to use git(>=2.9.0) format-patch --base=<commit> (or --base=auto for convenience) to record what (public, well-known) commit your patch series was built on]
[Check https://git-scm.com/docs/git-format-patch for more information]

url:    https://github.com/0day-ci/linux/commits/Srinivas-Pandruvada/Support-Intel-Turbo-Boost-Max-Technology-3-0/20160902-053224
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All error/warnings (new ones prefixed by >>):

warning: (X86_INTEL_PSTATE && ACPI_CPPC_CPUFREQ) selects ACPI_CPPC_LIB which has unmet direct dependencies (ACPI && ACPI_PROCESSOR && !ACPI_CPU_FREQ_PSS)
>> drivers/cpufreq/intel_pstate.c:202:8: error: redefinition of 'struct cpudata'
    struct cpudata {
           ^~~~~~~
   In file included from drivers/cpufreq/intel_pstate.c:47:0:
   include/acpi/cppc_acpi.h:117:8: note: originally defined here
    struct cpudata {
           ^~~~~~~
   drivers/cpufreq/intel_pstate.c: In function 'intel_pstate_init_acpi_perf_limits':
>> drivers/cpufreq/intel_pstate.c:399:35: error: invalid application of 'sizeof' to incomplete type 'struct cppc_cpudata'
      cpu->cppc_data = kzalloc(sizeof(struct cppc_cpudata),
                                      ^~~~~~
>> drivers/cpufreq/intel_pstate.c:404:30: error: dereferencing pointer to incomplete type 'struct cppc_cpudata'
      perf_caps = &cpu->cppc_data->perf_caps;
                                 ^~

vim +202 drivers/cpufreq/intel_pstate.c

938d21a2a Philippe Longepe        2015-11-09   41  #define ATOM_VIDS		0x66b
938d21a2a Philippe Longepe        2015-11-09   42  #define ATOM_TURBO_RATIOS	0x66c
938d21a2a Philippe Longepe        2015-11-09   43  #define ATOM_TURBO_VIDS		0x66d
61d8d2abc Dirk Brandewie          2014-02-12   44  
9522a2ff9 Srinivas Pandruvada     2016-04-27   45  #ifdef CONFIG_ACPI
9522a2ff9 Srinivas Pandruvada     2016-04-27   46  #include <acpi/processor.h>
cc2eccd40 Srinivas Pandruvada     2016-09-01  @47  #include <acpi/cppc_acpi.h>
9522a2ff9 Srinivas Pandruvada     2016-04-27   48  #endif
9522a2ff9 Srinivas Pandruvada     2016-04-27   49  
f0fe3cd7e Dirk Brandewie          2014-05-29   50  #define FRAC_BITS 8
93f0822df Dirk Brandewie          2013-02-06   51  #define int_tofp(X) ((int64_t)(X) << FRAC_BITS)
93f0822df Dirk Brandewie          2013-02-06   52  #define fp_toint(X) ((X) >> FRAC_BITS)
f0fe3cd7e Dirk Brandewie          2014-05-29   53  
a1c9787dc Rafael J. Wysocki       2016-05-11   54  #define EXT_BITS 6
a1c9787dc Rafael J. Wysocki       2016-05-11   55  #define EXT_FRAC_BITS (EXT_BITS + FRAC_BITS)
a1c9787dc Rafael J. Wysocki       2016-05-11   56  
93f0822df Dirk Brandewie          2013-02-06   57  static inline int32_t mul_fp(int32_t x, int32_t y)
93f0822df Dirk Brandewie          2013-02-06   58  {
93f0822df Dirk Brandewie          2013-02-06   59  	return ((int64_t)x * (int64_t)y) >> FRAC_BITS;
93f0822df Dirk Brandewie          2013-02-06   60  }
93f0822df Dirk Brandewie          2013-02-06   61  
7180dddf7 Prarit Bhargava         2015-06-15   62  static inline int32_t div_fp(s64 x, s64 y)
93f0822df Dirk Brandewie          2013-02-06   63  {
7180dddf7 Prarit Bhargava         2015-06-15   64  	return div64_s64((int64_t)x << FRAC_BITS, y);
93f0822df Dirk Brandewie          2013-02-06   65  }
93f0822df Dirk Brandewie          2013-02-06   66  
d022a65ed Dirk Brandewie          2014-10-13   67  static inline int ceiling_fp(int32_t x)
d022a65ed Dirk Brandewie          2014-10-13   68  {
d022a65ed Dirk Brandewie          2014-10-13   69  	int mask, ret;
d022a65ed Dirk Brandewie          2014-10-13   70  
d022a65ed Dirk Brandewie          2014-10-13   71  	ret = fp_toint(x);
d022a65ed Dirk Brandewie          2014-10-13   72  	mask = (1 << FRAC_BITS) - 1;
d022a65ed Dirk Brandewie          2014-10-13   73  	if (x & mask)
d022a65ed Dirk Brandewie          2014-10-13   74  		ret += 1;
d022a65ed Dirk Brandewie          2014-10-13   75  	return ret;
d022a65ed Dirk Brandewie          2014-10-13   76  }
d022a65ed Dirk Brandewie          2014-10-13   77  
a1c9787dc Rafael J. Wysocki       2016-05-11   78  static inline u64 mul_ext_fp(u64 x, u64 y)
a1c9787dc Rafael J. Wysocki       2016-05-11   79  {
a1c9787dc Rafael J. Wysocki       2016-05-11   80  	return (x * y) >> EXT_FRAC_BITS;
a1c9787dc Rafael J. Wysocki       2016-05-11   81  }
a1c9787dc Rafael J. Wysocki       2016-05-11   82  
a1c9787dc Rafael J. Wysocki       2016-05-11   83  static inline u64 div_ext_fp(u64 x, u64 y)
a1c9787dc Rafael J. Wysocki       2016-05-11   84  {
a1c9787dc Rafael J. Wysocki       2016-05-11   85  	return div64_u64(x << EXT_FRAC_BITS, y);
a1c9787dc Rafael J. Wysocki       2016-05-11   86  }
a1c9787dc Rafael J. Wysocki       2016-05-11   87  
13ad7701f Srinivas Pandruvada     2016-04-03   88  /**
13ad7701f Srinivas Pandruvada     2016-04-03   89   * struct sample -	Store performance sample
a1c9787dc Rafael J. Wysocki       2016-05-11   90   * @core_avg_perf:	Ratio of APERF/MPERF which is the actual average
13ad7701f Srinivas Pandruvada     2016-04-03   91   *			performance during last sample period
13ad7701f Srinivas Pandruvada     2016-04-03   92   * @busy_scaled:	Scaled busy value which is used to calculate next
a1c9787dc Rafael J. Wysocki       2016-05-11   93   *			P state. This can be different than core_avg_perf
13ad7701f Srinivas Pandruvada     2016-04-03   94   *			to account for cpu idle period
13ad7701f Srinivas Pandruvada     2016-04-03   95   * @aperf:		Difference of actual performance frequency clock count
13ad7701f Srinivas Pandruvada     2016-04-03   96   *			read from APERF MSR between last and current sample
13ad7701f Srinivas Pandruvada     2016-04-03   97   * @mperf:		Difference of maximum performance frequency clock count
13ad7701f Srinivas Pandruvada     2016-04-03   98   *			read from MPERF MSR between last and current sample
13ad7701f Srinivas Pandruvada     2016-04-03   99   * @tsc:		Difference of time stamp counter between last and
13ad7701f Srinivas Pandruvada     2016-04-03  100   *			current sample
13ad7701f Srinivas Pandruvada     2016-04-03  101   * @time:		Current time from scheduler
13ad7701f Srinivas Pandruvada     2016-04-03  102   *
13ad7701f Srinivas Pandruvada     2016-04-03  103   * This structure is used in the cpudata structure to store performance sample
13ad7701f Srinivas Pandruvada     2016-04-03  104   * data for choosing next P State.
13ad7701f Srinivas Pandruvada     2016-04-03  105   */
93f0822df Dirk Brandewie          2013-02-06  106  struct sample {
a1c9787dc Rafael J. Wysocki       2016-05-11  107  	int32_t core_avg_perf;
157386b6f Philippe Longepe        2015-12-04  108  	int32_t busy_scaled;
93f0822df Dirk Brandewie          2013-02-06  109  	u64 aperf;
93f0822df Dirk Brandewie          2013-02-06  110  	u64 mperf;
4055fad34 Doug Smythies           2015-04-11  111  	u64 tsc;
a4675fbc4 Rafael J. Wysocki       2016-02-05  112  	u64 time;
93f0822df Dirk Brandewie          2013-02-06  113  };
93f0822df Dirk Brandewie          2013-02-06  114  
13ad7701f Srinivas Pandruvada     2016-04-03  115  /**
13ad7701f Srinivas Pandruvada     2016-04-03  116   * struct pstate_data - Store P state data
13ad7701f Srinivas Pandruvada     2016-04-03  117   * @current_pstate:	Current requested P state
13ad7701f Srinivas Pandruvada     2016-04-03  118   * @min_pstate:		Min P state possible for this platform
13ad7701f Srinivas Pandruvada     2016-04-03  119   * @max_pstate:		Max P state possible for this platform
13ad7701f Srinivas Pandruvada     2016-04-03  120   * @max_pstate_physical:This is physical Max P state for a processor
13ad7701f Srinivas Pandruvada     2016-04-03  121   *			This can be higher than the max_pstate which can
13ad7701f Srinivas Pandruvada     2016-04-03  122   *			be limited by platform thermal design power limits
13ad7701f Srinivas Pandruvada     2016-04-03  123   * @scaling:		Scaling factor to  convert frequency to cpufreq
13ad7701f Srinivas Pandruvada     2016-04-03  124   *			frequency units
13ad7701f Srinivas Pandruvada     2016-04-03  125   * @turbo_pstate:	Max Turbo P state possible for this platform
13ad7701f Srinivas Pandruvada     2016-04-03  126   *
13ad7701f Srinivas Pandruvada     2016-04-03  127   * Stores the per cpu model P state limits and current P state.
13ad7701f Srinivas Pandruvada     2016-04-03  128   */
93f0822df Dirk Brandewie          2013-02-06  129  struct pstate_data {
93f0822df Dirk Brandewie          2013-02-06  130  	int	current_pstate;
93f0822df Dirk Brandewie          2013-02-06  131  	int	min_pstate;
93f0822df Dirk Brandewie          2013-02-06  132  	int	max_pstate;
3bcc6fa97 Srinivas Pandruvada     2015-10-14  133  	int	max_pstate_physical;
b27580b05 Dirk Brandewie          2014-10-13  134  	int	scaling;
93f0822df Dirk Brandewie          2013-02-06  135  	int	turbo_pstate;
93f0822df Dirk Brandewie          2013-02-06  136  };
93f0822df Dirk Brandewie          2013-02-06  137  
13ad7701f Srinivas Pandruvada     2016-04-03  138  /**
13ad7701f Srinivas Pandruvada     2016-04-03  139   * struct vid_data -	Stores voltage information data
13ad7701f Srinivas Pandruvada     2016-04-03  140   * @min:		VID data for this platform corresponding to
13ad7701f Srinivas Pandruvada     2016-04-03  141   *			the lowest P state
13ad7701f Srinivas Pandruvada     2016-04-03  142   * @max:		VID data corresponding to the highest P State.
13ad7701f Srinivas Pandruvada     2016-04-03  143   * @turbo:		VID data for turbo P state
13ad7701f Srinivas Pandruvada     2016-04-03  144   * @ratio:		Ratio of (vid max - vid min) /
13ad7701f Srinivas Pandruvada     2016-04-03  145   *			(max P state - Min P State)
13ad7701f Srinivas Pandruvada     2016-04-03  146   *
13ad7701f Srinivas Pandruvada     2016-04-03  147   * Stores the voltage data for DVFS (Dynamic Voltage and Frequency Scaling)
13ad7701f Srinivas Pandruvada     2016-04-03  148   * This data is used in Atom platforms, where in addition to target P state,
13ad7701f Srinivas Pandruvada     2016-04-03  149   * the voltage data needs to be specified to select next P State.
13ad7701f Srinivas Pandruvada     2016-04-03  150   */
007bea098 Dirk Brandewie          2013-12-18  151  struct vid_data {
21855ff5b Dirk Brandewie          2014-05-08  152  	int min;
21855ff5b Dirk Brandewie          2014-05-08  153  	int max;
21855ff5b Dirk Brandewie          2014-05-08  154  	int turbo;
007bea098 Dirk Brandewie          2013-12-18  155  	int32_t ratio;
007bea098 Dirk Brandewie          2013-12-18  156  };
007bea098 Dirk Brandewie          2013-12-18  157  
13ad7701f Srinivas Pandruvada     2016-04-03  158  /**
13ad7701f Srinivas Pandruvada     2016-04-03  159   * struct _pid -	Stores PID data
13ad7701f Srinivas Pandruvada     2016-04-03  160   * @setpoint:		Target set point for busyness or performance
13ad7701f Srinivas Pandruvada     2016-04-03  161   * @integral:		Storage for accumulated error values
13ad7701f Srinivas Pandruvada     2016-04-03  162   * @p_gain:		PID proportional gain
13ad7701f Srinivas Pandruvada     2016-04-03  163   * @i_gain:		PID integral gain
13ad7701f Srinivas Pandruvada     2016-04-03  164   * @d_gain:		PID derivative gain
13ad7701f Srinivas Pandruvada     2016-04-03  165   * @deadband:		PID deadband
13ad7701f Srinivas Pandruvada     2016-04-03  166   * @last_err:		Last error storage for integral part of PID calculation
13ad7701f Srinivas Pandruvada     2016-04-03  167   *
13ad7701f Srinivas Pandruvada     2016-04-03  168   * Stores PID coefficients and last error for PID controller.
13ad7701f Srinivas Pandruvada     2016-04-03  169   */
93f0822df Dirk Brandewie          2013-02-06  170  struct _pid {
93f0822df Dirk Brandewie          2013-02-06  171  	int setpoint;
93f0822df Dirk Brandewie          2013-02-06  172  	int32_t integral;
93f0822df Dirk Brandewie          2013-02-06  173  	int32_t p_gain;
93f0822df Dirk Brandewie          2013-02-06  174  	int32_t i_gain;
93f0822df Dirk Brandewie          2013-02-06  175  	int32_t d_gain;
93f0822df Dirk Brandewie          2013-02-06  176  	int deadband;
d253d2a52 Brennan Shacklett       2013-10-21  177  	int32_t last_err;
93f0822df Dirk Brandewie          2013-02-06  178  };
93f0822df Dirk Brandewie          2013-02-06  179  
13ad7701f Srinivas Pandruvada     2016-04-03  180  /**
13ad7701f Srinivas Pandruvada     2016-04-03  181   * struct cpudata -	Per CPU instance data storage
13ad7701f Srinivas Pandruvada     2016-04-03  182   * @cpu:		CPU number for this instance data
13ad7701f Srinivas Pandruvada     2016-04-03  183   * @update_util:	CPUFreq utility callback information
4578ee7e1 Chen Yu                 2016-05-11  184   * @update_util_set:	CPUFreq utility callback is set
13ad7701f Srinivas Pandruvada     2016-04-03  185   * @pstate:		Stores P state limits for this CPU
13ad7701f Srinivas Pandruvada     2016-04-03  186   * @vid:		Stores VID limits for this CPU
13ad7701f Srinivas Pandruvada     2016-04-03  187   * @pid:		Stores PID parameters for this CPU
13ad7701f Srinivas Pandruvada     2016-04-03  188   * @last_sample_time:	Last Sample time
13ad7701f Srinivas Pandruvada     2016-04-03  189   * @prev_aperf:		Last APERF value read from APERF MSR
13ad7701f Srinivas Pandruvada     2016-04-03  190   * @prev_mperf:		Last MPERF value read from MPERF MSR
13ad7701f Srinivas Pandruvada     2016-04-03  191   * @prev_tsc:		Last timestamp counter (TSC) value
13ad7701f Srinivas Pandruvada     2016-04-03  192   * @prev_cummulative_iowait: IO Wait time difference from last and
13ad7701f Srinivas Pandruvada     2016-04-03  193   *			current sample
13ad7701f Srinivas Pandruvada     2016-04-03  194   * @sample:		Storage for storing last Sample data
9522a2ff9 Srinivas Pandruvada     2016-04-27  195   * @acpi_perf_data:	Stores ACPI perf information read from _PSS
9522a2ff9 Srinivas Pandruvada     2016-04-27  196   * @valid_pss_table:	Set to true for valid ACPI _PSS entries found
cc2eccd40 Srinivas Pandruvada     2016-09-01  197   * @cppc_data:		Stores CPPC information for HWP capable CPUs
cc2eccd40 Srinivas Pandruvada     2016-09-01  198   * @valid_cppc_table:	Set to true for valid CPPC entries are found
13ad7701f Srinivas Pandruvada     2016-04-03  199   *
13ad7701f Srinivas Pandruvada     2016-04-03  200   * This structure stores per CPU instance data for all CPUs.
13ad7701f Srinivas Pandruvada     2016-04-03  201   */
93f0822df Dirk Brandewie          2013-02-06 @202  struct cpudata {
93f0822df Dirk Brandewie          2013-02-06  203  	int cpu;
93f0822df Dirk Brandewie          2013-02-06  204  
a4675fbc4 Rafael J. Wysocki       2016-02-05  205  	struct update_util_data update_util;
4578ee7e1 Chen Yu                 2016-05-11  206  	bool   update_util_set;
93f0822df Dirk Brandewie          2013-02-06  207  
93f0822df Dirk Brandewie          2013-02-06  208  	struct pstate_data pstate;
007bea098 Dirk Brandewie          2013-12-18  209  	struct vid_data vid;
93f0822df Dirk Brandewie          2013-02-06  210  	struct _pid pid;
93f0822df Dirk Brandewie          2013-02-06  211  
a4675fbc4 Rafael J. Wysocki       2016-02-05  212  	u64	last_sample_time;
93f0822df Dirk Brandewie          2013-02-06  213  	u64	prev_aperf;
93f0822df Dirk Brandewie          2013-02-06  214  	u64	prev_mperf;
4055fad34 Doug Smythies           2015-04-11  215  	u64	prev_tsc;
63d1d656a Philippe Longepe        2015-12-04  216  	u64	prev_cummulative_iowait;
d37e2b764 Dirk Brandewie          2014-02-12  217  	struct sample sample;
9522a2ff9 Srinivas Pandruvada     2016-04-27  218  #ifdef CONFIG_ACPI
9522a2ff9 Srinivas Pandruvada     2016-04-27  219  	struct acpi_processor_performance acpi_perf_data;
9522a2ff9 Srinivas Pandruvada     2016-04-27  220  	bool valid_pss_table;
cc2eccd40 Srinivas Pandruvada     2016-09-01  221  	struct cppc_cpudata *cppc_data;
cc2eccd40 Srinivas Pandruvada     2016-09-01  222  	bool valid_cppc_table;
9522a2ff9 Srinivas Pandruvada     2016-04-27  223  #endif
93f0822df Dirk Brandewie          2013-02-06  224  };
93f0822df Dirk Brandewie          2013-02-06  225  
93f0822df Dirk Brandewie          2013-02-06  226  static struct cpudata **all_cpu_data;
13ad7701f Srinivas Pandruvada     2016-04-03  227  
13ad7701f Srinivas Pandruvada     2016-04-03  228  /**
13ad7701f Srinivas Pandruvada     2016-04-03  229   * struct pid_adjust_policy - Stores static PID configuration data
13ad7701f Srinivas Pandruvada     2016-04-03  230   * @sample_rate_ms:	PID calculation sample rate in ms
13ad7701f Srinivas Pandruvada     2016-04-03  231   * @sample_rate_ns:	Sample rate calculation in ns
13ad7701f Srinivas Pandruvada     2016-04-03  232   * @deadband:		PID deadband
13ad7701f Srinivas Pandruvada     2016-04-03  233   * @setpoint:		PID Setpoint
13ad7701f Srinivas Pandruvada     2016-04-03  234   * @p_gain_pct:		PID proportional gain
13ad7701f Srinivas Pandruvada     2016-04-03  235   * @i_gain_pct:		PID integral gain
13ad7701f Srinivas Pandruvada     2016-04-03  236   * @d_gain_pct:		PID derivative gain
13ad7701f Srinivas Pandruvada     2016-04-03  237   *
13ad7701f Srinivas Pandruvada     2016-04-03  238   * Stores per CPU model static PID configuration data.
13ad7701f Srinivas Pandruvada     2016-04-03  239   */
93f0822df Dirk Brandewie          2013-02-06  240  struct pstate_adjust_policy {
93f0822df Dirk Brandewie          2013-02-06  241  	int sample_rate_ms;
a4675fbc4 Rafael J. Wysocki       2016-02-05  242  	s64 sample_rate_ns;
93f0822df Dirk Brandewie          2013-02-06  243  	int deadband;
93f0822df Dirk Brandewie          2013-02-06  244  	int setpoint;
93f0822df Dirk Brandewie          2013-02-06  245  	int p_gain_pct;
93f0822df Dirk Brandewie          2013-02-06  246  	int d_gain_pct;
93f0822df Dirk Brandewie          2013-02-06  247  	int i_gain_pct;
93f0822df Dirk Brandewie          2013-02-06  248  };
93f0822df Dirk Brandewie          2013-02-06  249  
13ad7701f Srinivas Pandruvada     2016-04-03  250  /**
13ad7701f Srinivas Pandruvada     2016-04-03  251   * struct pstate_funcs - Per CPU model specific callbacks
13ad7701f Srinivas Pandruvada     2016-04-03  252   * @get_max:		Callback to get maximum non turbo effective P state
13ad7701f Srinivas Pandruvada     2016-04-03  253   * @get_max_physical:	Callback to get maximum non turbo physical P state
13ad7701f Srinivas Pandruvada     2016-04-03  254   * @get_min:		Callback to get minimum P state
13ad7701f Srinivas Pandruvada     2016-04-03  255   * @get_turbo:		Callback to get turbo P state
13ad7701f Srinivas Pandruvada     2016-04-03  256   * @get_scaling:	Callback to get frequency scaling factor
13ad7701f Srinivas Pandruvada     2016-04-03  257   * @get_val:		Callback to convert P state to actual MSR write value
13ad7701f Srinivas Pandruvada     2016-04-03  258   * @get_vid:		Callback to get VID data for Atom platforms
13ad7701f Srinivas Pandruvada     2016-04-03  259   * @get_target_pstate:	Callback to a function to calculate next P state to use
13ad7701f Srinivas Pandruvada     2016-04-03  260   *
13ad7701f Srinivas Pandruvada     2016-04-03  261   * Core and Atom CPU models have different way to get P State limits. This
13ad7701f Srinivas Pandruvada     2016-04-03  262   * structure is used to store those callbacks.
13ad7701f Srinivas Pandruvada     2016-04-03  263   */
016c81508 Dirk Brandewie          2013-10-21  264  struct pstate_funcs {
016c81508 Dirk Brandewie          2013-10-21  265  	int (*get_max)(void);
3bcc6fa97 Srinivas Pandruvada     2015-10-14  266  	int (*get_max_physical)(void);
016c81508 Dirk Brandewie          2013-10-21  267  	int (*get_min)(void);
016c81508 Dirk Brandewie          2013-10-21  268  	int (*get_turbo)(void);
b27580b05 Dirk Brandewie          2014-10-13  269  	int (*get_scaling)(void);
fdfdb2b13 Rafael J. Wysocki       2016-03-18  270  	u64 (*get_val)(struct cpudata*, int pstate);
007bea098 Dirk Brandewie          2013-12-18  271  	void (*get_vid)(struct cpudata *);
157386b6f Philippe Longepe        2015-12-04  272  	int32_t (*get_target_pstate)(struct cpudata *);
93f0822df Dirk Brandewie          2013-02-06  273  };
93f0822df Dirk Brandewie          2013-02-06  274  
13ad7701f Srinivas Pandruvada     2016-04-03  275  /**
13ad7701f Srinivas Pandruvada     2016-04-03  276   * struct cpu_defaults- Per CPU model default config data
13ad7701f Srinivas Pandruvada     2016-04-03  277   * @pid_policy:	PID config data
13ad7701f Srinivas Pandruvada     2016-04-03  278   * @funcs:		Callback function data
13ad7701f Srinivas Pandruvada     2016-04-03  279   */
016c81508 Dirk Brandewie          2013-10-21  280  struct cpu_defaults {
016c81508 Dirk Brandewie          2013-10-21  281  	struct pstate_adjust_policy pid_policy;
016c81508 Dirk Brandewie          2013-10-21  282  	struct pstate_funcs funcs;
016c81508 Dirk Brandewie          2013-10-21  283  };
016c81508 Dirk Brandewie          2013-10-21  284  
157386b6f Philippe Longepe        2015-12-04  285  static inline int32_t get_target_pstate_use_performance(struct cpudata *cpu);
e70eed2b6 Philippe Longepe        2015-12-04  286  static inline int32_t get_target_pstate_use_cpu_load(struct cpudata *cpu);
157386b6f Philippe Longepe        2015-12-04  287  
4a7cb7a96 Jisheng Zhang           2016-06-27  288  static struct pstate_adjust_policy pid_params __read_mostly;
4a7cb7a96 Jisheng Zhang           2016-06-27  289  static struct pstate_funcs pstate_funcs __read_mostly;
4a7cb7a96 Jisheng Zhang           2016-06-27  290  static int hwp_active __read_mostly;
016c81508 Dirk Brandewie          2013-10-21  291  
9522a2ff9 Srinivas Pandruvada     2016-04-27  292  #ifdef CONFIG_ACPI
9522a2ff9 Srinivas Pandruvada     2016-04-27  293  static bool acpi_ppc;
9522a2ff9 Srinivas Pandruvada     2016-04-27  294  #endif
13ad7701f Srinivas Pandruvada     2016-04-03  295  
13ad7701f Srinivas Pandruvada     2016-04-03  296  /**
13ad7701f Srinivas Pandruvada     2016-04-03  297   * struct perf_limits - Store user and policy limits
13ad7701f Srinivas Pandruvada     2016-04-03  298   * @no_turbo:		User requested turbo state from intel_pstate sysfs
13ad7701f Srinivas Pandruvada     2016-04-03  299   * @turbo_disabled:	Platform turbo status either from msr
13ad7701f Srinivas Pandruvada     2016-04-03  300   *			MSR_IA32_MISC_ENABLE or when maximum available pstate
13ad7701f Srinivas Pandruvada     2016-04-03  301   *			matches the maximum turbo pstate
13ad7701f Srinivas Pandruvada     2016-04-03  302   * @max_perf_pct:	Effective maximum performance limit in percentage, this
13ad7701f Srinivas Pandruvada     2016-04-03  303   *			is minimum of either limits enforced by cpufreq policy
13ad7701f Srinivas Pandruvada     2016-04-03  304   *			or limits from user set limits via intel_pstate sysfs
13ad7701f Srinivas Pandruvada     2016-04-03  305   * @min_perf_pct:	Effective minimum performance limit in percentage, this
13ad7701f Srinivas Pandruvada     2016-04-03  306   *			is maximum of either limits enforced by cpufreq policy
13ad7701f Srinivas Pandruvada     2016-04-03  307   *			or limits from user set limits via intel_pstate sysfs
13ad7701f Srinivas Pandruvada     2016-04-03  308   * @max_perf:		This is a scaled value between 0 to 255 for max_perf_pct
13ad7701f Srinivas Pandruvada     2016-04-03  309   *			This value is used to limit max pstate
13ad7701f Srinivas Pandruvada     2016-04-03  310   * @min_perf:		This is a scaled value between 0 to 255 for min_perf_pct
13ad7701f Srinivas Pandruvada     2016-04-03  311   *			This value is used to limit min pstate
13ad7701f Srinivas Pandruvada     2016-04-03  312   * @max_policy_pct:	The maximum performance in percentage enforced by
13ad7701f Srinivas Pandruvada     2016-04-03  313   *			cpufreq setpolicy interface
13ad7701f Srinivas Pandruvada     2016-04-03  314   * @max_sysfs_pct:	The maximum performance in percentage enforced by
13ad7701f Srinivas Pandruvada     2016-04-03  315   *			intel pstate sysfs interface
13ad7701f Srinivas Pandruvada     2016-04-03  316   * @min_policy_pct:	The minimum performance in percentage enforced by
13ad7701f Srinivas Pandruvada     2016-04-03  317   *			cpufreq setpolicy interface
13ad7701f Srinivas Pandruvada     2016-04-03  318   * @min_sysfs_pct:	The minimum performance in percentage enforced by
13ad7701f Srinivas Pandruvada     2016-04-03  319   *			intel pstate sysfs interface
13ad7701f Srinivas Pandruvada     2016-04-03  320   *
13ad7701f Srinivas Pandruvada     2016-04-03  321   * Storage for user and policy defined limits.
13ad7701f Srinivas Pandruvada     2016-04-03  322   */
93f0822df Dirk Brandewie          2013-02-06  323  struct perf_limits {
93f0822df Dirk Brandewie          2013-02-06  324  	int no_turbo;
dd5fbf70f Dirk Brandewie          2014-06-20  325  	int turbo_disabled;
93f0822df Dirk Brandewie          2013-02-06  326  	int max_perf_pct;
93f0822df Dirk Brandewie          2013-02-06  327  	int min_perf_pct;
93f0822df Dirk Brandewie          2013-02-06  328  	int32_t max_perf;
93f0822df Dirk Brandewie          2013-02-06  329  	int32_t min_perf;
d8f469e9c Dirk Brandewie          2013-05-07  330  	int max_policy_pct;
d8f469e9c Dirk Brandewie          2013-05-07  331  	int max_sysfs_pct;
a04759924 Kristen Carlson Accardi 2015-01-29  332  	int min_policy_pct;
a04759924 Kristen Carlson Accardi 2015-01-29  333  	int min_sysfs_pct;
93f0822df Dirk Brandewie          2013-02-06  334  };
93f0822df Dirk Brandewie          2013-02-06  335  
51443fbf3 Prarit Bhargava         2015-10-15  336  static struct perf_limits performance_limits = {
51443fbf3 Prarit Bhargava         2015-10-15  337  	.no_turbo = 0,
51443fbf3 Prarit Bhargava         2015-10-15  338  	.turbo_disabled = 0,
51443fbf3 Prarit Bhargava         2015-10-15  339  	.max_perf_pct = 100,
51443fbf3 Prarit Bhargava         2015-10-15  340  	.max_perf = int_tofp(1),
51443fbf3 Prarit Bhargava         2015-10-15  341  	.min_perf_pct = 100,
51443fbf3 Prarit Bhargava         2015-10-15  342  	.min_perf = int_tofp(1),
51443fbf3 Prarit Bhargava         2015-10-15  343  	.max_policy_pct = 100,
51443fbf3 Prarit Bhargava         2015-10-15  344  	.max_sysfs_pct = 100,
51443fbf3 Prarit Bhargava         2015-10-15  345  	.min_policy_pct = 0,
51443fbf3 Prarit Bhargava         2015-10-15  346  	.min_sysfs_pct = 0,
51443fbf3 Prarit Bhargava         2015-10-15  347  };
51443fbf3 Prarit Bhargava         2015-10-15  348  
51443fbf3 Prarit Bhargava         2015-10-15  349  static struct perf_limits powersave_limits = {
93f0822df Dirk Brandewie          2013-02-06  350  	.no_turbo = 0,
4521e1a0c Gabriele Mazzotta       2014-10-13  351  	.turbo_disabled = 0,
93f0822df Dirk Brandewie          2013-02-06  352  	.max_perf_pct = 100,
93f0822df Dirk Brandewie          2013-02-06  353  	.max_perf = int_tofp(1),
93f0822df Dirk Brandewie          2013-02-06  354  	.min_perf_pct = 0,
93f0822df Dirk Brandewie          2013-02-06  355  	.min_perf = 0,
d8f469e9c Dirk Brandewie          2013-05-07  356  	.max_policy_pct = 100,
d8f469e9c Dirk Brandewie          2013-05-07  357  	.max_sysfs_pct = 100,
a04759924 Kristen Carlson Accardi 2015-01-29  358  	.min_policy_pct = 0,
a04759924 Kristen Carlson Accardi 2015-01-29  359  	.min_sysfs_pct = 0,
93f0822df Dirk Brandewie          2013-02-06  360  };
93f0822df Dirk Brandewie          2013-02-06  361  
51443fbf3 Prarit Bhargava         2015-10-15  362  #ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
51443fbf3 Prarit Bhargava         2015-10-15  363  static struct perf_limits *limits = &performance_limits;
51443fbf3 Prarit Bhargava         2015-10-15  364  #else
51443fbf3 Prarit Bhargava         2015-10-15  365  static struct perf_limits *limits = &powersave_limits;
51443fbf3 Prarit Bhargava         2015-10-15  366  #endif
51443fbf3 Prarit Bhargava         2015-10-15  367  
9522a2ff9 Srinivas Pandruvada     2016-04-27  368  #ifdef CONFIG_ACPI
cc2eccd40 Srinivas Pandruvada     2016-09-01  369  static cpumask_t cppc_rd_cpu_mask;
cc2eccd40 Srinivas Pandruvada     2016-09-01  370  
cc2eccd40 Srinivas Pandruvada     2016-09-01  371  /* Call set_sched_itmt from a work function to be able to use hotplug locks */
cc2eccd40 Srinivas Pandruvada     2016-09-01  372  static void intel_pstste_sched_itmt_work_fn(struct work_struct *work)
cc2eccd40 Srinivas Pandruvada     2016-09-01  373  {
cc2eccd40 Srinivas Pandruvada     2016-09-01  374  	set_sched_itmt(true);
cc2eccd40 Srinivas Pandruvada     2016-09-01  375  }
cc2eccd40 Srinivas Pandruvada     2016-09-01  376  
cc2eccd40 Srinivas Pandruvada     2016-09-01  377  static DECLARE_WORK(sched_itmt_work, intel_pstste_sched_itmt_work_fn);
2b3ec7650 Srinivas Pandruvada     2016-04-27  378  
2b3ec7650 Srinivas Pandruvada     2016-04-27  379  static bool intel_pstate_get_ppc_enable_status(void)
2b3ec7650 Srinivas Pandruvada     2016-04-27  380  {
2b3ec7650 Srinivas Pandruvada     2016-04-27  381  	if (acpi_gbl_FADT.preferred_profile == PM_ENTERPRISE_SERVER ||
2b3ec7650 Srinivas Pandruvada     2016-04-27  382  	    acpi_gbl_FADT.preferred_profile == PM_PERFORMANCE_SERVER)
2b3ec7650 Srinivas Pandruvada     2016-04-27  383  		return true;
2b3ec7650 Srinivas Pandruvada     2016-04-27  384  
2b3ec7650 Srinivas Pandruvada     2016-04-27  385  	return acpi_ppc;
2b3ec7650 Srinivas Pandruvada     2016-04-27  386  }
2b3ec7650 Srinivas Pandruvada     2016-04-27  387  
9522a2ff9 Srinivas Pandruvada     2016-04-27  388  static void intel_pstate_init_acpi_perf_limits(struct cpufreq_policy *policy)
9522a2ff9 Srinivas Pandruvada     2016-04-27  389  {
9522a2ff9 Srinivas Pandruvada     2016-04-27  390  	struct cpudata *cpu;
9522a2ff9 Srinivas Pandruvada     2016-04-27  391  	int ret;
9522a2ff9 Srinivas Pandruvada     2016-04-27  392  	int i;
9522a2ff9 Srinivas Pandruvada     2016-04-27  393  
cc2eccd40 Srinivas Pandruvada     2016-09-01  394  	cpu = all_cpu_data[policy->cpu];
cc2eccd40 Srinivas Pandruvada     2016-09-01  395  
cc2eccd40 Srinivas Pandruvada     2016-09-01  396  	if (hwp_active) {
cc2eccd40 Srinivas Pandruvada     2016-09-01  397  		struct cppc_perf_caps *perf_caps;
cc2eccd40 Srinivas Pandruvada     2016-09-01  398  
cc2eccd40 Srinivas Pandruvada     2016-09-01 @399  		cpu->cppc_data = kzalloc(sizeof(struct cppc_cpudata),
cc2eccd40 Srinivas Pandruvada     2016-09-01  400  					 GFP_KERNEL);
cc2eccd40 Srinivas Pandruvada     2016-09-01  401  		if (!cpu->cppc_data)
e59a8f7ff Srinivas Pandruvada     2016-05-04  402  			return;

:::::: The code at line 202 was first introduced by commit
:::::: 93f0822dff5dae2f0a2645f16300c14af41ca777 cpufreq/x86: Add P-state driver for sandy bridge.

:::::: TO: Dirk Brandewie <dirk.brandewie@gmail.com>
:::::: CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

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

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 54768 bytes --]

  reply	other threads:[~2016-09-01 22:32 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-01 20:33 [PATCH v2 0/8] Support Intel® Turbo Boost Max Technology 3.0 Srinivas Pandruvada
2016-09-01 20:33 ` [PATCH v2 1/8] sched, x86: Add SD_ASYM_PACKING flags to x86 cpu topology for ITMT Srinivas Pandruvada
2016-09-01 20:33 ` [PATCH v2 2/8] sched: Extend scheduler's asym packing Srinivas Pandruvada
2016-09-08  8:01   ` Peter Zijlstra
2016-09-08 18:03     ` Tim Chen
2016-09-08 18:21       ` Peter Zijlstra
2016-09-01 20:33 ` [PATCH v2 3/8] x86, cpu: provide a function topology_num_packages to enumerate #packages Srinivas Pandruvada
2016-09-01 20:33 ` [PATCH v2 4/8] sched, x86: use arch_update_cpu_topology to indicate x86 need sched domain rebuild Srinivas Pandruvada
2016-09-01 20:33 ` [PATCH v2 5/8] sched,x86: Enable Turbo Boost Max Technology Srinivas Pandruvada
2016-09-08  7:59   ` Peter Zijlstra
2016-09-08 18:09     ` Tim Chen
2016-09-08 18:22       ` Peter Zijlstra
2016-09-08 18:28         ` Srinivas Pandruvada
2016-09-08 18:33           ` Peter Zijlstra
2016-09-08 18:41             ` Srinivas Pandruvada
2016-09-08 21:22           ` Rafael J. Wysocki
2016-09-01 20:33 ` [PATCH v2 6/8] acpi: bus: Enable HWP CPPC objects Srinivas Pandruvada
2016-09-01 23:15   ` kbuild test robot
2016-09-01 23:46     ` Srinivas Pandruvada
2016-09-01 20:33 ` [PATCH v2 7/8] acpi: bus: Set _OSC for diverse core support Srinivas Pandruvada
2016-09-01 20:33 ` [PATCH v2 8/8] cpufreq: intel_pstate: Use CPPC to get max performance Srinivas Pandruvada
2016-09-01 22:31   ` kbuild test robot [this message]
2016-09-08  8:02 ` [PATCH v2 0/8] Support Intel® Turbo Boost Max Technology 3.0 Peter Zijlstra
2016-09-15 12:14 ` Pavel Machek
2016-09-15 12:46   ` One Thousand Gnomes
2016-09-16 16:03     ` Tim Chen

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=201609020616.X0hzEvoR%fengguang.wu@intel.com \
    --to=lkp@intel.com \
    --cc=bp@suse.de \
    --cc=kbuild-all@01.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rjw@rjwysocki.net \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=tglx@linutronix.de \
    --cc=tim.c.chen@linux.intel.com \
    --cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).