diff options
Diffstat (limited to 'arch/s390/kernel/early.c')
-rw-r--r-- | arch/s390/kernel/early.c | 16 |
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 | ||
39 | static void __init setup_boot_command_line(void); | 39 | static void __init setup_boot_command_line(void); |
40 | 40 | ||
41 | /* | ||
42 | * Get the TOD clock running. | ||
43 | */ | ||
44 | static 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 |
43 | int __init savesys_ipl_nss(char *cmd, const int cmdlen); | 58 | int __init savesys_ipl_nss(char *cmd, const int cmdlen); |
@@ -372,6 +387,7 @@ static void __init setup_boot_command_line(void) | |||
372 | */ | 387 | */ |
373 | void __init startup_init(void) | 388 | void __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(); |