public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Nishanth Menon <nm@ti.com>
To: Kevin Hilman <khilman@deeprootsystems.com>
Cc: linux-omap <linux-omap@vger.kernel.org>,
	"Cousson, Benoit" <b-cousson@ti.com>,
	"Chikkature Rajashekar, Madhusudhan" <madhu.cr@ti.com>,
	Paul Walmsley <paul@pwsan.com>, "Dasgupta, Romit" <romit@ti.com>,
	"Premi, Sanjeev" <premi@ti.com>,
	"Shilimkar, Santosh" <santosh.shilimkar@ti.com>,
	"Aguirre, Sergio" <saaguirre@ti.com>,
	"Gopinath, Thara" <thara@ti.com>,
	"Sripathy, Vishwanath" <vishwanath.bs@ti.com>,
	"K, Ambresh" <ambresh@ti.com>
Subject: Re: [PATCH 5/9] omap3: pm: sr: replace get_opp with freq_to_opp
Date: Wed, 6 Jan 2010 17:46:23 -0600	[thread overview]
Message-ID: <4B4520CF.3000306@ti.com> (raw)
In-Reply-To: <87k4wfrm89.fsf@deeprootsystems.com>

Kevin Hilman had written, on 12/22/2009 10:45 AM, the following:
> "Menon, Nishanth" <nm@ti.com> writes:
> 
>> Kevin Hilman said the following on 12/19/2009 04:42 AM:
>>> Nishanth Menon <nm@ti.com> writes:
>>>
>>>   
>>>> SmartReflex implements a get_opp to search through the opp table,
>>>> replace it with the accessor function as it is a duplicate of
>>>> freq_to_opp
>>>>     
>>> SmartReflex is not quite working with this version which is in
>>> pm-wip-opp.  My (untested) theory below...
>>>
>>> [...]
>>>   
>> Ambresh and I  just tested the very latest of the pm-wip-opp branch
>> and checked. Voltage transitions and SR adjustments are happily
>> happening on SDP3430 ES3.1 at the very least (verified with a scope on
>> vdd1).
>>
>> and if you look closely in the code, sr2.vdd_opp_clk->rate and
>> sr1.vdd_opp_clk->rate are based on
>> sr1.vdd_opp_clk = clk_get(NULL, "dpll1_ck")
>> sr2.vdd_opp_clk = clk_get(NULL, "l3_ick");
>>
>> now, if the dpll1_ck ->rate and l3_ick->rate are not exact frequencies
>> as the opp tables, I think we have a clockframework bug and the code
>> here is correct. we should fix the clockframework/find the rootcause
>> elsewhere.
>>
>> Now is the clockframework wrong? we added a patch to print the
>> frequencies and checked if IS_ERR(opp) is true -> not a single call
>> while using cpu_freq transitions resulted in an error value and all
>> the frequencies we printed were from the OPP table
>>
>> Might be good to hear your rationale for saying this result..
> 
> Part of my rationale was that the PM branch version get_vdd1_opp()
> does an approximate match (actually the equivalent of
> opp_find_freq_ceil() via get_opp.)  So you replaced an approximate
> match with an exact match.  That may be the right solution and point
> to a bug elsewhere, but it was not an equivalent replacement, and
> probably should've been done in a separate patch with
> justification/rationale.  I didn't catch it during initial review.
> 
> But the primary reason I noticed it in the first place was that I was
> seeing DVFS errors on n900, which is the only platform I have that
> actually can do SmartReflex.  Specifically, sr_reset_voltage() is
> failing for VDD1.  Dumping out the clock rates used in get_vdd1_opp()
> show that the clocks rates are close, but not the exact value used in
> the OPP table.
> 
> Here is the patch I used to add some debugging, and I see that for the
> 250MHz OPP, the clock framework rate is 249600000 and for the 125MHz
> OPP, the clock rate is 124800000.  As I said, close, but clearly an
> find with exact match is going to fail.
> 
> Below the patch, is the console dump and backtrace of how get_vdd1_opp()
> was called so you can see the call chain.
> 
> Kevin
> 
> diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c
> index d341857..01a3dbd 100644
> --- a/arch/arm/mach-omap2/smartreflex.c
> +++ b/arch/arm/mach-omap2/smartreflex.c
> @@ -155,6 +155,8 @@ static u8 get_vdd1_opp(void)
>  							mpu_opps == NULL)
>  		return 0;
>  
> +	printk("%s: sr1.vdd_opp_clk->rate = %d\n", __func__,
> +	       sr1.vdd_opp_clk->rate);
>  	opp = opp_find_freq_exact(mpu_opps, sr1.vdd_opp_clk->rate, true);
>  	if (IS_ERR(opp))
>  		return 0;
> @@ -451,6 +453,7 @@ static int sr_reset_voltage(int srid)
>  		target_opp_no = get_vdd1_opp();
>  		if (!target_opp_no) {
>  			pr_info("Current OPP unknown: Cannot reset voltage\n");
> +			__backtrace();
>  			return 1;
>  		}
>  
> 
> 
> /sys/devices/system/cpu/cpu0/cpufreq # echo 250000 > scaling_setspeed 
> get_vdd1_opp: sr1.vdd_opp_clk->rate = 249600000
> Current OPP unknown: Cannot reset voltage
> [<c0042c98>] (sr_reset_voltage+0x0/0x190) from [<c0043094>] (sr_stop_vddautocomap+0x12c/0x148)
>  r7:00000001 r6:00000001 r5:c03ac878 r4:00000000
> [<c0042f68>] (sr_stop_vddautocomap+0x0/0x148) from [<c0043388>] (sr_voltagescale_vcbypass+0x2c/0x170)
[...]

