public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
To: Tony Breeds <tony@bakeyournoodle.com>
Cc: Daniel Walker <dwalker@mvista.com>, Andrew Morton <akpm@osdl.org>,
	john stultz <johnstul@us.ibm.com>,
	LKML <linux-kernel@vger.kernel.org>,
	LinuxPPC-dev <linuxppc-dev@ozlabs.org>,
	Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>
Subject: Re: [RFC] clocksouce implementation for powerpc
Date: Wed, 20 Jun 2007 21:20:49 +0400	[thread overview]
Message-ID: <467961F1.1060909@ru.mvista.com> (raw)
In-Reply-To: <1182351439.18168.79.camel@imap.mvista.com>

Daniel Walker wrote:
>>+static void clocksource_settimeofday(struct clocksource *cs,
>>+                                     struct timespec *ts)
>>+{
>>+	u64 new_xsec;
>>+
>>+#ifdef CONFIG_PPC_ISERIES
>>+	if (firmware_has_feature(FW_FEATURE_ISERIES) && first_settimeofday) {
>>+		iSeries_tb_recal();
>>+		first_settimeofday = 0;
>>+	}
>>+#endif
>>+
>>+	/* Make userspace gettimeofday spin until we're done. */
>>+	++vdso_data->tb_update_count;
>>+	smp_mb();
>>+
>>+	/* In case of a large backwards jump in time with NTP, we want the
>>+	 * clock to be updated as soon as the PLL is again in lock.
>>+	 */
>>+	last_rtc_update = xtime.tv_sec - 658;
>>+
>>+	new_xsec = xtime.tv_nsec;
>>+	if (new_xsec != 0) {
>>+		new_xsec *= XSEC_PER_SEC;
>>+		do_div(new_xsec, NSEC_PER_SEC);
>>+	}
>>+
>>+	new_xsec += (u64)xtime.tv_sec * XSEC_PER_SEC;
>>+
>>+	vdso_data->tz_minuteswest = sys_tz.tz_minuteswest;
>>+	vdso_data->tz_dsttime = sys_tz.tz_dsttime;

    I'm not sure why these are copied *only* here. Shouldn't they be copied 
only once, at init. time?

>>+
>>+	update_gtod(tb_last_jiffy, new_xsec, do_gtod.varp->tb_to_xs);
>>+}

> It does look too large to run from interrupt context,

    You mean if this would have been "included" into update_vsyscall()?

> but it also looks
> like it could get cleaned out more ..

    Yeah, at least new_xsec calculation is duplicated in timer_recalc_offset()..

>>+void update_vsyscall(struct timespec *wall_time, struct clocksource *clock)
>>+{
>>+	timer_recalc_offset(tb_last_jiffy);
>>+	timer_check_rtc();
>>+}

> Hmm .. This doesn't look like it's taking into account that the time has
> changed ..

    Why? By the time it gets called (form the timer softirq context) 
tb_last_jiffy should've been incremented. Well, this won't happen wither in or 
right after the timer interrupt... since timer has no IRQ on PowerPC -- it 
signals "exception". Well, HRT works somehow anyway. :-)

> Your time has effectively incremented by one jiffie .. The
> vdso_data doesn't appear to be updated ..

    Moreover, it will get called for settimeofday() as well which would seem 
to double the overhead since your clocksource hook will get called beforehand.

WBR, Sergei

  reply	other threads:[~2007-06-20 17:19 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-16 10:36 [patch-mm 00/25] High resolution timer updates and x86_64 support - V2 Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 01/25] NOHZ: Fix nox x86 dyntick idle handling Thomas Gleixner
2007-06-16 14:36   ` Bernhard Rosenkraenzer
2007-06-16 14:54     ` Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 02/25] ACPI: Move timer broadcast and pmtimer access before C3 arbiter shutdown Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 03/25] Clockevents remove prototypes of removed functions Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 04/25] Timekeeping: Fixup shadow variable argument Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 05/25] timer.c cleanup recently introduced whitespace damage Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 06/25] clockevents: Fix resume logic Thomas Gleixner
2007-06-16 18:51   ` Separate arch patching (Re: [patch-mm 06/25] clockevents: Fix resume logic) Oleg Verych
2007-06-16 19:04     ` Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 07/25] Tick management: spread timer interrupt Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 08/25] i386: PIT stop only, when in periodic or oneshot mode Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 09/25] clockevents: Fix device replacement Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 10/25] highres: Improve debug output Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 11/25] hrtimer: speedup hrtimer_enqueue Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 12/25] pcspkr: use the global PIT lock Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 13/25] i386: hpet assumes boot cpu is 0 Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 14/25] NTP: Move the cmos update code into ntp.c Thomas Gleixner
2007-06-19  8:26   ` Franck Bui-Huu
2007-06-16 10:36 ` [patch-mm 15/25] clocksource: add settimeofday hook for PPC Thomas Gleixner
2007-06-16 15:51   ` Daniel Walker
2007-06-20  6:57     ` [RFC] clocksouce implementation for powerpc Tony Breeds
2007-06-20 14:57       ` Daniel Walker
2007-06-20 17:20         ` Sergei Shtylyov [this message]
2007-06-20 17:31           ` Thomas Gleixner
2007-06-20 18:11             ` Sergei Shtylyov
2007-06-22  6:23         ` Tony Breeds
2007-06-20 16:53       ` Sergei Shtylyov
2007-06-22  6:10         ` Tony Breeds
2007-06-22 12:42           ` Sergei Shtylyov
2007-06-20 21:06       ` john stultz
2007-06-22  6:28         ` Tony Breeds
2007-06-16 10:36 ` [patch-mm 16/25] x86_64: untangle asm/hpet.h from asm/timex.h Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 17/25] x86_64: Use generic cmos update Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 18/25] i386: move setup_pit_timer to the correct header file Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 19/25] x86-64: remove dead code and other janitor work in tsc.c Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 20/25] x86_64: Convert to cleckevents Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 21/25] x86_64: hpet restore vread Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 22/25] x86_64: restore restore nohpet cmdline Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 23/25] x86-64 block irq balancing for timer Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 24/25] x86_64: prep idle loop for dynticks Thomas Gleixner
2007-06-16 10:36 ` [patch-mm 25/25] x86_64: enable high resolution timers and dynticks Thomas Gleixner
2007-06-16 14:41 ` [patch-mm 00/25] High resolution timer updates and x86_64 support - V2 Alistair John Strachan
2007-06-16 19:06   ` Thomas Gleixner
2007-06-16 23:04 ` Nigel Cunningham
2007-06-18 20:06 ` Valdis.Kletnieks
2007-06-18 20:24   ` Pallipadi, Venkatesh
2007-06-18 21:49     ` Valdis.Kletnieks
2007-06-18 22:10       ` Pallipadi, Venkatesh
2007-06-19 11:28       ` Valdis.Kletnieks
2007-06-19  1:52   ` Arjan van de Ven

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=467961F1.1060909@ru.mvista.com \
    --to=sshtylyov@ru.mvista.com \
    --cc=akpm@osdl.org \
    --cc=dwalker@mvista.com \
    --cc=johnstul@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=tony@bakeyournoodle.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