mbox series

[v6,00/19] More improvements for Tegra30 devfreq driver

Message ID 20190811212315.12689-1-digetx@gmail.com
Headers show
Series More improvements for Tegra30 devfreq driver | expand

Message

Dmitry Osipenko Aug. 11, 2019, 9:22 p.m. UTC
Hello,

This series addresses some additional review comments that were made by
Thierry Reding to [1], makes several important changes to the driver,
fixing excessive interrupts activity, and adds new features. In the end
I'm proposing myself as a maintainer for the Tegra devfreq drivers.

[1] https://lore.kernel.org/lkml/0fb50eb1-a173-1756-6889-2526a10ac707@gmail.com/T/

Changelog:

v6:  Addressed review comment that was made by Chanwoo Choi to v5 by
     squashing "Define ACTMON_DEV_CTRL_STOP" patch into the "Use CPUFreq
     notifier" patch.

v5:  Addressed review comments that were made by Chanwoo Choi to v4 by
     squashing few patches, dropping some questionable patches, rewording
     comments to the code, restructuring the code and etc.

     These patches are now dropped from the series:

       PM / devfreq: tegra30: Use tracepoints for debugging
       PM / devfreq: tegra30: Inline all one-line functions

     The interrupt-optimization patches are squashed into a single patch:

       PM / devfreq: tegra30: Reduce unnecessary interrupts activity

     because it's better to keep the optimizations as a separate change and
     this also helps to reduce code churning, since the code changes depend
     on a previous patch in order to stay cleaner.

     Fixed a lockup bug that I spotted recently, which is caused by a
     clk-notifier->cpufreq_get()->clk_set_rate() sequence. Now a non-blocking
     variant of CPU's frequency retrieving is used, i.e. cpufreq_quick_get().

     Further optimized the CPUFreq notifier by postponing the delayed
     updating in accordance to the polling interval, this actually uncovered
     the above lockup bug.

     Implemented new minor driver feature in the new patch:

       PM / devfreq: tegra30: Support variable polling interval

v4:  Added two new patches to the series:

       PM / devfreq: tegra30: Synchronize average count on target's update
       PM / devfreq: tegra30: Increase sampling period to 16ms

     The first patch addresses problem where governor could get stuck due
     to outdated "average count" value which is snapshoted by ISR and there
     are cases where manual update of the value is required.

     The second patch is just a minor optimization.

v3:  Added support for tracepoints, replacing the debug messages.
     Fixed few more bugs with the help of tracepoints.

     New patches in this version:

       PM / devfreq: tegra30: Use tracepoints for debugging
       PM / devfreq: tegra30: Optimize CPUFreq notifier
       PM / devfreq: tegra30: Optimize upper consecutive watermark selection
       PM / devfreq: tegra30: Optimize upper average watermark selection
       PM / devfreq: tegra30: Include appropriate header

     Some of older patches of this series also got some extra minor polish.

v2:  Added more patches that are cleaning driver's code further and
     squashing another kHz conversion bug.

     The patch "Rework frequency management logic" of the v1 series is now
     converted to "Set up watermarks properly" because I found some problems
     in the original patch and then realized that there is no need to change
     the logic much. So the logic mostly preserved and only got improvements.

     The series is based on the today's linux-next (25 Jun) and takes into
     account minor changes that MyungJoo Ham made to the already queued
     patches from the first batch [1].

