All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Hiremath, Vaibhav" <hvaibhav@ti.com>
To: "Hiremath, Vaibhav" <hvaibhav@ti.com>,
	"Shilimkar, Santosh" <santosh.shilimkar@ti.com>
Cc: "Hilman, Kevin" <khilman@ti.com>,
	Ming Lei <tom.leiming@gmail.com>,
	Tony Lindgren <tony@atomide.com>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"marc.zyngier@arm.com" <marc.zyngier@arm.com>,
	"johnstul@us.ibm.com" <johnstul@us.ibm.com>,
	"Balbi, Felipe" <balbi@ti.com>,
	"Cousson, Benoit" <b-cousson@ti.com>,
	Paul Walmsley <paul@pwsan.com>,
	"DebBarma, Tarun Kanti" <tarun.kanti@ti.com>,
	Russell King <rmk@arm.linux.org.uk>
Subject: RE: [PATCH 1/3] ARM: OMAP2+: 32k-counter: Use hwmod lookup to check presence of 32k timer
Date: Thu, 5 Apr 2012 09:36:00 +0000	[thread overview]
Message-ID: <79CD15C6BA57404B839C016229A409A83184846A@DBDE01.ent.ti.com> (raw)
In-Reply-To: CAMQu2gxuFsovKTPK8wFOO8vMeiyMFnTqNDRZYgAcCsVWytpOTA@mail.gmail.com

On Wed, Apr 04, 2012 at 16:09:51, Hiremath, Vaibhav wrote:
> On Wed, Apr 04, 2012 at 14:34:09, Shilimkar, Santosh wrote:
> > On Tue, Apr 3, 2012 at 9:05 PM, Hiremath, Vaibhav <hvaibhav@ti.com> wrote:
> > > On Tue, Apr 03, 2012 at 00:05:38, Hilman, Kevin wrote:
> > >> "Shilimkar, Santosh" <santosh.shilimkar@ti.com> writes:
> > >>
> > >> [...]
> > >>
> > >> > I don't personally like to add features which hardly anybody use and
> > >> > fundamentally broken with full kernel.
> > >>
> > >> Let's keep sane defaults, but not make it unreasonable to tweak eaither.
> > >>
> > >> I suggest what has already been mentioned.
> > >>
> > >> Register both timers, but have the sync timer have a higher rating.  On
> > >> AMxxx where there is no sync timer, GPtimer will be used.
> > >>
> > >
> > > This is another good option, I can change the rating of both the timers.
> > > With below description and given understanding/discussion/usability of both
> > > the timers, we can reverse the rating,
> > >
> > Btw, if we are going with this path, then there won't any need of commandline
> > option since clock-source can be switched from user space as well.
> > 
> 
> Yes, both the options will be open now and its upto user how he want to 
> choose it (either bootargs or sysfs).
> 

Santosh, Kevin and others (may be Russell can comment/conform),

Unfortunately, I am still struggling to get final patch out of this 
discussion,

Although now we concluded on changing the rates for 32ksync (rating = 300) 
and gptmier (rating = 250), and we thought kernel will choose better 
clocksource automatically, in default case it would be 32ksync_counter, and 
that is what we want; and user can use bootargs to override the clocksource 
to gptimer.

But we all missed on "setup_sched_clock()", which is dependent on clock 
Frequency, and based on that whole sched_clock() function works.

In case of 32ksync_counter:
--------------------------
cd.mult - 4000000000, cd.shift - 17
sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms

In case of gptimer:
--------------------------
cd.mult - 2581110154, cd.shift - 26
sched_clock: 32 bits at 26MHz, resolution 38ns, wraps every 165191ms

Also, in addition to this,

 - We do not have any API available in sched_clock code to update the 
   mult/shift factors.

 - You supposed to not call setup_sched_clock() multiple times, it dumps 
   whole stack with,

   WARN_ON(read_sched_clock != jiffy_sched_clock_read);

 - In case, user pass "clocksource="gp timer" in bootargs, still initially
   Kernel is going to use 32ksync_counter as a clocksource and the late in 
   the boot sequence it will switch to gptimer.

   [    0.637512] Switching to clocksource gp timer


There seems to be limitation for ARM architecture, it is restricted by
sched_clock implementation present in "arch/arm/kernel/sched_clock.c".
Natively, clocksource framework does support change in rate/frequency for
registered timer, using,

   - __clocksource_updatefreq_scale()
   - __clocksource_updatefreq_hz()
   - __clocksource_updatefreq_khz()


