From: Glauber de Oliveira Costa <gcosta@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: akpm@linux-foundation.org, rusty@rustcorp.com.au, ak@suse.de,
mingo@elte.hu, chrisw@sous-sol.org, jeremy@goop.org,
avi@qumranet.com, anthony@codemonkey.ws,
virtualization@lists.linux-foundation.org, lguest@ozlabs.org,
glommer@gmail.com, Glauber de Oliveira Costa <gcosta@redhat.com>,
Steven Rostedt <rostedt@goodmis.org>
Subject: [PATCH 19/25][V3] time-related functions paravirt provisions
Date: Wed, 15 Aug 2007 09:49:39 -0300 [thread overview]
Message-ID: <11871824081337-git-send-email-gcosta@redhat.com> (raw)
In-Reply-To: <11871823991803-git-send-email-gcosta@redhat.com>
This patch add provisions for time related functions so they
can be later replaced by paravirt versions.
it basically encloses {g,s}et_wallclock inside the
already existent functions update_persistent_clock and
read_persistent_clock, and defines {s,g}et_wallclock
to the core of such functions.
The timer interrupt setup also have to be replaced.
The job is done by time_init_hook().
Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
arch/x86_64/kernel/time.c | 37 +++++++++++++++++++++++++------------
include/asm-x86_64/time.h | 18 ++++++++++++++++++
2 files changed, 43 insertions(+), 12 deletions(-)
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
index 6d48a4e..29fcd91 100644
--- a/arch/x86_64/kernel/time.c
+++ b/arch/x86_64/kernel/time.c
@@ -42,6 +42,7 @@
#include <asm/sections.h>
#include <linux/hpet.h>
#include <asm/apic.h>
+#include <asm/time.h>
#include <asm/hpet.h>
#include <asm/mpspec.h>
#include <asm/nmi.h>
@@ -82,18 +83,12 @@ EXPORT_SYMBOL(profile_pc);
* sheet for details.
*/
-static int set_rtc_mmss(unsigned long nowtime)
+int do_set_rtc_mmss(unsigned long nowtime)
{
int retval = 0;
int real_seconds, real_minutes, cmos_minutes;
unsigned char control, freq_select;
-/*
- * IRQs are disabled when we're called from the timer interrupt,
- * no need for spin_lock_irqsave()
- */
-
- spin_lock(&rtc_lock);
/*
* Tell the clock it's being set and stop it.
@@ -143,14 +138,22 @@ static int set_rtc_mmss(unsigned long nowtime)
CMOS_WRITE(control, RTC_CONTROL);
CMOS_WRITE(freq_select, RTC_FREQ_SELECT);
- spin_unlock(&rtc_lock);
-
return retval;
}
int update_persistent_clock(struct timespec now)
{
- return set_rtc_mmss(now.tv_sec);
+ int retval;
+
+/*
+ * IRQs are disabled when we're called from the timer interrupt,
+ * no need for spin_lock_irqsave()
+ */
+ spin_lock(&rtc_lock);
+ retval = set_wallclock(now.tv_sec);
+ spin_unlock(&rtc_lock);
+
+ return retval;
}
void main_timer_handler(void)
@@ -195,7 +198,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
-unsigned long read_persistent_clock(void)
+unsigned long do_get_cmos_time(void)
{
unsigned int year, mon, day, hour, min, sec;
unsigned long flags;
@@ -246,6 +249,11 @@ unsigned long read_persistent_clock(void)
return mktime(year, mon, day, hour, min, sec);
}
+unsigned long read_persistent_clock(void)
+{
+ return get_wallclock();
+}
+
/* calibrate_cpu is used on systems with fixed rate TSCs to determine
* processor frequency */
#define TICK_COUNT 100000000
@@ -365,6 +373,11 @@ static struct irqaction irq0 = {
.name = "timer"
};
+inline void time_init_hook()
+{
+ setup_irq(0, &irq0);
+}
+
void __init time_init(void)
{
if (nohpet)
@@ -403,7 +416,7 @@ void __init time_init(void)
cpu_khz / 1000, cpu_khz % 1000);
init_tsc_clocksource();
- setup_irq(0, &irq0);
+ do_time_init();
}
/*
diff --git a/include/asm-x86_64/time.h b/include/asm-x86_64/time.h
new file mode 100644
index 0000000..9a72355
--- /dev/null
+++ b/include/asm-x86_64/time.h
@@ -0,0 +1,18 @@
+#ifndef _ASM_X86_64_TIME_H
+#define _ASM_X86_64_TIME_H
+
+inline void time_init_hook(void);
+unsigned long do_get_cmos_time(void);
+int do_set_rtc_mmss(unsigned long nowtime);
+
+#ifdef CONFIG_PARAVIRT
+#include <asm/paravirt.h>
+#else /* !CONFIG_PARAVIRT */
+
+#define get_wallclock() do_get_cmos_time()
+#define set_wallclock(x) do_set_rtc_mmss(x)
+#define do_time_init() time_init_hook()
+
+#endif /* CONFIG_PARAVIRT */
+
+#endif
--
1.4.4.2
next prev parent reply other threads:[~2007-08-15 13:00 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-15 12:49 [PATCH 0/25][V3] pvops_64 last round (hopefully) Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 1/25][V3] header file move Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 2/25][V3] tlb flushing routines Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 3/25][V3] irq_flags / halt routines Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 4/25][V3] Add debugreg/load_rsp native hooks Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 5/25][V3] native versions for system.h functions Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 6/25][V3] add native_apic read and write functions, as well as boot clocks ones Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 7/25][V3] interrupt related native paravirt functions Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 8/25][V3] use macro for sti/cli in spinlock definitions Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 9/25][V3] report ring kernel is running without paravirt Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 10/25][V3] export math_state_restore Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 11/25][V3] native versions for set pagetables Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 12/25][V3] turn msr.h functions into native versions Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 13/25][V3] add native functions for descriptors handling Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 14/25][V3] get rid of inline asm for load_cr3 Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 15/25][V3] introducing paravirt_activate_mm Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 16/25][V3] turn page operations into native versions Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 17/25][V3] introduce paravirt_release_pgd() Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 18/25][V3] turn priviled operations into macros in entry.S Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 19/25][V3] time-related functions paravirt provisions Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa [this message]
2007-08-15 12:49 ` [PATCH 20/25][V3] replace syscall_init Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 21/25][V3] export cpu_gdt_descr Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 22/25][V3] turn priviled operation into a macro Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 23/25][V3] provide paravirt patching function Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 24/25][V3] paravirt hooks for arch initialization Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 25/25][V3] add paravirtualization support for x86_64 Glauber de Oliveira Costa
2007-08-15 12:49 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 22/25][V3] turn priviled operation into a macro Glauber de Oliveira Costa
2007-08-15 14:03 ` [PATCH 21/25][V3] export cpu_gdt_descr Andi Kleen
2007-08-15 14:03 ` Andi Kleen
2007-08-15 14:25 ` Glauber de Oliveira Costa
2007-08-15 14:25 ` Glauber de Oliveira Costa
2007-08-15 15:43 ` Andi Kleen
2007-08-15 15:43 ` Andi Kleen
2007-08-15 15:28 ` Glauber de Oliveira Costa
2007-08-15 15:28 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 20/25][V3] replace syscall_init Glauber de Oliveira Costa
2007-08-15 14:04 ` [PATCH 18/25][V3] turn priviled operations into macros in entry.S Steven Rostedt
2007-08-15 14:19 ` Glauber de Oliveira Costa
2007-08-15 14:19 ` Glauber de Oliveira Costa
2007-08-15 14:04 ` Steven Rostedt
2007-08-15 12:49 ` [PATCH 17/25][V3] introduce paravirt_release_pgd() Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 15/25][V3] introducing paravirt_activate_mm Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 11/25][V3] native versions for set pagetables Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 10/25][V3] export math_state_restore Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 9/25][V3] report ring kernel is running without paravirt Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 6/25][V3] add native_apic read and write functions, as well as boot clocks ones Glauber de Oliveira Costa
2007-08-15 13:55 ` [PATCH 3/25][V3] irq_flags / halt routines Andi Kleen
2007-08-15 13:55 ` Andi Kleen
2007-08-15 14:18 ` Glauber de Oliveira Costa
2007-08-15 15:42 ` Andi Kleen
2007-08-15 15:09 ` Glauber de Oliveira Costa
2007-08-15 15:13 ` Avi Kivity
2007-08-15 15:17 ` Glauber de Oliveira Costa
2007-08-15 15:17 ` Glauber de Oliveira Costa
2007-08-15 15:13 ` Avi Kivity
2007-08-15 16:36 ` Andi Kleen
2007-08-15 16:36 ` Andi Kleen
2007-08-15 16:22 ` Glauber de Oliveira Costa
2007-08-15 16:22 ` Glauber de Oliveira Costa
2007-08-15 16:47 ` Chris Wright
2007-08-15 16:47 ` Chris Wright
2007-08-15 17:00 ` Glauber de Oliveira Costa
2007-08-15 17:00 ` Glauber de Oliveira Costa
2007-08-15 18:09 ` Chris Wright
2007-08-15 20:57 ` Glauber de Oliveira Costa
2007-08-15 20:57 ` Glauber de Oliveira Costa
2007-08-15 22:47 ` Andi Kleen
2007-08-15 22:47 ` Andi Kleen
2007-08-15 18:09 ` Chris Wright
2007-08-15 17:34 ` Andi Kleen
2007-08-15 17:34 ` Andi Kleen
2007-08-15 21:40 ` Jeremy Fitzhardinge
2007-08-15 21:40 ` Jeremy Fitzhardinge
2007-08-15 22:19 ` Glauber de Oliveira Costa
2007-08-15 22:19 ` Glauber de Oliveira Costa
2007-08-15 15:09 ` Glauber de Oliveira Costa
2007-08-15 15:42 ` Andi Kleen
2007-08-15 14:18 ` Glauber de Oliveira Costa
2007-08-15 12:49 ` [PATCH 1/25][V3] header file move Glauber de Oliveira Costa
2007-08-15 18:04 ` [PATCH 0/25][V3] pvops_64 last round (hopefully) Jeremy Fitzhardinge
2007-08-15 18:04 ` Jeremy Fitzhardinge
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=11871824081337-git-send-email-gcosta@redhat.com \
--to=gcosta@redhat.com \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=anthony@codemonkey.ws \
--cc=avi@qumranet.com \
--cc=chrisw@sous-sol.org \
--cc=glommer@gmail.com \
--cc=jeremy@goop.org \
--cc=lguest@ozlabs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
--cc=virtualization@lists.linux-foundation.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 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.