Dmitry Osipenko (19):
  PM / devfreq: tegra30: Change irq type to unsigned int
  PM / devfreq: tegra30: Keep interrupt disabled while governor is
    stopped
  PM / devfreq: tegra30: Handle possible round-rate error
  PM / devfreq: tegra30: Drop write-barrier
  PM / devfreq: tegra30: Set up watermarks properly
  PM / devfreq: tegra30: Tune up boosting thresholds
  PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
  PM / devfreq: tegra30: Ensure that target freq won't overflow
  PM / devfreq: tegra30: Use kHz units uniformly in the code
  PM / devfreq: tegra30: Reduce unnecessary interrupts activity
  PM / devfreq: tegra30: Use CPUFreq notifier
  PM / devfreq: tegra30: Move clk-notifier's registration to governor's
    start
  PM / devfreq: tegra30: Reset boosting on startup
  PM / devfreq: tegra30: Don't enable consecutive-down interrupt on
    startup
  PM / devfreq: tegra30: Constify structs
  PM / devfreq: tegra30: Include appropriate header
  PM / devfreq: tegra30: Increase sampling period to 16ms
  PM / devfreq: tegra30: Support variable polling interval
  PM / devfreq: tegra20/30: Add Dmitry as a maintainer

 MAINTAINERS                       |   9 +
 drivers/devfreq/tegra30-devfreq.c | 706 +++++++++++++++++++++++-------
 2 files changed, 555 insertions(+), 160 deletions(-)

Comments

Dmitry Osipenko Oct. 1, 2019, 9:15 p.m. UTC | #1
12.08.2019 00:22, Dmitry Osipenko пишет:
> Hello,
> 
> This series addresses some additional review comments that were made by
> Thierry Reding to [1], makes several important changes to the driver,
> fixing excessive interrupts activity, and adds new features. In the end
> I'm proposing myself as a maintainer for the Tegra devfreq drivers.
> 
> [1] https://lore.kernel.org/lkml/0fb50eb1-a173-1756-6889-2526a10ac707@gmail.com/T/
> 
> Changelog:
> 
> v6:  Addressed review comment that was made by Chanwoo Choi to v5 by
>      squashing "Define ACTMON_DEV_CTRL_STOP" patch into the "Use CPUFreq
>      notifier" patch.
> 
> v5:  Addressed review comments that were made by Chanwoo Choi to v4 by
>      squashing few patches, dropping some questionable patches, rewording
>      comments to the code, restructuring the code and etc.
> 
>      These patches are now dropped from the series:
> 
>        PM / devfreq: tegra30: Use tracepoints for debugging
>        PM / devfreq: tegra30: Inline all one-line functions
> 
>      The interrupt-optimization patches are squashed into a single patch:
> 
>        PM / devfreq: tegra30: Reduce unnecessary interrupts activity
> 
>      because it's better to keep the optimizations as a separate change and
>      this also helps to reduce code churning, since the code changes depend
>      on a previous patch in order to stay cleaner.
> 
>      Fixed a lockup bug that I spotted recently, which is caused by a
>      clk-notifier->cpufreq_get()->clk_set_rate() sequence. Now a non-blocking
>      variant of CPU's frequency retrieving is used, i.e. cpufreq_quick_get().
> 
>      Further optimized the CPUFreq notifier by postponing the delayed
>      updating in accordance to the polling interval, this actually uncovered
>      the above lockup bug.
> 
>      Implemented new minor driver feature in the new patch:
> 
>        PM / devfreq: tegra30: Support variable polling interval
> 
> v4:  Added two new patches to the series:
> 
>        PM / devfreq: tegra30: Synchronize average count on target's update
>        PM / devfreq: tegra30: Increase sampling period to 16ms
> 
>      The first patch addresses problem where governor could get stuck due
>      to outdated "average count" value which is snapshoted by ISR and there
>      are cases where manual update of the value is required.
> 
>      The second patch is just a minor optimization.
> 
> v3:  Added support for tracepoints, replacing the debug messages.
>      Fixed few more bugs with the help of tracepoints.
> 
>      New patches in this version:
> 
>        PM / devfreq: tegra30: Use tracepoints for debugging
>        PM / devfreq: tegra30: Optimize CPUFreq notifier
>        PM / devfreq: tegra30: Optimize upper consecutive watermark selection
>        PM / devfreq: tegra30: Optimize upper average watermark selection
>        PM / devfreq: tegra30: Include appropriate header
> 
>      Some of older patches of this series also got some extra minor polish.
> 
> v2:  Added more patches that are cleaning driver's code further and
>      squashing another kHz conversion bug.
> 
>      The patch "Rework frequency management logic" of the v1 series is now
>      converted to "Set up watermarks properly" because I found some problems
>      in the original patch and then realized that there is no need to change
>      the logic much. So the logic mostly preserved and only got improvements.
> 
>      The series is based on the today's linux-next (25 Jun) and takes into
>      account minor changes that MyungJoo Ham made to the already queued
>      patches from the first batch [1].
> 
> Dmitry Osipenko (19):
>   PM / devfreq: tegra30: Change irq type to unsigned int
>   PM / devfreq: tegra30: Keep interrupt disabled while governor is
>     stopped
>   PM / devfreq: tegra30: Handle possible round-rate error
>   PM / devfreq: tegra30: Drop write-barrier
>   PM / devfreq: tegra30: Set up watermarks properly
>   PM / devfreq: tegra30: Tune up boosting thresholds
>   PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
>   PM / devfreq: tegra30: Ensure that target freq won't overflow
>   PM / devfreq: tegra30: Use kHz units uniformly in the code
>   PM / devfreq: tegra30: Reduce unnecessary interrupts activity
>   PM / devfreq: tegra30: Use CPUFreq notifier
>   PM / devfreq: tegra30: Move clk-notifier's registration to governor's
>     start
>   PM / devfreq: tegra30: Reset boosting on startup
>   PM / devfreq: tegra30: Don't enable consecutive-down interrupt on
>     startup
>   PM / devfreq: tegra30: Constify structs
>   PM / devfreq: tegra30: Include appropriate header
>   PM / devfreq: tegra30: Increase sampling period to 16ms
>   PM / devfreq: tegra30: Support variable polling interval
>   PM / devfreq: tegra20/30: Add Dmitry as a maintainer
> 
>  MAINTAINERS                       |   9 +
>  drivers/devfreq/tegra30-devfreq.c | 706 +++++++++++++++++++++++-------
>  2 files changed, 555 insertions(+), 160 deletions(-)
> 