May be I am missing something here, so far this is what my understanding is, 
I am still digging through the code to understand how best we can handle 
this. And also, I wouldn't want to again create our own sched_clock 
interface.

May be Russell can help me to conform my understanding here.


Coming back to our actual problem of registering 2 clocksources, with all 
above things, I am slowly moving towards keeping CONFIG_OMAP_32K_TIMER 
config option and use compile time option for this (original approach) along 
with hwmod detection, so that it can be reused for devices like AM33xx.

Code implementation will be,

#ifdef CONFIG_OMAP_32K_TIMER
	oh = omap_hwmod_lookup(oh_name);
	if (oh && oh->slaves_cnt != 0) {
		u32 pbase;
		unsigned long size;
		struct resource mem_rsrc;
	
		res = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM,
					NULL, &mem_rsrc);
		if (!res) {
			pbase = mem_rsrc.start + 0x10;
			size = mem_rsrc.end - mem_rsrc.start;
			res = omap_init_clocksource_32k(pbase, size);
			if (!res)
				return;
	}
}
#endif

	/* Fall back to gp-timer code */
	res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source);
	BUG_ON(res);

	__omap_dm_timer_load_start(&clksrc,
			OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 1);

	setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate);

	if (clocksource_register_hz(&clocksource_gpt, clksrc.rate))
		pr_err("Could not register clocksource %s\n",
						clocksource_gpt.name);
	else
		pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n",
						gptimer_id, clksrc.rate);


Thanks,
Vaibhav

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: hvaibhav@ti.com (Hiremath, Vaibhav)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] ARM: OMAP2+: 32k-counter: Use hwmod lookup to check presence of 32k timer
Date: Thu, 5 Apr 2012 09:36:00 +0000	[thread overview]
Message-ID: <79CD15C6BA57404B839C016229A409A83184846A@DBDE01.ent.ti.com> (raw)
In-Reply-To: CAMQu2gxuFsovKTPK8wFOO8vMeiyMFnTqNDRZYgAcCsVWytpOTA@mail.gmail.com

On Wed, Apr 04, 2012 at 16:09:51, Hiremath, Vaibhav wrote:
> On Wed, Apr 04, 2012 at 14:34:09, Shilimkar, Santosh wrote:
> > On Tue, Apr 3, 2012 at 9:05 PM, Hiremath, Vaibhav <hvaibhav@ti.com> wrote:
> > > On Tue, Apr 03, 2012 at 00:05:38, Hilman, Kevin wrote:
> > >> "Shilimkar, Santosh" <santosh.shilimkar@ti.com> writes:
> > >>
> > >> [...]
> > >>
> > >> > I don't personally like to add features which hardly anybody use and
> > >> > fundamentally broken with full kernel.
> > >>
> > >> Let's keep sane defaults, but not make it unreasonable to tweak eaither.
> > >>
> > >> I suggest what has already been mentioned.
> > >>
> > >> Register both timers, but have the sync timer have a higher rating. ?On
> > >> AMxxx where there is no sync timer, GPtimer will be used.
> > >>
> > >
> > > This is another good option, I can change the rating of both the timers.
> > > With below description and given understanding/discussion/usability of both
> > > the timers, we can reverse the rating,
> > >
> > Btw, if we are going with this path, then there won't any need of commandline
> > option since clock-source can be switched from user space as well.
> > 
> 
> Yes, both the options will be open now and its upto user how he want to 
> choose it (either bootargs or sysfs).
> 

Santosh, Kevin and others (may be Russell can comment/conform),

Unfortunately, I am still struggling to get final patch out of this 
discussion,

Although now we concluded on changing the rates for 32ksync (rating = 300) 
and gptmier (rating = 250), and we thought kernel will choose better 
clocksource automatically, in default case it would be 32ksync_counter, and 
that is what we want; and user can use bootargs to override the clocksource 
to gptimer.

But we all missed on "setup_sched_clock()", which is dependent on clock 
Frequency, and based on that whole sched_clock() function works.

In case of 32ksync_counter:
--------------------------
cd.mult - 4000000000, cd.shift - 17
sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms

In case of gptimer:
--------------------------
cd.mult - 2581110154, cd.shift - 26
sched_clock: 32 bits at 26MHz, resolution 38ns, wraps every 165191ms

