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]
Date:	Wed, 16 Jan 2013 20:20:08 +0800
From:	Zhang Rui <rui.zhang@...el.com>
To:	Jacob Pan <jacob.jun.pan@...ux.intel.com>
Cc:	Linux PM <linux-pm@...r.kernel.org>,
	LKML <linux-kernel@...r.kernel.org>,
	Peter Zijlstra <a.p.zijlstra@...llo.nl>,
	Rafael Wysocki <rafael.j.wysocki@...el.com>,
	Len Brown <len.brown@...el.com>,
	Thomas Gleixner <tglx@...utronix.de>,
	"H. Peter Anvin" <hpa@...or.com>, Ingo Molnar <mingo@...e.hu>,
	Joe Perches <joe@...ches.com>, Rob Landley <rob@...dley.net>,
	Arjan van de Ven <arjan@...ux.intel.com>,
	Paul McKenney <paulmck@...ux.vnet.ibm.com>
Subject: Re: [PATCH v6 3/3] PM: Introduce Intel PowerClamp Driver

On Wed, 2013-01-16 at 20:18 +0800, Zhang Rui wrote:
> Hi, Jacob,
> 
> On Fri, 2013-01-04 at 03:12 -0800, Jacob Pan wrote:
> > Intel PowerClamp driver performs synchronized idle injection across
> > all online CPUs. The goal is to maintain a given package level C-state
> > ratio.
> > 
> > Compared to other throttling methods already exist in the kernel,
> > such as ACPI PAD (taking CPUs offline) and clock modulation, this is often
> > more efficient in terms of performance per watt.
> > 
> > Please refer to Documentation/thermal/intel_powerclamp.txt for more details.
> > 
> > Signed-off-by: Arjan van de Ven <arjan@...ux.intel.com>
> > Signed-off-by: Jacob Pan <jacob.jun.pan@...ux.intel.com>
> > ---
> >  Documentation/thermal/intel_powerclamp.txt |  307 +++++++++++
> >  drivers/thermal/Kconfig                    |   10 +
> >  drivers/thermal/Makefile                   |    2 +
> >  drivers/thermal/intel_powerclamp.c         |  788 ++++++++++++++++++++++++++++
> >  4 files changed, 1107 insertions(+)
> >  create mode 100644 Documentation/thermal/intel_powerclamp.txt
> >  create mode 100644 drivers/thermal/intel_powerclamp.c
> 
> > diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
> > index c2c77d1..7d90ab8 100644
> > --- a/drivers/thermal/Kconfig
> > +++ b/drivers/thermal/Kconfig
> > @@ -122,4 +122,14 @@ config DB8500_CPUFREQ_COOLING
> >  	  bound cpufreq cooling device turns active to set CPU frequency low to
> >  	  cool down the CPU.
> >  
> > +config INTEL_POWERCLAMP
> > +	tristate "Intel PowerClamp idle injection driver"
> > +	depends on THERMAL
> > +	depends on X86
> > +	depends on CPU_SUP_INTEL
> > +	help
> > +	  Enable this to enable Intel PowerClamp idle injection driver. This
> > +	  enforce idle time which results in more package C-state residency. The
> > +	  user interface is exposed via generic thermal framework.
> > +
> >  endif
> > diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
> > index d8da683..574f5f5 100644
> > --- a/drivers/thermal/Makefile
> > +++ b/drivers/thermal/Makefile
> > @@ -18,3 +18,5 @@ obj-$(CONFIG_RCAR_THERMAL)	+= rcar_thermal.o
> >  obj-$(CONFIG_EXYNOS_THERMAL)	+= exynos_thermal.o
> >  obj-$(CONFIG_DB8500_THERMAL)	+= db8500_thermal.o
> >  obj-$(CONFIG_DB8500_CPUFREQ_COOLING)	+= db8500_cpufreq_cooling.o
> > +obj-$(CONFIG_INTEL_POWERCLAMP)	+= intel_powerclamp.o
> > +
> > diff --git a/drivers/thermal/intel_powerclamp.c b/drivers/thermal/intel_powerclamp.c
> > new file mode 100644
> > index 0000000..314b6fc
> > --- /dev/null
> > +++ b/drivers/thermal/intel_powerclamp.c
> > @@ -0,0 +1,788 @@
> > +/*
> > + * intel_powerclamp.c - package c-state idle injection
> > + *
> > + * Copyright (c) 2012, Intel Corporation.
> > + *
> > + * Authors:
> > + *     Arjan van de Ven <arjan@...ux.intel.com>
> > + *     Jacob Pan <jacob.jun.pan@...ux.intel.com>
> > + *
> > + * This program is free software; you can redistribute it and/or modify it
> > + * under the terms and conditions of the GNU General Public License,
> > + * version 2, as published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope it will be useful, but WITHOUT
> > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> > + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> > + * more details.
> > + *
> > + * You should have received a copy of the GNU General Public License along with
> > + * this program; if not, write to the Free Software Foundation, Inc.,
> > + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
> > + *
> > + *
> > + *	TODO:
> > + *           1. better handle wakeup from external interrupts, currently a fixed
> > + *              compensation is added to clamping duration when excessive amount
> > + *              of wakeups are observed during idle time. the reason is that in
> > + *              case of external interrupts without need for ack, clamping down
> > + *              cpu in non-irq context does not reduce irq. for majority of the
> > + *              cases, clamping down cpu does help reduce irq as well, we should
> > + *              be able to differenciate the two cases and give a quantitative
> > + *              solution for the irqs that we can control. perhaps based on
> > + *              get_cpu_iowait_time_us()
> > + *
> > + *	     2. synchronization with other hw blocks
> > + *
> > + *
> > + */
> > +
> > +#define pr_fmt(fmt)	KBUILD_MODNAME ": " fmt
> > +
> > +#include <linux/module.h>
> > +#include <linux/kernel.h>
> > +#include <linux/delay.h>
> > +#include <linux/kthread.h>
> > +#include <linux/freezer.h>
> > +#include <linux/cpu.h>
> > +#include <linux/thermal.h>
> > +#include <linux/slab.h>
> > +#include <linux/tick.h>
> > +#include <linux/debugfs.h>
> > +#include <linux/seq_file.h>
> > +#include <linux/nmi.h>
> > +
> drivers/thermal/intel_powerclamp.c: In function ‘clamp_thread’:
> drivers/thermal/intel_powerclamp.c:435:4: error: implicit declaration of
> function ‘local_touch_nmi’ [-Werror=implicit-function-declaration]
> 
> changing to 
> #include <asm/nmi.h>
> fixes the problem.
> 
and this is because I have neither CONFIG_HAVE_NMI_WATCHDOG set nor
CONFIG_HARDLOCKUP_DETECTOR set in my configuration. :)

thanks,
rui

--
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