From: john stultz <johnstul@us.ibm.com>
To: lkml <linux-kernel@vger.kernel.org>, davem@davemloft.net
Cc: rmk+lkml@arm.linux.org.uk, cooloney@kernel.org, starvik@axis.com,
takata@linux-m32r.org, geert@linux-m68k.org,
Roman Zippel <zippel@linux-m68k.org>,
lethal@linux-sh.org, Magnus Damm <magnus.damm@gmail.com>,
wli@holomorphy.com, rth@twiddle.net
Subject: Re: [RFC][PATCH 7/8] Convert sparc to use arch_getoffset() infrastructure.
Date: Tue, 14 Apr 2009 18:51:26 -0700 [thread overview]
Message-ID: <1239760286.6064.44.camel@localhost> (raw)
In-Reply-To: <1239760000.6064.39.camel@localhost>
Hey Dave,
You acked this patch earlier, but I've just tried building with a
cross-compiler environment I had access to and had problems getting it
to build.
It seems the pci_do_get/settimeofday() and the bus_do_get/settimeofday()
redirection code is causing some trouble. I'm really not sure how the
BTFIXUPSET_CALL code works, so I don't want to just kill it off.
Any advice here on how to do this right?
thanks
-john
This patch converts sparc to use GENERIC_TIME via the arch_getoffset()
infrastructure
NOT FOR INCLUSION
Signed-off-by: John Stultz <johnstul@us.ibm.com>
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index cc12cd4..1358aab 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -55,8 +55,11 @@ config BITS
default 64 if SPARC64
config GENERIC_TIME
+ def_bool y
+
+config ARCH_USES_GETTIMEOFFSET
bool
- default y if SPARC64
+ default y if SPARC32
config GENERIC_CMOS_UPDATE
bool
diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c
index 614ac7b..e946b55 100644
--- a/arch/sparc/kernel/time_32.c
+++ b/arch/sparc/kernel/time_32.c
@@ -227,7 +227,7 @@ void __init time_init(void)
sbus_time_init();
}
-static inline unsigned long do_gettimeoffset(void)
+u32 arch_gettimeoffset(void)
{
unsigned long val = *master_l10_counter;
unsigned long usec = (val >> 10) & 0x1fffff;
@@ -236,84 +236,7 @@ static inline unsigned long do_gettimeoffset(void)
if (val & 0x80000000)
usec += 1000000 / HZ;
- return usec;
-}
-
-/* Ok, my cute asm atomicity trick doesn't work anymore.
- * There are just too many variables that need to be protected
- * now (both members of xtime, et al.)
- */
-void do_gettimeofday(struct timeval *tv)
-{
- unsigned long flags;
- unsigned long seq;
- unsigned long usec, sec;
- unsigned long max_ntp_tick = tick_usec - tickadj;
-
- do {
- seq = read_seqbegin_irqsave(&xtime_lock, flags);
- usec = do_gettimeoffset();
-
- /*
- * If time_adjust is negative then NTP is slowing the clock
- * so make sure not to go into next possible interval.
- * Better to lose some accuracy than have time go backwards..
- */
- if (unlikely(time_adjust < 0))
- usec = min(usec, max_ntp_tick);
-
- sec = xtime.tv_sec;
- usec += (xtime.tv_nsec / 1000);
- } while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
-
- while (usec >= 1000000) {
- usec -= 1000000;
- sec++;
- }
-
- tv->tv_sec = sec;
- tv->tv_usec = usec;
-}
-
-EXPORT_SYMBOL(do_gettimeofday);
-
-int do_settimeofday(struct timespec *tv)
-{
- int ret;
-
- write_seqlock_irq(&xtime_lock);
- ret = bus_do_settimeofday(tv);
- write_sequnlock_irq(&xtime_lock);
- clock_was_set();
- return ret;
-}
-
-EXPORT_SYMBOL(do_settimeofday);
-
-static int sbus_do_settimeofday(struct timespec *tv)
-{
- time_t wtm_sec, sec = tv->tv_sec;
- long wtm_nsec, nsec = tv->tv_nsec;
-
- if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
- return -EINVAL;
-
- /*
- * This is revolting. We need to set "xtime" correctly. However, the
- * value in this location is the value at the most recent update of
- * wall time. Discover what correction gettimeofday() would have
- * made, and then undo it!
- */
- nsec -= 1000 * do_gettimeoffset();
-
- wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);
- wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);
-
- set_normalized_timespec(&xtime, sec, nsec);
- set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec);
-
- ntp_clear();
- return 0;
+ return usec * 1000;
}
static int set_rtc_mmss(unsigned long secs)
next prev parent reply other threads:[~2009-04-15 1:51 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-15 1:32 [RESEND][PATCH 0/2] Convert acked !GENERIC_TIME architectures to use the generic timekeeping core john stultz
2009-04-15 1:34 ` [RESEND][PATCH 1/2] Create arch_gettimeoffset infrastructure for use in " john stultz
2009-04-15 1:36 ` [RESEND][PATCH 2/2] Convert sh to use arch_getoffset() infrastructure john stultz
2009-04-15 1:39 ` [RFC][PATCH 1/8] Convert alpha " john stultz
2009-04-15 1:41 ` [RFC][PATCH 2/8] Convert arm " john stultz
2009-04-15 1:43 ` [RFC][PATCH 3/8] Convert blackfin " john stultz
2009-04-15 1:44 ` [RFC][PATCH 4/8] Convert cris " john stultz
2009-04-15 1:45 ` [RFC][PATCH 5/8] Convert m32r " john stultz
2009-04-15 1:46 ` [RFC][PATCH 6/8] Convert m68k " john stultz
2009-04-15 1:51 ` john stultz [this message]
2009-04-15 1:53 ` [RFC][PATCH 8/8] Remove CONFIG_GENERIC_TIME john stultz
2009-04-15 2:51 ` [RFC][PATCH 7/8] Convert sparc to use arch_getoffset() infrastructure David Miller
2009-04-16 7:36 ` [RFC][PATCH 2/8] Convert arm " Russell King
2009-05-01 20:10 ` [RESEND][PATCH 2/2] Convert sh " Andrew Morton
2009-05-02 1:04 ` Paul Mundt
2009-05-05 3:10 ` [PATCH] Sanity check sysfs clocksource changes john stultz
2009-05-05 6:48 ` Thomas Gleixner
2009-05-07 0:47 ` john stultz
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=1239760286.6064.44.camel@localhost \
--to=johnstul@us.ibm.com \
--cc=cooloney@kernel.org \
--cc=davem@davemloft.net \
--cc=geert@linux-m68k.org \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=rmk+lkml@arm.linux.org.uk \
--cc=rth@twiddle.net \
--cc=starvik@axis.com \
--cc=takata@linux-m32r.org \
--cc=wli@holomorphy.com \
--cc=zippel@linux-m68k.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