linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lukasz Majewski <l.majewski@samsung.com>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: "Rafael J. Wysocky" <rjw@sisk.pl>,
	"cpufreq@vger.kernel.org" <cpufreq@vger.kernel.org>,
	Linux PM list <linux-pm@vger.kernel.org>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Jonghwa Lee <jonghwa3.lee@samsung.com>,
	Myungjoo Ham <myungjoo.ham@samsung.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Lukasz Majewski <l.majewski@majess.pl>,
	Andre Przywara <andre.przywara@linaro.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Lists linaro-kernel <linaro-kernel@lists.linaro.org>
Subject: Re: [PATCH 2/5] cpufreq:boost: Add support for software based CPU frequency boost
Date: Thu, 06 Jun 2013 13:49:03 +0200	[thread overview]
Message-ID: <20130606134903.5f69b8fb@amdc308.digital.local> (raw)
In-Reply-To: <CAKohpok3KTfSWDU6PdDd4_VW4Pp+6J80yn5cLrYr5RuBNH-agA@mail.gmail.com>

Hi Viresh,

> Hi,
> 
> On 6 June 2013 12:37, Lukasz Majewski <l.majewski@samsung.com> wrote:
> > This commit adds support for software based frequency boosting.
> > Exynos4 SoCs (e.g. 4x12) allow setting of frequency above its normal
> > condition limits. This can be done for some short time.
> >
> > Overclocking (boost) support came from cpufreq driver (which is
> > platform dependent). Hence the data structure describing it is
> > defined at its file.
> >
> > To allow support for either SW and HW (Intel) based boosting, the
> > cpufreq core code has been extended to support both solutions.
> >
> > The main boost switch has been put
> > at /sys/devices/system/cpu/cpufreq/boost.
> 
> Log requires some better paragraphs but I am not concerned about it
> for now.
> 
> > Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> > Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
> > ---
> >  drivers/cpufreq/cpufreq.c    |  156
> > ++++++++++++++++++++++++++++++++++++++++++
> > drivers/cpufreq/freq_table.c |   87 ++++++++++++++++++++++-
> > include/linux/cpufreq.h      |   35 +++++++++- 3 files changed, 275
> > insertions(+), 3 deletions(-)
> 
> My initial view on this patch is: "It is overly engineered and needs
> to get simplified"
> 
> > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> > index ca74e27..8cf9a92 100644
> > --- a/drivers/cpufreq/cpufreq.c
> > +++ b/drivers/cpufreq/cpufreq.c
> > @@ -133,6 +133,11 @@ bool have_governor_per_policy(void)
> >         return cpufreq_driver->have_governor_per_policy;
> >  }
> >
> > +/**
> > + * Global definition of cpufreq_boost structure
> > + */
> > +struct cpufreq_boost *cpufreq_boost;
> 
> Probably just a 'static bool' here cpufreq_boost_enabled. Which takes
> care of selection from sysfs.

The pointer to struct cpufreq_boost is needed for further reference
(as it is now done with struct cpufreq_driver pointer - *cpufreq_driver
- defined at cpufreq.c file).


