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: <4D68720C2E767A4AA6A8796D42C8EB59EF5AC4@BGSMSX101.gar.corp.intel.com>
Date:	Tue, 29 Apr 2014 02:45:22 +0000
From:	"R, Durgadoss" <durgadoss.r@...el.com>
To:	Jacob Pan <jacob.jun.pan@...ux.intel.com>,
	Linux PM <linux-pm@...r.kernel.org>,
	"Wysocki, Rafael J" <rafael.j.wysocki@...el.com>,
	LKML <linux-kernel@...r.kernel.org>
CC:	"David E. Box" <david.e.box@...ux.intel.com>,
	Alan Cox <alan@...ux.intel.com>,
	"Accardi, Kristen C" <kristen.c.accardi@...el.com>
Subject: RE: [PATCH 5/5] powercap/rapl: change floor frequency for vallewview

Hi Jacob,

> -----Original Message-----
> From: Jacob Pan [mailto:jacob.jun.pan@...ux.intel.com]
> Sent: Monday, April 28, 2014 7:35 PM
> To: Linux PM; Wysocki, Rafael J; LKML
> Cc: David E. Box; Alan Cox; R, Durgadoss; Accardi, Kristen C; Jacob Pan
> Subject: [PATCH 5/5] powercap/rapl: change floor frequency for vallewview
> 
> RAPL power limit reduce power by limiting CPU P-state and
> other techniques. On Valleyview, RAPL power limit cannot
> go to LFM (low frequency mode) if we don't set the floor
> frequency via IOSF mailbox.
> 
> This patch enables setting of floor frquency such that
> RAPL power limit is more effective.
> 
> Signed-off-by: Jacob Pan <jacob.jun.pan@...ux.intel.com>
> ---
>  drivers/powercap/intel_rapl.c | 27 +++++++++++++++++++--------
>  1 file changed, 19 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c
> index b1cda6f..13e4776 100644
> --- a/drivers/powercap/intel_rapl.c
> +++ b/drivers/powercap/intel_rapl.c
> @@ -32,6 +32,7 @@
> 
>  #include <asm/processor.h>
>  #include <asm/cpu_device_id.h>
> +#include <asm/iosf_mbi.h>
> 
>  /* bitmasks for RAPL MSRs, used by primitive access functions */
>  #define ENERGY_STATUS_MASK      0xffffffff
> @@ -336,11 +337,17 @@ static int find_nr_power_limit(struct rapl_domain *rd)
>  	return i;
>  }
> 
> +#define VLV_CPU_POWER_BUDGET_CTL (0x2)
> +static const struct x86_cpu_id valleyview_id[] = {
> +	{ X86_VENDOR_INTEL, 6, 0x37},
> +	{}
> +};

There are other platforms that have this FloorFreq register as well.
And those addresses are not '0x02'. So, we need to have a cpu_id based
table to define the address of the floor freq register as well.
[This is not specific to valleyview.]

Also, is there a plan to expose this floor freq ratio through Sysfs for
runtime configuration. ? May be through a standard thermal cooling device
interface ?

> +
>  static int set_domain_enable(struct powercap_zone *power_zone, bool mode)
>  {
>  	struct rapl_domain *rd = power_zone_to_rapl_domain(power_zone);
>  	int nr_powerlimit;
> -
> +	u32 mdata = 0;
>  	if (rd->state & DOMAIN_STATE_BIOS_LOCKED)
>  		return -EACCES;
>  	get_online_cpus();
> @@ -350,7 +357,16 @@ static int set_domain_enable(struct powercap_zone
> *power_zone, bool mode)
>  	/* always enable clamp such that p-state can go below OS requested
>  	 * range. power capping priority over guranteed frequency.
>  	 */
> -	rapl_write_data_raw(rd, PL1_CLAMP, mode);
> +	if (x86_match_cpu(valleyview_id)) {
> +		iosf_mbi_read(BT_MBI_UNIT_PMC, BT_MBI_PMC_READ,
> +			VLV_CPU_POWER_BUDGET_CTL, &mdata);
> +		mdata &= ~(0x7f << 8);
> +		mdata |= 1 << 8;
> +		iosf_mbi_write(BT_MBI_UNIT_PMC, BT_MBI_PMC_WRITE,
> +			VLV_CPU_POWER_BUDGET_CTL, mdata);
> +	} else
> +		rapl_write_data_raw(rd, PL1_CLAMP, mode);
> +
>  	/* some domains have pl2 */
>  	if (nr_powerlimit > 1) {
>  		rapl_write_data_raw(rd, PL2_ENABLE, mode);
> @@ -833,11 +849,6 @@ static int rapl_write_data_raw(struct rapl_domain *rd,
>  	return 0;
>  }
> 
> -static const struct x86_cpu_id energy_unit_quirk_ids[] = {
> -	{ X86_VENDOR_INTEL, 6, 0x37},/* Valleyview */
> -	{}
> -};

Same thing here. There are other Atom platforms that need this
conversion quirk. So, please keep the table as is.

Thanks,
Durga

> -
>  static int rapl_check_unit(struct rapl_package *rp, int cpu)
>  {
>  	u64 msr_val;
> @@ -859,7 +870,7 @@ static int rapl_check_unit(struct rapl_package *rp, int cpu)
>  	 */
>  	value = (msr_val & ENERGY_UNIT_MASK) >> ENERGY_UNIT_OFFSET;
>  	/* some CPUs have different way to calculate energy unit */
> -	if (x86_match_cpu(energy_unit_quirk_ids))
> +	if (x86_match_cpu(valleyview_id))
>  		rp->energy_unit_divisor = 1000000 / (1 << value);
>  	else
>  		rp->energy_unit_divisor = 1 << value;
> --
> 1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