Hello Chanwoo,

I don't have any more updates in regards to this series, everything is
working flawlessly for now. Will be awesome if we could continue the
reviewing and then get the patches into linux-next to get some more testing.
Chanwoo Choi Oct. 2, 2019, 12:25 a.m. UTC | #2
Hello Dmitry and Thierry,

On 19. 10. 2. 오전 6:15, Dmitry Osipenko wrote:
> 12.08.2019 00:22, Dmitry Osipenko пишет:
>> Hello,
>>
>> This series addresses some additional review comments that were made by
>> Thierry Reding to [1], makes several important changes to the driver,
>> fixing excessive interrupts activity, and adds new features. In the end
>> I'm proposing myself as a maintainer for the Tegra devfreq drivers.
>>
>> [1] https://lore.kernel.org/lkml/0fb50eb1-a173-1756-6889-2526a10ac707@gmail.com/T/
>>
>> Changelog:
>>
>> v6:  Addressed review comment that was made by Chanwoo Choi to v5 by
>>      squashing "Define ACTMON_DEV_CTRL_STOP" patch into the "Use CPUFreq
>>      notifier" patch.
>>
>> v5:  Addressed review comments that were made by Chanwoo Choi to v4 by
>>      squashing few patches, dropping some questionable patches, rewording
>>      comments to the code, restructuring the code and etc.
>>
>>      These patches are now dropped from the series:
>>
>>        PM / devfreq: tegra30: Use tracepoints for debugging
>>        PM / devfreq: tegra30: Inline all one-line functions
>>
>>      The interrupt-optimization patches are squashed into a single patch:
>>
>>        PM / devfreq: tegra30: Reduce unnecessary interrupts activity
>>
>>      because it's better to keep the optimizations as a separate change and
>>      this also helps to reduce code churning, since the code changes depend
>>      on a previous patch in order to stay cleaner.
>>
>>      Fixed a lockup bug that I spotted recently, which is caused by a
>>      clk-notifier->cpufreq_get()->clk_set_rate() sequence. Now a non-blocking
>>      variant of CPU's frequency retrieving is used, i.e. cpufreq_quick_get().
>>
>>      Further optimized the CPUFreq notifier by postponing the delayed
>>      updating in accordance to the polling interval, this actually uncovered
>>      the above lockup bug.
>>
>>      Implemented new minor driver feature in the new patch:
>>
>>        PM / devfreq: tegra30: Support variable polling interval
>>
>> v4:  Added two new patches to the series:
>>
>>        PM / devfreq: tegra30: Synchronize average count on target's update
>>        PM / devfreq: tegra30: Increase sampling period to 16ms
>>
>>      The first patch addresses problem where governor could get stuck due
>>      to outdated "average count" value which is snapshoted by ISR and there
>>      are cases where manual update of the value is required.
>>
>>      The second patch is just a minor optimization.
>>
>> v3:  Added support for tracepoints, replacing the debug messages.
>>      Fixed few more bugs with the help of tracepoints.
>>
>>      New patches in this version:
>>
>>        PM / devfreq: tegra30: Use tracepoints for debugging
>>        PM / devfreq: tegra30: Optimize CPUFreq notifier
>>        PM / devfreq: tegra30: Optimize upper consecutive watermark selection
>>        PM / devfreq: tegra30: Optimize upper average watermark selection
>>        PM / devfreq: tegra30: Include appropriate header
>>
>>      Some of older patches of this series also got some extra minor polish.
>>
>> v2:  Added more patches that are cleaning driver's code further and
>>      squashing another kHz conversion bug.
>>
>>      The patch "Rework frequency management logic" of the v1 series is now
>>      converted to "Set up watermarks properly" because I found some problems
>>      in the original patch and then realized that there is no need to change
>>      the logic much. So the logic mostly preserved and only got improvements.
>>
>>      The series is based on the today's linux-next (25 Jun) and takes into
>>      account minor changes that MyungJoo Ham made to the already queued
>>      patches from the first batch [1].
>>
>> Dmitry Osipenko (19):
>>   PM / devfreq: tegra30: Change irq type to unsigned int
>>   PM / devfreq: tegra30: Keep interrupt disabled while governor is
>>     stopped
>>   PM / devfreq: tegra30: Handle possible round-rate error
>>   PM / devfreq: tegra30: Drop write-barrier
>>   PM / devfreq: tegra30: Set up watermarks properly
>>   PM / devfreq: tegra30: Tune up boosting thresholds
>>   PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
>>   PM / devfreq: tegra30: Ensure that target freq won't overflow
>>   PM / devfreq: tegra30: Use kHz units uniformly in the code
>>   PM / devfreq: tegra30: Reduce unnecessary interrupts activity
>>   PM / devfreq: tegra30: Use CPUFreq notifier
>>   PM / devfreq: tegra30: Move clk-notifier's registration to governor's
>>     start
>>   PM / devfreq: tegra30: Reset boosting on startup
>>   PM / devfreq: tegra30: Don't enable consecutive-down interrupt on
>>     startup
>>   PM / devfreq: tegra30: Constify structs
>>   PM / devfreq: tegra30: Include appropriate header
>>   PM / devfreq: tegra30: Increase sampling period to 16ms
>>   PM / devfreq: tegra30: Support variable polling interval
>>   PM / devfreq: tegra20/30: Add Dmitry as a maintainer
>>
>>  MAINTAINERS                       |   9 +
>>  drivers/devfreq/tegra30-devfreq.c | 706 +++++++++++++++++++++++-------
>>  2 files changed, 555 insertions(+), 160 deletions(-)
>>
> 
> Hello Chanwoo,
> 
> I don't have any more updates in regards to this series, everything is
> working flawlessly for now. Will be awesome if we could continue the
> reviewing and then get the patches into linux-next to get some more testing.
> 
> 