> 
> >  static struct cpufreq_governor *__find_governor(const char
> > *str_governor) {
> > @@ -761,6 +805,18 @@ static int cpufreq_add_dev_interface(unsigned
> > int cpu, if (cpufreq_set_drv_attr_files(policy,
> > cpufreq_driver->attr)) goto err_out_kobj_put;
> >
> > +       if (cpufreq_driver->boost) {
> > +               if (sysfs_create_file(cpufreq_global_kobject,
> > +                                     &(global_boost.attr)))
> 
> This will report error for systems where we have two policy
> structures. As we are creating something already present.
Good point, thanks.

> 
> > +                       pr_warn("could not register global boost
> > sysfs file\n");
> > +               else
> > +                       pr_debug("registered global boost sysfs
> > file\n");
> 
> Please make all your prints to print function name too:
> 
> pr_debug("%s: foo\n", __func__, foo);

OK.

> 
> > +               if (cpufreq_set_drv_attr_files(policy,
> > +
> > cpufreq_driver->boost->attr))
> 
> Why is this required? Why do we want platforms to add some files
> in sysfs?

There are two kinds of attributes, which are exported by boost:

1. global boost (/sys/devices/system/cpu/cpufreq/boost)

2. attributes describing cpufreq abilities when boost is available
(/sys/devices/syste/cpu/cpu0/cpufreq/):
	- scaling_boost_frequencies - which will show over clocked
	  frequencies
	- the scaling_available_frequencies will also display boosted
	  frequency (when boost enabled)

Information from 2. is cpufreq_driver dependent. And that information
shouldn't been displayed when boost is not available



> 
> >  /*********************************************************************
> > + *
> > BOOST                                              *
> > +
> > *********************************************************************/
> > +int cpufreq_boost_trigger_state(struct cpufreq_policy *policy, int
> > state) +{
> > +       struct cpufreq_boost *boost;
> > +       unsigned long flags;
> > +       int ret = 0;
> > +
> > +       if (!policy || !policy->boost
> > || !policy->boost->low_level_boost)
> > +               return -ENODEV;
> > +
> > +       boost = policy->boost;
> > +       write_lock_irqsave(&cpufreq_driver_lock, flags);
> > +
> > +       if (boost->status != state) {
> > +               policy->boost->status = state;
> > +               ret = boost->low_level_boost(policy, state);
> > +               if (ret) {
> > +                       pr_err("BOOST cannot %sable low level code
> > (%d)\n",
> > +                              state ? "en" : "dis", ret);
> > +                       return ret;
> > +               }
> > +       }
> > +
> > +       write_unlock_irqrestore(&cpufreq_driver_lock, flags);
> > +
> > +       pr_debug("cpufreq BOOST %sabled\n", state ? "en" : "dis");
> > +
> > +       return 0;
> > +}
> > +
> > +/**
> > + * cpufreq_boost_notifier - notifier callback for cpufreq policy
> > change.
> > + *  <at> nb:   struct notifier_block * with callback info.
> > + *  <at> event: value showing cpufreq event for which this
> > function invoked.
> > + *  <at> data: callback-specific data
> > + */
> > +static int cpufreq_boost_notifier(struct notifier_block *nb,
> > +                                 unsigned long event, void *data)
> > +{
> > +       struct cpufreq_policy *policy = data;
> > +
> > +       if (event == CPUFREQ_INCOMPATIBLE) {
> > +               if (!policy || !policy->boost)
> > +                       return -ENODEV;
> > +
> > +               if (policy->boost->status == CPUFREQ_BOOST_EN) {
> > +                       pr_info("NOTIFIER BOOST: MAX: %d e:%lu cpu:
> > %d\n",
> > +                               policy->max, event, policy->cpu);
> > +                       cpufreq_boost_trigger_state(policy, 0);
> > +               }
> > +       }
> > +
> > +       return 0;
> > +}
> > +
> > +/* Notifier for cpufreq policy change */
> > +static struct notifier_block cpufreq_boost_notifier_block = {
> > +       .notifier_call = cpufreq_boost_notifier,
> > +};
> > +
> > +int cpufreq_boost_init(struct cpufreq_policy *policy)
> > +{
> > +       int ret = 0;
> > +
> > +       if (!policy)
> > +               return -EINVAL;
> 
> Heh, policy can't be NULL here.

Extra precautions :-). I will remove it.

> 
> > +       if (!cpufreq_driver->boost) {
> > +               pr_err("Boost mode not supported on this device\n");
> 
> Wow!! You want to screw everybody else's logs with this message.
> Its not a crime if you don't have boost mode supported :)

Hmm, I've exaggerated a bit here.... :)

> 
> Actually this routine must be called only if cpufreq_driver->boost
> is valid.
> 
> > +               return -ENODEV;
> > +       }
> > +
> > +       policy->boost = cpufreq_boost = cpufreq_driver->boost;
> 
> Why are we copying same pointer to policy->boost? Driver is
> passing pointer to a single memory location, just save it globally.

This needs some explanation.

The sysfs entry presented at [1] doesn't bring any useful information
to reuse (like *policy). For this reason the global cpufreq_boost
pointer is needed.

However to efficiently manage the boost, it is necessary to keep per
policy pointer to the only struct cpufreq_boost instance (defined at
cpufreq_driver code).

> 
> > +       /* disable boost for newly created policy - as we e.g.
> > change
> > +          governor */
> > +       policy->boost->status = CPUFREQ_BOOST_DIS;
> 
> Drivers supporting boost may want boost to be enabled by default,
> maybe without any sysfs calls.

This can be done by setting the struct cpufreq_boost status field to
CPUFREQ_BOOST_EN at cpufreq driver code (when boost structure is
defined)

> 
> > +       /* register policy notifier */
> > +       ret =
> > cpufreq_register_notifier(&cpufreq_boost_notifier_block,
> > +                                       CPUFREQ_POLICY_NOTIFIER);
> > +       if (ret) {
> > +               pr_err("CPUFREQ BOOST notifier not registered.\n");
> > +               return ret;
> > +       }
> > +       /* add policy to policies list headed at struct
> > cpufreq_boost */
> > +       list_add_tail(&policy->boost_list,
> > &cpufreq_boost->policies); +
> > +       return 0;
> > +}
> > +EXPORT_SYMBOL_GPL(cpufreq_boost_init);
> 
> Why do we need to maintain a list of boost here? notifiers? complex :(

Notifier is needed to disable boost when policy is changed (for
example when we change from ondemand/lab to performance governor).

I wanted to avoid the situation when boost stays enabled across
different governors.

The list of in system available policies is defined to allow boost
enable/disable for all policies available (by changing for example
policy->max field).

If we decide, that we will support only one policy (as it is now at
e.g. Exynos), the list is unnecessary here.

> 
> > +/*********************************************************************
> >   *               REGISTER / UNREGISTER CPUFREQ
> > DRIVER                *
> > *********************************************************************/
> >
> > @@ -1954,6 +2106,10 @@ int cpufreq_unregister_driver(struct
> > cpufreq_driver *driver) pr_debug("unregistering driver %s\n",
> > driver->name);
> >
> >         subsys_interface_unregister(&cpufreq_interface);
> > +
> > +       if (cpufreq_driver->boost)
> > +               sysfs_remove_file(cpufreq_global_kobject,
> > &(global_boost.attr));
> 
> You haven't removed this from policy. Memory leak.

Yes, you are right.

> 
> >         unregister_hotcpu_notifier(&cpufreq_cpu_notifier);
> >
> >         write_lock_irqsave(&cpufreq_driver_lock, flags);
> > diff --git a/drivers/cpufreq/freq_table.c
> > b/drivers/cpufreq/freq_table.c index d7a7966..0e95524 100644
> > --- a/drivers/cpufreq/freq_table.c
> > +++ b/drivers/cpufreq/freq_table.c
> > @@ -3,6 +3,8 @@
> >   *
> >   * Copyright (C) 2002 - 2003 Dominik Brodowski
> >   *
> > + * Copyright (C) 2013 Lukasz Majewski <l.majewski@samsung.com>
> > + *
> 
> You shouldn't add it unless you did some major work on this file. You
> aren't maintaining this file in 2013.

OK, I will remove the entry.

> 
> > +static int cpufreq_frequency_table_skip_boost(struct
> > cpufreq_policy *policy,
> > +                                             unsigned int index)
> > +{
> > +       if (index == CPUFREQ_BOOST)
> > +               if (!policy->boost ||
> 
> This shouldn't be true. If index has got CPUFREQ_BOOST, then driver
> has to support boost.

Correct me if I'm wrong here, but in my understanding the boost shall be
only supported when both CPUFREQ_BOOST index is defined in a freq_table
and boost.state = CPUFREQ_BOOST_EN is set.

Setting of CPUFREQ_BOOST shouldn't by default allow to use over
clocking frequency. 

> 
> > +                   policy->boost->status == CPUFREQ_BOOST_DIS)
> > +                       return 1;
> > +
> > +       return 0;
> > +}
> > +
> > +unsigned int
> > +cpufreq_frequency_table_boost_max(struct cpufreq_frequency_table
> > *freq_table) +{
> > +       int index, boost_freq_max;
> > +
> > +       for (index = 0, boost_freq_max = 0;
> > +               freq_table[index].frequency != CPUFREQ_TABLE_END;
> > index++)
> > +               if (freq_table[index].index == CPUFREQ_BOOST) {
> > +                       if (freq_table[index].frequency >
> > boost_freq_max)
> > +                               boost_freq_max =
> > freq_table[index].frequency;
> > +               }
> > +
> > +       return boost_freq_max;
> > +}
> > +EXPORT_SYMBOL_GPL(cpufreq_frequency_table_boost_max);
> 
> why do we need this?

To evaluate the maximal boost frequency from the frequency table. It is
then used as a delimiter (when LAB cooperates with thermal framework).

> 
> >  /*
> >   * if you use these, you must assure that the frequency table is
> > valid
> >   * all the time between get_attr and put_attr!
> > diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
> > index 037d36a..1294c8c 100644
> > --- a/include/linux/cpufreq.h
> > +++ b/include/linux/cpufreq.h
> > @@ -88,6 +88,25 @@ struct cpufreq_real_policy {
> >         struct cpufreq_governor *governor; /* see below */
> >  };
> >
> > +#define CPUFREQ_BOOST_DIS            (0)
> > +#define CPUFREQ_BOOST_EN             (1)
> 
> You don't need these.. Just create variable as bool and 0 & 1 would
> be fine.

Yes, this seems to be a clearer solution.

> 
> > +struct cpufreq_policy;
> > +struct cpufreq_boost {
> > +       unsigned int            max_boost_freq; /* maximum value of
> > +                                                * boosted freq */
> > +       unsigned int            max_normal_freq; /* non boost max
> > freq */
> > +       int                     status; /* status of boost */
> > +
> > +       /* boost sysfs attributies */
> > +       struct freq_attr        **attr;
> > +
> > +       /* low-level trigger for boost */
> > +       int (*low_level_boost) (struct cpufreq_policy *policy, int
> > state); +
> > +       struct list_head        policies;
> > +};
> 
> We don't need it. Just add two more fields to cpufreq_driver:
> - have_boost_freqs and low_level_boost (maybe a better name.
> What's its use?)

The separate struct cpufreq_boost was created to explicitly separate
boost fields from cpufreq_driver structure. 

If in your opinion this structure is redundant, I can remove it and
extend cpufreq_driver structure.

> 
> >  struct cpufreq_policy {
> >         /* CPUs sharing clock, require sw coordination */
> >         cpumask_var_t           cpus;   /* Online CPUs only */
> > @@ -113,6 +132,9 @@ struct cpufreq_policy {
> >
> >         struct cpufreq_real_policy      user_policy;
> >
> > +       struct cpufreq_boost    *boost;
> > +       struct list_head        boost_list;
> 
> We don't need both of these.

*boost pointer is necessary when one wants to enable/disable boost from
e.g governor code (which operates mostly on struct cpufreq_policy
*policy pointers).

The boost_list is necessary to connect policies in a list. 

> 
> >         struct kobject          kobj;
> >         struct completion       kobj_unregister;
> >  };
> 
> > @@ -277,7 +302,6 @@ struct cpufreq_driver {
> >  int cpufreq_register_driver(struct cpufreq_driver *driver_data);
> >  int cpufreq_unregister_driver(struct cpufreq_driver *driver_data);
> >
> > -
> 
> ??
> 
> >  void cpufreq_notify_transition(struct cpufreq_policy *policy,
> >                 struct cpufreq_freqs *freqs, unsigned int state);
> >
> > @@ -403,6 +427,9 @@ extern struct cpufreq_governor
> > cpufreq_gov_conservative; #define CPUFREQ_ENTRY_INVALID ~0
> >  #define CPUFREQ_TABLE_END     ~1
> >
> > +/* Define index for boost frequency */
> > +#define CPUFREQ_BOOST         ~2
> 
> s/CPUFREQ_BOOST/CPUFREQ_BOOST_FREQ

Ok, will be changed to something more descriptive. 

Thanks for thorough review :-)

-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

  reply	other threads:[~2013-06-06 11:49 UTC|newest]

Thread overview: 320+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-06  7:07 [PATCH 0/5] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-06-06  7:07 ` [PATCH 1/5] cpufreq: Define cpufreq_set_drv_attr_files() to add per CPU sysfs attributes Lukasz Majewski
2013-06-06  8:27   ` Viresh Kumar
2013-06-06  8:58     ` Lukasz Majewski
2013-06-06  9:00       ` Viresh Kumar
2013-06-06  9:16         ` Lukasz Majewski
2013-06-06  7:07 ` [PATCH 2/5] cpufreq:boost: Add support for software based CPU frequency boost Lukasz Majewski
2013-06-06 10:53   ` Viresh Kumar
2013-06-06 11:49     ` Lukasz Majewski [this message]
2013-06-06 15:46       ` Viresh Kumar
2013-06-07 13:27         ` Lukasz Majewski
2013-06-07 14:13           ` Viresh Kumar
2013-06-07 14:34             ` Lukasz Majewski
2013-06-07 14:44               ` Viresh Kumar
2013-06-07 14:43         ` Lukasz Majewski
2013-06-06  7:07 ` [PATCH 3/5] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-06-06  7:07 ` [PATCH 4/5] cpufreq:exynos:Extend exynos cpufreq driver to support boost Lukasz Majewski
2013-06-06  7:07 ` [PATCH 5/5] cpufreq:boost:Kconfig: Enable boost support at Kconfig Lukasz Majewski
2013-06-06 14:49   ` Dave Jones
2013-06-06 15:14     ` Lukasz Majewski
2013-06-06 15:21       ` Dave Jones
2013-06-06 15:48         ` Viresh Kumar
2013-06-06 15:58   ` Borislav Petkov
2013-06-10 13:20     ` Lukasz Majewski
2013-06-10 13:22       ` Viresh Kumar
2013-06-10 13:42         ` Lukasz Majewski
2013-06-11  9:03 ` [PATCH v2 0/3] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-06-11  9:03   ` [PATCH v2 1/3] cpufreq:boost: CPU frequency boost code unification for software and hardware solutions Lukasz Majewski
2013-06-12  5:09     ` Viresh Kumar
2013-06-12  7:39       ` Lukasz Majewski
2013-06-12  8:09         ` Viresh Kumar
2013-06-12  9:09           ` Lukasz Majewski
2013-06-12  9:25             ` Viresh Kumar
2013-06-12 12:30               ` Lukasz Majewski
2013-06-12 11:23         ` Rafael J. Wysocki
2013-06-12 11:40           ` Lukasz Majewski
2013-06-11  9:03   ` [PATCH v2 2/3] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-06-11  9:03   ` [PATCH v2 3/3] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-06-26 11:05     ` Viresh Kumar
2013-06-26 13:58       ` Lukasz Majewski
2013-06-27  4:02         ` Viresh Kumar
2013-06-27  6:31           ` Lukasz Majewski
2013-06-12  5:15   ` [PATCH v2 0/3] cpufreq:boost: CPU Boost mode support Viresh Kumar
2013-06-12  6:00     ` Lukasz Majewski
2013-06-12  6:05       ` Viresh Kumar
2013-06-14  7:38 ` [PATCH v3 " Lukasz Majewski
2013-06-14  7:38   ` [PATCH v3 1/3] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-06-17  5:43     ` Viresh Kumar
2013-06-17  7:15       ` Lukasz Majewski
2013-06-17  7:43         ` Viresh Kumar
2013-06-17  9:08           ` Lukasz Majewski
2013-06-17  9:18             ` Viresh Kumar
2013-06-17  9:58               ` Lukasz Majewski
2013-06-17 13:10                 ` Viresh Kumar
2013-06-17 13:51                   ` Lukasz Majewski
2013-06-18  6:42                     ` Viresh Kumar
2013-06-18  8:24                       ` Lukasz Majewski
2013-06-18  8:40                         ` Viresh Kumar
2013-06-18  9:12                           ` Lukasz Majewski
2013-06-18 13:26                       ` Rafael J. Wysocki
2013-06-18 13:44                         ` Lukasz Majewski
2013-06-19  7:16                           ` Lukasz Majewski
2013-06-20  5:11                             ` Viresh Kumar
2013-06-20  6:41                               ` Lukasz Majewski
2013-06-20  5:05                           ` Viresh Kumar
2013-06-20  5:01                         ` Viresh Kumar
2013-06-20 10:04                           ` Lukasz Majewski
2013-06-14  7:38   ` [PATCH v3 2/3] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-06-14  7:39   ` [PATCH v3 3/3] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-06-17  3:20   ` [PATCH v3 0/3] cpufreq:boost: CPU Boost mode support Viresh Kumar
2013-06-17  5:41     ` Lukasz Majewski
2013-06-19 17:12 ` [PATCH v4 0/7] " Lukasz Majewski
2013-06-19 17:12   ` [PATCH v4 1/7] cpufreq: Store cpufreq policies in a list Lukasz Majewski
2013-06-26 10:35     ` Viresh Kumar
2013-06-26 10:54       ` Lukasz Majewski
2013-06-26 10:56         ` Viresh Kumar
2013-06-26 11:04           ` Lukasz Majewski
2013-06-26 11:08             ` Viresh Kumar
2013-06-26 12:15               ` Lukasz Majewski
2013-06-19 17:12   ` [PATCH v4 2/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-06-19 17:48     ` Dirk Brandewie
2013-06-19 20:31       ` Lukasz Majewski
2013-06-19 22:25         ` Rafael J. Wysocki
2013-07-17  7:58           ` Viresh Kumar
2013-07-17 11:31             ` Rafael J. Wysocki
2013-07-17 13:01               ` Viresh Kumar
2013-07-17 14:59                 ` Lukasz Majewski
2013-07-18  7:51                   ` Viresh Kumar
2013-06-20  5:13     ` Viresh Kumar
2013-06-20 20:03       ` Rafael J. Wysocki
2013-06-21  6:23         ` Lukasz Majewski
2013-06-26 10:54     ` Viresh Kumar
2013-06-26 12:54       ` Lukasz Majewski
2013-06-26 14:02         ` Lukasz Majewski
2013-06-27  9:02         ` Viresh Kumar
2013-06-27  9:48           ` Lukasz Majewski
2013-06-27 10:25             ` Viresh Kumar
2013-06-27 11:07               ` Lukasz Majewski
2013-06-27 15:55       ` Lukasz Majewski
2013-06-28  3:40         ` Viresh Kumar
2013-06-28  6:49           ` Lukasz Majewski
2013-06-28  6:51             ` Viresh Kumar
2013-06-28  7:31               ` Lukasz Majewski
2013-06-19 17:12   ` [PATCH v4 3/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-06-26 11:03     ` Viresh Kumar
2013-06-26 12:17       ` Lukasz Majewski
2013-06-19 17:12   ` [PATCH v4 4/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-06-27  8:58     ` Viresh Kumar
2013-06-27  9:08       ` Lukasz Majewski
2013-06-19 17:12   ` [PATCH v4 5/7] cpufreq: Calculate number of busy CPUs Lukasz Majewski
2013-06-19 18:01     ` Dirk Brandewie
2013-06-19 20:58       ` Lukasz Majewski
2013-06-19 22:26         ` Rafael J. Wysocki
2013-06-27  9:36     ` Viresh Kumar
2013-06-27 10:58       ` Lukasz Majewski
2013-06-27 11:16         ` Viresh Kumar
2013-06-27 14:42           ` Lukasz Majewski
2013-06-28  3:50             ` Viresh Kumar
2013-06-28  6:54               ` Lukasz Majewski
2013-07-01  8:15                 ` Lukasz Majewski
2013-07-04  5:06                   ` Viresh Kumar
2013-07-04  5:43                     ` Lukasz Majewski
2013-07-04  6:28                       ` Viresh Kumar
2013-07-04  6:49                         ` Lukasz Majewski
2013-07-04 12:50                     ` Rafael J. Wysocki
2013-06-19 17:12   ` [PATCH v4 6/7] cpufreq: Enable software boost only when up to one busy core is running Lukasz Majewski
2013-06-19 17:12   ` [PATCH v4 7/7] thermal:boost: Disable boost when trip point is reached Lukasz Majewski
2013-06-26  7:48   ` [PATCH v4 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-06-26  7:52     ` Viresh Kumar
2013-07-04  8:50 ` [PATCH v5 " Lukasz Majewski
2013-07-04  8:50   ` [PATCH v5 1/7] cpufreq: Store cpufreq policies in a list Lukasz Majewski
2013-07-16  8:51     ` Viresh Kumar
2013-07-16  9:39       ` Lukasz Majewski
2013-07-04  8:50   ` [PATCH v5 2/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-07-16  9:41     ` Viresh Kumar
2013-07-16 12:06       ` Lukasz Majewski
2013-07-17  5:28         ` Viresh Kumar
2013-07-17  7:00           ` Lukasz Majewski
2013-07-04  8:50   ` [PATCH v5 3/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-07-16 10:04     ` Viresh Kumar
2013-07-16 11:17       ` Lukasz Majewski
2013-07-04  8:50   ` [PATCH v5 4/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-07-16  9:48     ` Viresh Kumar
2013-07-16 10:58       ` Lukasz Majewski
2013-07-04  8:50   ` [PATCH v5 5/7] thermal:boost: Automatic enable/disable of BOOST feature Lukasz Majewski
2013-07-04 17:19     ` R, Durgadoss
2013-07-04 20:58       ` Lukasz Majewski
2013-07-05  5:31         ` R, Durgadoss
2013-07-05  6:43           ` Lukasz Majewski
2013-07-11  8:08     ` Lukasz Majewski
2013-07-16  7:28       ` Lukasz Majewski
2013-07-04  8:50   ` [PATCH v5 6/7] cpufreq:boost:Kconfig: Enable software managed BOOST support at Kconfig Lukasz Majewski
2013-07-16  9:58     ` Viresh Kumar
2013-07-16 11:50       ` Lukasz Majewski
2013-07-17  5:24         ` Viresh Kumar
2013-07-17  7:17           ` Lukasz Majewski
2013-07-17  7:52             ` Viresh Kumar
2013-07-17  8:12               ` Lukasz Majewski
2013-07-17  8:29                 ` Viresh Kumar
2013-07-17  9:11                   ` Lukasz Majewski
2013-07-04  8:50   ` [PATCH v5 7/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-07-16 10:01     ` Viresh Kumar
2013-07-16 11:33       ` Lukasz Majewski
2013-07-17  5:22         ` Viresh Kumar
2013-07-17  7:36           ` Lukasz Majewski
2013-07-17  7:59             ` Viresh Kumar
2013-07-17  8:13               ` Lukasz Majewski
2013-07-09  7:02   ` [PATCH v5 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-07-09  7:04     ` Viresh Kumar
2013-07-16  7:26     ` Lukasz Majewski
2013-07-16  8:46       ` Viresh Kumar
2013-07-25 16:33 ` [PATCH v6 0/8] " Lukasz Majewski
2013-07-25 16:33   ` [PATCH v6 1/8] cpufreq: Store cpufreq policies in a list Lukasz Majewski
2013-07-26 10:14     ` Viresh Kumar
2013-07-26 10:58       ` Lukasz Majewski
2013-07-26 11:02         ` Viresh Kumar
2013-07-26 12:46           ` Lukasz Majewski
2013-07-29  7:03             ` Viresh Kumar
2013-07-25 16:33   ` [PATCH v6 2/8] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-07-26  7:17     ` Viresh Kumar
2013-07-26  8:33       ` Lukasz Majewski
2013-07-26  9:33         ` Viresh Kumar
2013-07-26 10:10           ` Lukasz Majewski
2013-07-26  9:36         ` Viresh Kumar
2013-07-26 10:11           ` Lukasz Majewski
2013-08-12  9:07           ` Lukasz Majewski
2013-08-12  9:10             ` Viresh Kumar
2013-07-26 12:36         ` Rafael J. Wysocki
2013-07-26 13:08           ` Lukasz Majewski
2013-07-25 16:33   ` [PATCH v6 3/8] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-07-26  7:28     ` Viresh Kumar
2013-07-26  8:09       ` Lukasz Majewski
2013-07-26  9:24         ` Viresh Kumar
2013-07-26  9:44           ` Lukasz Majewski
2013-08-12  9:12           ` Lukasz Majewski
2013-08-12  9:14             ` Viresh Kumar
2013-07-25 16:33   ` [PATCH v6 4/8] thermal:boost: Automatic enable/disable of BOOST feature Lukasz Majewski
2013-08-12  9:17     ` Lukasz Majewski
2013-07-25 16:33   ` [PATCH v6 5/8] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-07-26 10:24     ` Viresh Kumar
2013-07-26 11:21       ` Lukasz Majewski
2013-07-29  6:58         ` Viresh Kumar
2013-08-12 10:26           ` Lukasz Majewski
2013-08-12 10:28             ` Viresh Kumar
2013-08-12 10:50               ` Lukasz Majewski
2013-07-25 16:33   ` [PATCH v6 6/8] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-07-26 10:26     ` Viresh Kumar
2013-07-26 11:26       ` Lukasz Majewski
2013-07-29  7:01         ` Viresh Kumar
2013-08-12  9:52       ` Lukasz Majewski
2013-07-25 16:33   ` [PATCH v6 7/8] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-07-25 16:33   ` [PATCH v6 8/8] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-07-26 10:28   ` [PATCH v6 0/8] cpufreq:boost: CPU Boost mode support Viresh Kumar
2013-08-13 10:08 ` [PATCH v7 0/7] " Lukasz Majewski
2013-08-13 10:08   ` [PATCH v7 1/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-08-26  5:28     ` Viresh Kumar
2013-08-26  7:02       ` Lukasz Majewski
2013-08-26  7:06         ` Viresh Kumar
2013-08-26  7:11           ` Lukasz Majewski
2013-08-26 13:12             ` Rafael J. Wysocki
2013-08-26 14:00               ` Viresh Kumar
2013-08-26 14:46                 ` Lukasz Majewski
2013-08-13 10:08   ` [PATCH v7 2/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-08-26  5:32     ` Viresh Kumar
2013-08-13 10:08   ` [PATCH v7 3/7] thermal:boost: Automatic enable/disable of BOOST feature Lukasz Majewski
2013-08-26  5:33     ` Viresh Kumar
2013-08-26  6:50       ` Lukasz Majewski
2013-08-13 10:08   ` [PATCH v7 4/7] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-08-26  5:35     ` Viresh Kumar
2013-08-13 10:08   ` [PATCH v7 5/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-08-26  5:36     ` Viresh Kumar
2013-08-13 10:08   ` [PATCH v7 6/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-08-26  5:36     ` Viresh Kumar
2013-08-13 10:08   ` [PATCH v7 7/7] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-08-26  5:37     ` Viresh Kumar
2013-08-19  6:38   ` [PATCH v7 0/7] cpufreq:boost: CPU Boost mode support Viresh Kumar
2013-08-19  6:50     ` Lukasz Majewski
2013-08-19 23:29       ` Rafael J. Wysocki
2013-08-20  8:11         ` Lukasz Majewski
2013-08-20 12:32           ` Rafael J. Wysocki
2013-08-26 15:50 ` [PATCH v8 " Lukasz Majewski
2013-08-26 15:50   ` [PATCH v8 1/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-08-26 15:50   ` [PATCH v8 2/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-08-26 15:50   ` [PATCH v8 3/7] thermal:boost: Automatic enable/disable of BOOST feature Lukasz Majewski
2013-08-26 15:50   ` [PATCH v8 4/7] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-08-26 15:50   ` [PATCH v8 5/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-08-26 15:50   ` [PATCH v8 6/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-08-26 15:50   ` [PATCH v8 7/7] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-09-20 16:00 ` [PATCH RESEND v8 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-09-20 16:00   ` [PATCH RESEND v8 1/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-09-20 16:00   ` [PATCH RESEND v8 2/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-09-20 16:01   ` [PATCH RESEND v8 3/7] thermal:boost: Automatic enable/disable of BOOST feature Lukasz Majewski
2013-09-20 16:01   ` [PATCH RESEND v8 4/7] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-09-20 16:01   ` [PATCH RESEND v8 5/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-09-20 16:01   ` [PATCH RESEND v8 6/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-09-20 16:01   ` [PATCH RESEND v8 7/7] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-10-14 12:17 ` [PATCH v9 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-10-14 12:17   ` [PATCH v9 1/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-10-14 12:17   ` [PATCH v9 2/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-10-14 12:17   ` [PATCH v9 3/7] thermal:boost: Automatic enable/disable of BOOST feature Lukasz Majewski
2013-10-15  9:32     ` Zhang Rui
2013-10-15 15:43       ` Lukasz Majewski
2013-10-17 15:09         ` Zhang, Rui
2013-10-14 12:17   ` [PATCH v9 4/7] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-10-14 12:17   ` [PATCH v9 5/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-10-14 12:17   ` [PATCH v9 6/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-10-14 12:17   ` [PATCH v9 7/7] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-11-05 17:26 ` [PATCH v10 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-11-05 17:26   ` [PATCH v10 1/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-11-05 17:26   ` [PATCH v10 2/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-11-05 17:26   ` [PATCH v10 3/7] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-11-05 17:26   ` [PATCH v10 4/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-11-05 17:26   ` [PATCH v10 5/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-11-05 17:26   ` [PATCH v10 6/7] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-11-05 17:26   ` [PATCH v10 7/7] thermal:exynos:boost: Automatic enable/disable of BOOST feature (at Exynos4412) Lukasz Majewski
2013-11-28 13:05     ` Lukasz Majewski
2013-12-02 14:53     ` Eduardo Valentin
2013-12-03  7:31       ` Lukasz Majewski
2013-12-03 12:36         ` Eduardo Valentin
2013-12-03 15:42           ` Lukasz Majewski
2013-12-04 14:10             ` Eduardo Valentin
2013-12-05 11:03               ` Lukasz Majewski
2013-12-05 13:25                 ` Eduardo Valentin
2013-12-06 14:03                   ` Lukasz Majewski
2013-12-02 12:19 ` [PATCH RESEND v10 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-12-02 12:19   ` [PATCH RESEND v10 1/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-12-02 12:19   ` [PATCH RESEND v10 2/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-12-02 12:19   ` [PATCH RESEND v10 3/7] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-12-02 12:19   ` [PATCH RESEND v10 4/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-12-02 12:19   ` [PATCH RESEND v10 5/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-12-02 12:19   ` [PATCH RESEND v10 6/7] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-12-02 12:19   ` [PATCH RESEND v10 7/7] thermal:exynos:boost: Automatic enable/disable of BOOST feature (at Exynos4412) Lukasz Majewski
2013-12-04  6:59   ` [PATCH RESEND v10 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-12-04 14:12     ` Eduardo Valentin
2013-12-09 10:04       ` Lukasz Majewski
2013-12-13 16:38 ` [PATCH v11 " Lukasz Majewski
2013-12-13 16:38   ` [PATCH v11 1/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-12-13 16:38   ` [PATCH v11 2/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-12-13 16:38   ` [PATCH v11 3/7] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-12-13 16:38   ` [PATCH v11 4/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-12-13 16:38   ` [PATCH v11 5/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-12-13 16:38   ` [PATCH v11 6/7] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-12-13 16:38   ` [PATCH v11 7/7] thermal:exynos:boost: Automatic enable/disable of BOOST feature (at Exynos4412) Lukasz Majewski
2013-12-19 14:50     ` Eduardo Valentin
2013-12-20 14:24 ` [PATCH v12 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2013-12-20 14:24   ` [PATCH v12 1/7] cpufreq: Add boost frequency support in core Lukasz Majewski
2013-12-20 14:24   ` [PATCH v12 2/7] cpufreq:acpi:x86: Adjust the acpi-cpufreq.c code to work with common boost solution Lukasz Majewski
2013-12-20 14:24   ` [PATCH v12 3/7] cpufreq:boost:Kconfig: Provide support for software managed BOOST Lukasz Majewski
2013-12-20 14:24   ` [PATCH v12 4/7] cpufreq:exynos:Extend Exynos cpufreq driver to support boost framework Lukasz Majewski
2013-12-20 14:24   ` [PATCH v12 5/7] Documentation:cpufreq:boost: Update BOOST documentation Lukasz Majewski
2013-12-20 14:24   ` [PATCH v12 6/7] cpufreq:exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ Lukasz Majewski
2013-12-20 14:24   ` [PATCH v12 7/7] thermal:exynos:boost: Automatic enable/disable of BOOST feature (at Exynos4412) Lukasz Majewski
2014-01-10  6:35     ` Zhang Rui
2014-01-07  6:58   ` [PATCH v12 0/7] cpufreq:boost: CPU Boost mode support Lukasz Majewski
2014-01-08  0:35     ` Rafael J. Wysocki
2014-01-09  7:19       ` Lukasz Majewski
2014-01-10  6:33       ` Zhang Rui
2014-01-16  9:40         ` Lukasz Majewski
2014-01-16 15:51           ` Rafael J. Wysocki
2014-01-16 15:56             ` Lukasz Majewski

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=20130606134903.5f69b8fb@amdc308.digital.local \
    --to=l.majewski@samsung.com \
    --cc=andre.przywara@linaro.org \
    --cc=cpufreq@vger.kernel.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=jonghwa3.lee@samsung.com \
    --cc=l.majewski@majess.pl \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=myungjoo.ham@samsung.com \
    --cc=rjw@sisk.pl \
    --cc=vincent.guittot@linaro.org \
    --cc=viresh.kumar@linaro.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).