Throws up my hands! 3430 on N900/SDP3430 should be essentially the same!

Configuration:
==============
kernel: 
git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm.git
branch:
pm-wip-opp 6e1276f omap3:pm: remove map3_[mpu|dsp|l3]_rate_tables
Applied my bugfix: http://patchwork.kernel.org/patch/71457/

I have a 3430 ES3.1 SDP3430 where I did run the test:

Log Patch: http://pastebin.mozilla.org/695225
Test script: http://pastebin.mozilla.org/695226 (I call this test-me.sh)
Result log: http://pastebin.mozilla.org/695224

huh? no crash, all the frequencies and transitions are good, the rates 
of dpll1,2,3 look good! there is something definitely fishy about N900 
configuration??

-- 
Regards,
Nishanth Menon

  reply	other threads:[~2010-01-06 23:46 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-12  5:45 [PATCH 0/9] OMAP3: PM: introduce support for 3630 OPPs Nishanth Menon
2009-11-12  5:45 ` [PATCH 1/9] omap3: pm: introduce enabled flag to omap_opp Nishanth Menon
2009-11-12  5:45   ` [PATCH 2/9] omap3: pm: introduce opp accessor functions Nishanth Menon
2009-11-12  5:45     ` [PATCH 3/9] omap3: pm: srf: introduce accessor function Nishanth Menon
2009-11-12  5:45       ` [PATCH 4/9] omap3: pm: use opp accessor functions for omap-target Nishanth Menon
2009-11-12  5:45         ` [PATCH 5/9] omap3: pm: sr: replace get_opp with freq_to_opp Nishanth Menon
2009-11-12  5:45           ` [PATCH 6/9] omap3: clk: use pm accessor functions for cpufreq table Nishanth Menon
2009-11-12  5:45             ` [PATCH 7/9] omap3: pm: remove VDDx_MIN/MAX macros Nishanth Menon
2009-11-12  5:45               ` [PATCH 8/9] omap3: pm: introduce dynamic OPP Nishanth Menon
2009-11-12  5:45                 ` [PATCH 9/9] omap3: pm: introduce 3630 opps Nishanth Menon
2009-12-18 23:12           ` [PATCH 5/9] omap3: pm: sr: replace get_opp with freq_to_opp Kevin Hilman
2009-12-19 11:35             ` Menon, Nishanth
2009-12-22 16:45               ` Kevin Hilman
2010-01-06 23:46                 ` Nishanth Menon [this message]
2010-01-07  0:23                   ` Kevin Hilman
2010-01-07  8:35                   ` Sripathy, Vishwanath
2010-01-07  8:53                     ` Romit Dasgupta
2010-01-07  9:13                       ` Sripathy, Vishwanath
2010-01-07 12:15                     ` Nishanth Menon
2010-01-07 14:18                       ` Nishanth Menon
2009-12-21  6:58             ` Romit Dasgupta
  -- strict thread matches above, loose matches on Subject: below --
2009-11-13  6:05 [PATCH 0/9 v2] omap3: pm: introduce support for 3630 OPPs Nishanth Menon
2009-11-13  6:05 ` [PATCH 1/9] omap3: pm: introduce enabled flag to omap_opp Nishanth Menon
2009-11-13  6:05   ` [PATCH 2/9 v2] omap3: pm: introduce opp accessor functions Nishanth Menon
2009-11-13  6:05     ` [PATCH 3/9] omap3: pm: srf: use opp accessor function Nishanth Menon
2009-11-13  6:05       ` [PATCH 4/9] omap3: pm: use opp accessor functions for omap-target Nishanth Menon
2009-11-13  6:05         ` [PATCH 5/9] omap3: pm: sr: replace get_opp with freq_to_opp Nishanth Menon

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=4B4520CF.3000306@ti.com \
    --to=nm@ti.com \
    --cc=ambresh@ti.com \
    --cc=b-cousson@ti.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=madhu.cr@ti.com \
    --cc=paul@pwsan.com \
    --cc=premi@ti.com \
    --cc=romit@ti.com \
    --cc=saaguirre@ti.com \
    --cc=santosh.shilimkar@ti.com \
    --cc=thara@ti.com \
    --cc=vishwanath.bs@ti.com \
    /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