Hello Dmitry,

I'm sorry for late reply. Except for patch5, I reviewed the patches.
Please check my comment. Actually, It is difficult to review the patch5
without any testing environment and detailed knowledge of watermark of tegra.
It is not familiar with me.


Hello Thierry,
If possible, Could you review the patch5 related to setting up the watermark
and other patches?
Dmitry Osipenko Oct. 2, 2019, 1:54 p.m. UTC | #3
02.10.2019 03:25, Chanwoo Choi пишет:
> Hello Dmitry and Thierry,
> 
> On 19. 10. 2. 오전 6:15, Dmitry Osipenko wrote:
>> 12.08.2019 00:22, Dmitry Osipenko пишет:
>>> Hello,
>>>
>>> This series addresses some additional review comments that were made by
>>> Thierry Reding to [1], makes several important changes to the driver,
>>> fixing excessive interrupts activity, and adds new features. In the end
>>> I'm proposing myself as a maintainer for the Tegra devfreq drivers.
>>>
>>> [1] https://lore.kernel.org/lkml/0fb50eb1-a173-1756-6889-2526a10ac707@gmail.com/T/
>>>
>>> Changelog:
>>>
>>> v6:  Addressed review comment that was made by Chanwoo Choi to v5 by
>>>      squashing "Define ACTMON_DEV_CTRL_STOP" patch into the "Use CPUFreq
>>>      notifier" patch.
>>>
>>> v5:  Addressed review comments that were made by Chanwoo Choi to v4 by
>>>      squashing few patches, dropping some questionable patches, rewording
>>>      comments to the code, restructuring the code and etc.
>>>
>>>      These patches are now dropped from the series:
>>>
>>>        PM / devfreq: tegra30: Use tracepoints for debugging
>>>        PM / devfreq: tegra30: Inline all one-line functions
>>>
>>>      The interrupt-optimization patches are squashed into a single patch:
>>>
>>>        PM / devfreq: tegra30: Reduce unnecessary interrupts activity
>>>
>>>      because it's better to keep the optimizations as a separate change and
>>>      this also helps to reduce code churning, since the code changes depend
>>>      on a previous patch in order to stay cleaner.
>>>
>>>      Fixed a lockup bug that I spotted recently, which is caused by a
>>>      clk-notifier->cpufreq_get()->clk_set_rate() sequence. Now a non-blocking
>>>      variant of CPU's frequency retrieving is used, i.e. cpufreq_quick_get().
>>>
>>>      Further optimized the CPUFreq notifier by postponing the delayed
>>>      updating in accordance to the polling interval, this actually uncovered
>>>      the above lockup bug.
>>>
>>>      Implemented new minor driver feature in the new patch:
>>>
>>>        PM / devfreq: tegra30: Support variable polling interval
>>>
>>> v4:  Added two new patches to the series:
>>>
>>>        PM / devfreq: tegra30: Synchronize average count on target's update
>>>        PM / devfreq: tegra30: Increase sampling period to 16ms
>>>
>>>      The first patch addresses problem where governor could get stuck due
>>>      to outdated "average count" value which is snapshoted by ISR and there
>>>      are cases where manual update of the value is required.
>>>
>>>      The second patch is just a minor optimization.
>>>
>>> v3:  Added support for tracepoints, replacing the debug messages.
>>>      Fixed few more bugs with the help of tracepoints.
>>>
>>>      New patches in this version:
>>>
>>>        PM / devfreq: tegra30: Use tracepoints for debugging
>>>        PM / devfreq: tegra30: Optimize CPUFreq notifier
>>>        PM / devfreq: tegra30: Optimize upper consecutive watermark selection
>>>        PM / devfreq: tegra30: Optimize upper average watermark selection
>>>        PM / devfreq: tegra30: Include appropriate header
>>>
>>>      Some of older patches of this series also got some extra minor polish.
>>>
>>> v2:  Added more patches that are cleaning driver's code further and
>>>      squashing another kHz conversion bug.
>>>
>>>      The patch "Rework frequency management logic" of the v1 series is now
>>>      converted to "Set up watermarks properly" because I found some problems
>>>      in the original patch and then realized that there is no need to change
>>>      the logic much. So the logic mostly preserved and only got improvements.
>>>
>>>      The series is based on the today's linux-next (25 Jun) and takes into
>>>      account minor changes that MyungJoo Ham made to the already queued
>>>      patches from the first batch [1].
>>>
>>> Dmitry Osipenko (19):
>>>   PM / devfreq: tegra30: Change irq type to unsigned int
>>>   PM / devfreq: tegra30: Keep interrupt disabled while governor is
>>>     stopped
>>>   PM / devfreq: tegra30: Handle possible round-rate error
>>>   PM / devfreq: tegra30: Drop write-barrier
>>>   PM / devfreq: tegra30: Set up watermarks properly
>>>   PM / devfreq: tegra30: Tune up boosting thresholds
>>>   PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
>>>   PM / devfreq: tegra30: Ensure that target freq won't overflow
>>>   PM / devfreq: tegra30: Use kHz units uniformly in the code
>>>   PM / devfreq: tegra30: Reduce unnecessary interrupts activity
>>>   PM / devfreq: tegra30: Use CPUFreq notifier
>>>   PM / devfreq: tegra30: Move clk-notifier's registration to governor's
>>>     start
>>>   PM / devfreq: tegra30: Reset boosting on startup
>>>   PM / devfreq: tegra30: Don't enable consecutive-down interrupt on
>>>     startup
>>>   PM / devfreq: tegra30: Constify structs
>>>   PM / devfreq: tegra30: Include appropriate header
>>>   PM / devfreq: tegra30: Increase sampling period to 16ms
>>>   PM / devfreq: tegra30: Support variable polling interval
>>>   PM / devfreq: tegra20/30: Add Dmitry as a maintainer
>>>
>>>  MAINTAINERS                       |   9 +
>>>  drivers/devfreq/tegra30-devfreq.c | 706 +++++++++++++++++++++++-------
>>>  2 files changed, 555 insertions(+), 160 deletions(-)
>>>
>>
>> Hello Chanwoo,
>>
>> I don't have any more updates in regards to this series, everything is
>> working flawlessly for now. Will be awesome if we could continue the
>> reviewing and then get the patches into linux-next to get some more testing.
>>
>>
> 
> Hello Dmitry,
> 
> I'm sorry for late reply. Except for patch5, I reviewed the patches.
> Please check my comment. Actually, It is difficult to review the patch5
> without any testing environment and detailed knowledge of watermark of tegra.
> It is not familiar with me.