Also, in addition to this,

 - We do not have any API available in sched_clock code to update the 
   mult/shift factors.

 - You supposed to not call setup_sched_clock() multiple times, it dumps 
   whole stack with,

   WARN_ON(read_sched_clock != jiffy_sched_clock_read);

 - In case, user pass "clocksource="gp timer" in bootargs, still initially
   Kernel is going to use 32ksync_counter as a clocksource and the late in 
   the boot sequence it will switch to gptimer.

   [    0.637512] Switching to clocksource gp timer


There seems to be limitation for ARM architecture, it is restricted by
sched_clock implementation present in "arch/arm/kernel/sched_clock.c".
Natively, clocksource framework does support change in rate/frequency for
registered timer, using,

   - __clocksource_updatefreq_scale()
   - __clocksource_updatefreq_hz()
   - __clocksource_updatefreq_khz()


May be I am missing something here, so far this is what my understanding is, 
I am still digging through the code to understand how best we can handle 
this. And also, I wouldn't want to again create our own sched_clock 
interface.

May be Russell can help me to conform my understanding here.


Coming back to our actual problem of registering 2 clocksources, with all 
above things, I am slowly moving towards keeping CONFIG_OMAP_32K_TIMER 
config option and use compile time option for this (original approach) along 
with hwmod detection, so that it can be reused for devices like AM33xx.

Code implementation will be,

#ifdef CONFIG_OMAP_32K_TIMER
	oh = omap_hwmod_lookup(oh_name);
	if (oh && oh->slaves_cnt != 0) {
		u32 pbase;
		unsigned long size;
		struct resource mem_rsrc;
	
		res = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM,
					NULL, &mem_rsrc);
		if (!res) {
			pbase = mem_rsrc.start + 0x10;
			size = mem_rsrc.end - mem_rsrc.start;
			res = omap_init_clocksource_32k(pbase, size);
			if (!res)
				return;
	}
}
#endif

	/* Fall back to gp-timer code */
	res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source);
	BUG_ON(res);

	__omap_dm_timer_load_start(&clksrc,
			OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 1);

	setup_sched_clock(dmtimer_read_sched_clock, 32, clksrc.rate);

	if (clocksource_register_hz(&clocksource_gpt, clksrc.rate))
		pr_err("Could not register clocksource %s\n",
						clocksource_gpt.name);
	else
		pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n",
						gptimer_id, clksrc.rate);


