aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/early.c
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2009-04-14 09:36:28 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2009-04-14 09:37:27 -0400
commitb6112ccbff5ec580d46b584ecc3c3a773b830da2 (patch)
tree71553f09a2acfedec85f3c29a1c65e0a257001fb /arch/s390/kernel/early.c
parent5b409ed17bb32c8316b1f456466c70529454573a (diff)
[S390] add read_persistent_clock
Add a read_persistent_clock function that does not just return 0. Since timekeeping_init calls the function before time_init has been called move reset_tod_clock to early.c to make sure that the TOD clock is running when read_persistent_clock is invoked. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/early.c')
-rw-r--r--arch/s390/kernel/early.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index d4e1e5b6cfda..cf09948faad6 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -38,6 +38,21 @@ static unsigned long machine_flags;
38 38
39static void __init setup_boot_command_line(void); 39static void __init setup_boot_command_line(void);
40 40
41/*
42 * Get the TOD clock running.
43 */
44static void __init reset_tod_clock(void)
45{
46 u64 time;
47
48 if (store_clock(&time) == 0)
49 return;
50 /* TOD clock not running. Set the clock to Unix Epoch. */
51 if (set_clock(TOD_UNIX_EPOCH) != 0 || store_clock(&time) != 0)
52 disabled_wait(0);
53
54 sched_clock_base_cc = TOD_UNIX_EPOCH;
55}
41 56
42#ifdef CONFIG_SHARED_KERNEL 57#ifdef CONFIG_SHARED_KERNEL
43int __init savesys_ipl_nss(char *cmd, const int cmdlen); 58int __init savesys_ipl_nss(char *cmd, const int cmdlen);
@@ -372,6 +387,7 @@ static void __init setup_boot_command_line(void)
372 */ 387 */
373void __init startup_init(void) 388void __init startup_init(void)
374{ 389{
390 reset_tod_clock();
375 ipl_save_parameters(); 391 ipl_save_parameters();
376 rescue_initrd(); 392 rescue_initrd();
377 clear_bss_section(); 393 clear_bss_section();