Thank you very much! I'll go through yours comments and reply to them.

I understand that it's not easy for you to review patch5, but probably
you don't need to go into details and a brief-generic review of the code
will be enough in that case.

The hardware is actually very simple, there are watermarks that
correspond to a memory activity that hardware accounts over a given
period of time. Once watermark is reached, hardware generates interrupt.
There are two types of watermarks: average and consecutive. In case of
the average, the memory activity is collected over a larger window of
time. For the consecutive case, the memory activity is collected over
each period (16ms by default in the driver). Memory client may breach
average watermark very frequently, although that may not affect much the
average value and for some memory clients (like CPU) it is more
preferred to not completely ignore those short bursts of memory
activity. The consecutive watermarks are used in order to detect those
short bursts, which we account in the driver in a form of boosting. You
may notice that boost_up_coeff for the CPU's memory client is set to a
higher value in the driver.

> Hello Thierry,
> If possible, Could you review the patch5 related to setting up the watermark
> and other patches?
> 

Indeed, will be very nice if Thierry could also take a look at this
series. Although.. I could be wrong here, but it looks to me that
Thierry also isn't closely familiar with this driver and the hardware.

Thierry, at least please let us know if you're interested in taking a
look at the patches, I'm pretty sure that you're quite busy with other
things ;)
Peter Geis Oct. 5, 2019, 4:29 p.m. UTC | #4
Tested on the Ouya (tegra30).