Thanks,
Vaibhav

  parent reply	other threads:[~2012-04-05  9:36 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-19 14:28 [PATCH 0/3] ARM: OMAP1/2+: 32k-timer: Add hwmod lookup for 32k-timer Vaibhav Hiremath
2012-01-19 14:28 ` Vaibhav Hiremath
2012-01-19 14:28 ` [PATCH 1/3] ARM: OMAP2+: 32k-counter: Use hwmod lookup to check presence of 32k timer Vaibhav Hiremath
2012-01-19 14:28   ` Vaibhav Hiremath
2012-01-23 23:38   ` Kevin Hilman
2012-01-23 23:38     ` Kevin Hilman
2012-01-24  8:53     ` Hiremath, Vaibhav
2012-01-24  8:53       ` Hiremath, Vaibhav
2012-01-24 17:47       ` Kevin Hilman
2012-01-24 17:47         ` Kevin Hilman
2012-02-01  8:00         ` Hiremath, Vaibhav
2012-02-01  8:00           ` Hiremath, Vaibhav
2012-03-13 11:37     ` Ming Lei
2012-03-13 11:37       ` Ming Lei
2012-03-19 11:11       ` Hiremath, Vaibhav
2012-03-19 11:11         ` Hiremath, Vaibhav
2012-03-19 11:44         ` Ming Lei
2012-03-19 11:44           ` Ming Lei
2012-03-19 12:15           ` Santosh Shilimkar
2012-03-19 12:15             ` Santosh Shilimkar
2012-03-21 11:42             ` Hiremath, Vaibhav
2012-03-21 11:42               ` Hiremath, Vaibhav
2012-03-21 14:00               ` Shilimkar, Santosh
2012-03-21 14:00                 ` Shilimkar, Santosh
2012-03-28 14:16                 ` Hiremath, Vaibhav
2012-03-28 14:16                   ` Hiremath, Vaibhav
2012-03-28 14:20                   ` Shilimkar, Santosh
2012-03-28 14:20                     ` Shilimkar, Santosh
2012-03-28 14:37                     ` Hiremath, Vaibhav
2012-03-28 14:37                       ` Hiremath, Vaibhav
2012-03-28 14:49                       ` Shilimkar, Santosh
2012-03-28 14:49                         ` Shilimkar, Santosh
2012-03-30  6:34                         ` Hiremath, Vaibhav
2012-03-30  6:34                           ` Hiremath, Vaibhav
2012-03-30  7:41                           ` Shilimkar, Santosh
2012-03-30  7:41                             ` Shilimkar, Santosh
2012-03-30  8:32                             ` Hiremath, Vaibhav
2012-03-30  8:32                               ` Hiremath, Vaibhav
2012-03-30  8:38                               ` Santosh Shilimkar
2012-03-30  8:38                                 ` Santosh Shilimkar
2012-03-30  9:12                                 ` Hiremath, Vaibhav
2012-03-30  9:12                                   ` Hiremath, Vaibhav
2012-03-30  9:20                                   ` Shilimkar, Santosh
2012-03-30  9:20                                     ` Shilimkar, Santosh
2012-03-30  9:28                                     ` Hiremath, Vaibhav
2012-03-30  9:28                                       ` Hiremath, Vaibhav
2012-03-30  9:42                                       ` Shilimkar, Santosh
2012-03-30  9:42                                         ` Shilimkar, Santosh
2012-03-30 11:29                                         ` Hiremath, Vaibhav
2012-03-30 11:29                                           ` Hiremath, Vaibhav
2012-03-30 11:35                                           ` Santosh Shilimkar
2012-03-30 11:35                                             ` Santosh Shilimkar
2012-03-31  1:30                                     ` Ming Lei
2012-03-31  1:30                                       ` Ming Lei
2012-03-31  6:30                                       ` Shilimkar, Santosh
2012-03-31  6:30                                         ` Shilimkar, Santosh
2012-03-31  8:39                                         ` Ming Lei
2012-03-31  8:39                                           ` Ming Lei
2012-03-31 19:10                                           ` Shilimkar, Santosh
2012-03-31 19:10                                             ` Shilimkar, Santosh
2012-04-01  1:39                                             ` Ming Lei
2012-04-01  1:39                                               ` Ming Lei
2012-04-01  5:53                                               ` Shilimkar, Santosh
2012-04-01  5:53                                                 ` Shilimkar, Santosh
2012-04-02 18:35                                                 ` Kevin Hilman
2012-04-02 18:35                                                   ` Kevin Hilman
2012-04-03  5:50                                                   ` Shilimkar, Santosh
2012-04-03  5:50                                                     ` Shilimkar, Santosh
2012-04-03 15:35                                                   ` Hiremath, Vaibhav
2012-04-03 15:35                                                     ` Hiremath, Vaibhav
2012-04-04  9:04                                                     ` Shilimkar, Santosh
2012-04-04  9:04                                                       ` Shilimkar, Santosh
2012-04-04 10:39                                                       ` Hiremath, Vaibhav
2012-04-04 10:39                                                         ` Hiremath, Vaibhav
2012-04-05  9:36                                                       ` Hiremath, Vaibhav [this message]
2012-04-05  9:36                                                         ` Hiremath, Vaibhav
2012-04-05  9:52                                                         ` Russell King - ARM Linux
2012-04-05  9:52                                                           ` Russell King - ARM Linux
2012-04-05 10:31                                                           ` Hiremath, Vaibhav
2012-04-05 10:31                                                             ` Hiremath, Vaibhav
2012-04-05 10:46                                                             ` Santosh Shilimkar
2012-04-05 10:46                                                               ` Santosh Shilimkar
2012-04-05 21:33                                                             ` Kevin Hilman
2012-04-05 21:33                                                               ` Kevin Hilman
2012-04-06  5:21                                                               ` Hiremath, Vaibhav
2012-04-06  5:21                                                                 ` Hiremath, Vaibhav
2012-04-06 18:04                                                                 ` Tony Lindgren
2012-04-06 18:04                                                                   ` Tony Lindgren
2012-04-09  6:19                                                                   ` Hiremath, Vaibhav
2012-04-09  6:19                                                                     ` Hiremath, Vaibhav
2012-04-09 20:18                                                                     ` Jon Hunter
2012-04-09 20:18                                                                       ` Jon Hunter
2012-04-10  5:42                                                                       ` Hiremath, Vaibhav
2012-04-10  5:42                                                                         ` Hiremath, Vaibhav
2012-04-10  8:44                                                                       ` Russell King - ARM Linux
2012-04-10  8:44                                                                         ` Russell King - ARM Linux
2012-04-10  8:57                                                                         ` Santosh Shilimkar
2012-04-10  8:57                                                                           ` Santosh Shilimkar
2012-04-10  9:29                                                                           ` Russell King - ARM Linux
2012-04-10  9:29                                                                             ` Russell King - ARM Linux
2012-04-10  9:51                                                                             ` Shilimkar, Santosh
2012-04-10  9:51                                                                               ` Shilimkar, Santosh
2012-04-10 21:03                                                                               ` Jon Hunter
2012-04-10 21:03                                                                                 ` Jon Hunter
2012-04-11  1:00                                                                               ` Ming Lei
2012-04-11  1:00                                                                                 ` Ming Lei
2012-04-11  7:47                                                                                 ` Shilimkar, Santosh
2012-04-11  7:47                                                                                   ` Shilimkar, Santosh
2012-04-06 21:18                                                                 ` Kevin Hilman
2012-04-06 21:18                                                                   ` Kevin Hilman
2012-04-09  6:25                                                                   ` Hiremath, Vaibhav
2012-04-09  6:25                                                                     ` Hiremath, Vaibhav
2012-03-21 11:29           ` Hiremath, Vaibhav
2012-03-21 11:29             ` Hiremath, Vaibhav
2012-03-23  8:20             ` Ming Lei
2012-03-23  8:20               ` Ming Lei
2012-03-30  6:39               ` Hiremath, Vaibhav
2012-03-30  6:39                 ` Hiremath, Vaibhav
2012-03-05 22:55   ` Tony Lindgren
2012-03-05 22:55     ` Tony Lindgren
2012-03-07  9:48     ` Hiremath, Vaibhav
2012-03-07  9:48       ` Hiremath, Vaibhav
2012-03-09 17:58     ` Hiremath, Vaibhav
2012-03-09 17:58       ` Hiremath, Vaibhav
2012-03-12  9:39       ` Felipe Balbi
2012-03-12  9:39         ` Felipe Balbi
2012-03-12  9:48         ` Hiremath, Vaibhav
2012-03-12  9:48           ` Hiremath, Vaibhav
2012-03-12 10:17           ` Felipe Balbi
2012-03-12 10:17             ` Felipe Balbi
2012-03-12 10:39             ` Hiremath, Vaibhav
2012-03-12 10:39               ` Hiremath, Vaibhav
2012-01-19 14:28 ` [PATCH 2/3] ARM: OMAP2/3: Add idle_st bits for ST_32KSYNC timer to prcm-common header Vaibhav Hiremath
2012-01-19 14:28   ` Vaibhav Hiremath
2012-03-05 22:56   ` Tony Lindgren
2012-03-05 22:56     ` Tony Lindgren
2012-03-07  9:49     ` Hiremath, Vaibhav
2012-03-07  9:49       ` Hiremath, Vaibhav
2012-01-19 14:28 ` [PATCH 3/3] ARM: OMAP2+: hwmod data: Add 32k-sync timer data to hwmod database Vaibhav Hiremath
2012-01-19 14:28   ` Vaibhav Hiremath
2012-01-23  8:47 ` [PATCH 0/3] ARM: OMAP1/2+: 32k-timer: Add hwmod lookup for 32k-timer Hiremath, Vaibhav
2012-01-23  8:47   ` Hiremath, Vaibhav
2012-03-05 22:57   ` Tony Lindgren
2012-03-05 22:57     ` Tony Lindgren
2012-03-07  9:50     ` Hiremath, Vaibhav
2012-03-07  9:50       ` Hiremath, Vaibhav

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=79CD15C6BA57404B839C016229A409A83184846A@DBDE01.ent.ti.com \
    --to=hvaibhav@ti.com \
    --cc=b-cousson@ti.com \
    --cc=balbi@ti.com \
    --cc=johnstul@us.ibm.com \
    --cc=khilman@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=paul@pwsan.com \
    --cc=rmk@arm.linux.org.uk \
    --cc=santosh.shilimkar@ti.com \
    --cc=tarun.kanti@ti.com \
    --cc=tom.leiming@gmail.com \
    --cc=tony@atomide.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.