Tested-by: Peter Geis <pgwipeout@gmail.com>

On Wed, Oct 2, 2019 at 9:56 AM Dmitry Osipenko <digetx@gmail.com> wrote:
>
> 02.10.2019 03:25, Chanwoo Choi пишет:
> > Hello Dmitry and Thierry,
> >
> > On 19. 10. 2. 오전 6:15, Dmitry Osipenko wrote:
> >> 12.08.2019 00:22, Dmitry Osipenko пишет:
> >>> Hello,
> >>>
> >>> This series addresses some additional review comments that were made by
> >>> Thierry Reding to [1], makes several important changes to the driver,
> >>> fixing excessive interrupts activity, and adds new features. In the end
> >>> I'm proposing myself as a maintainer for the Tegra devfreq drivers.
> >>>
> >>> [1] https://lore.kernel.org/lkml/0fb50eb1-a173-1756-6889-2526a10ac707@gmail.com/T/
> >>>
> >>> Changelog:
> >>>
> >>> v6:  Addressed review comment that was made by Chanwoo Choi to v5 by
> >>>      squashing "Define ACTMON_DEV_CTRL_STOP" patch into the "Use CPUFreq
> >>>      notifier" patch.
> >>>
> >>> v5:  Addressed review comments that were made by Chanwoo Choi to v4 by
> >>>      squashing few patches, dropping some questionable patches, rewording
> >>>      comments to the code, restructuring the code and etc.
> >>>
> >>>      These patches are now dropped from the series:
> >>>
> >>>        PM / devfreq: tegra30: Use tracepoints for debugging
> >>>        PM / devfreq: tegra30: Inline all one-line functions
> >>>
> >>>      The interrupt-optimization patches are squashed into a single patch:
> >>>
> >>>        PM / devfreq: tegra30: Reduce unnecessary interrupts activity
> >>>
> >>>      because it's better to keep the optimizations as a separate change and
> >>>      this also helps to reduce code churning, since the code changes depend
> >>>      on a previous patch in order to stay cleaner.
> >>>
> >>>      Fixed a lockup bug that I spotted recently, which is caused by a
> >>>      clk-notifier->cpufreq_get()->clk_set_rate() sequence. Now a non-blocking
> >>>      variant of CPU's frequency retrieving is used, i.e. cpufreq_quick_get().
> >>>
> >>>      Further optimized the CPUFreq notifier by postponing the delayed
> >>>      updating in accordance to the polling interval, this actually uncovered
> >>>      the above lockup bug.
> >>>
> >>>      Implemented new minor driver feature in the new patch:
> >>>
> >>>        PM / devfreq: tegra30: Support variable polling interval
> >>>
> >>> v4:  Added two new patches to the series:
> >>>
> >>>        PM / devfreq: tegra30: Synchronize average count on target's update
> >>>        PM / devfreq: tegra30: Increase sampling period to 16ms
> >>>
> >>>      The first patch addresses problem where governor could get stuck due
> >>>      to outdated "average count" value which is snapshoted by ISR and there
> >>>      are cases where manual update of the value is required.
> >>>
> >>>      The second patch is just a minor optimization.
> >>>
> >>> v3:  Added support for tracepoints, replacing the debug messages.
> >>>      Fixed few more bugs with the help of tracepoints.
> >>>
> >>>      New patches in this version:
> >>>
> >>>        PM / devfreq: tegra30: Use tracepoints for debugging
> >>>        PM / devfreq: tegra30: Optimize CPUFreq notifier
> >>>        PM / devfreq: tegra30: Optimize upper consecutive watermark selection
> >>>        PM / devfreq: tegra30: Optimize upper average watermark selection
> >>>        PM / devfreq: tegra30: Include appropriate header
> >>>
> >>>      Some of older patches of this series also got some extra minor polish.
> >>>
> >>> v2:  Added more patches that are cleaning driver's code further and
> >>>      squashing another kHz conversion bug.
> >>>
> >>>      The patch "Rework frequency management logic" of the v1 series is now
> >>>      converted to "Set up watermarks properly" because I found some problems
> >>>      in the original patch and then realized that there is no need to change
> >>>      the logic much. So the logic mostly preserved and only got improvements.
> >>>
> >>>      The series is based on the today's linux-next (25 Jun) and takes into
> >>>      account minor changes that MyungJoo Ham made to the already queued
> >>>      patches from the first batch [1].
> >>>
> >>> Dmitry Osipenko (19):
> >>>   PM / devfreq: tegra30: Change irq type to unsigned int
> >>>   PM / devfreq: tegra30: Keep interrupt disabled while governor is
> >>>     stopped
> >>>   PM / devfreq: tegra30: Handle possible round-rate error
> >>>   PM / devfreq: tegra30: Drop write-barrier
> >>>   PM / devfreq: tegra30: Set up watermarks properly
> >>>   PM / devfreq: tegra30: Tune up boosting thresholds
> >>>   PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
> >>>   PM / devfreq: tegra30: Ensure that target freq won't overflow
> >>>   PM / devfreq: tegra30: Use kHz units uniformly in the code
> >>>   PM / devfreq: tegra30: Reduce unnecessary interrupts activity
> >>>   PM / devfreq: tegra30: Use CPUFreq notifier
> >>>   PM / devfreq: tegra30: Move clk-notifier's registration to governor's
> >>>     start
> >>>   PM / devfreq: tegra30: Reset boosting on startup
> >>>   PM / devfreq: tegra30: Don't enable consecutive-down interrupt on
> >>>     startup
> >>>   PM / devfreq: tegra30: Constify structs
> >>>   PM / devfreq: tegra30: Include appropriate header
> >>>   PM / devfreq: tegra30: Increase sampling period to 16ms
> >>>   PM / devfreq: tegra30: Support variable polling interval
> >>>   PM / devfreq: tegra20/30: Add Dmitry as a maintainer
> >>>
> >>>  MAINTAINERS                       |   9 +
> >>>  drivers/devfreq/tegra30-devfreq.c | 706 +++++++++++++++++++++++-------
> >>>  2 files changed, 555 insertions(+), 160 deletions(-)
> >>>
> >>
> >> Hello Chanwoo,
> >>
> >> I don't have any more updates in regards to this series, everything is
> >> working flawlessly for now. Will be awesome if we could continue the
> >> reviewing and then get the patches into linux-next to get some more testing.
> >>
> >>
> >
> > Hello Dmitry,
> >
> > I'm sorry for late reply. Except for patch5, I reviewed the patches.
> > Please check my comment. Actually, It is difficult to review the patch5
> > without any testing environment and detailed knowledge of watermark of tegra.
> > It is not familiar with me.
>
> Thank you very much! I'll go through yours comments and reply to them.
>
> I understand that it's not easy for you to review patch5, but probably
> you don't need to go into details and a brief-generic review of the code
> will be enough in that case.
>
> The hardware is actually very simple, there are watermarks that
> correspond to a memory activity that hardware accounts over a given
> period of time. Once watermark is reached, hardware generates interrupt.
> There are two types of watermarks: average and consecutive. In case of
> the average, the memory activity is collected over a larger window of
> time. For the consecutive case, the memory activity is collected over
> each period (16ms by default in the driver). Memory client may breach
> average watermark very frequently, although that may not affect much the
> average value and for some memory clients (like CPU) it is more
> preferred to not completely ignore those short bursts of memory
> activity. The consecutive watermarks are used in order to detect those
> short bursts, which we account in the driver in a form of boosting. You
> may notice that boost_up_coeff for the CPU's memory client is set to a
> higher value in the driver.
>
> > Hello Thierry,
> > If possible, Could you review the patch5 related to setting up the watermark
> > and other patches?
> >
>
> Indeed, will be very nice if Thierry could also take a look at this
> series. Although.. I could be wrong here, but it looks to me that
> Thierry also isn't closely familiar with this driver and the hardware.
>
> Thierry, at least please let us know if you're interested in taking a
> look at the patches, I'm pretty sure that you're quite busy with other
> things ;)