Commit b89031e0 authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Martin Schwidefsky

[S390] reset cputime accounting after IPL from NSS

After an IPL from NSS the uptime of the system is incorrect. The reason
is that the startup code in head.S is not executed in case of an IPL
from NSS. Due to that sched_clock_base_cc which is used to initialze
wall_to_monotonic contains the time stamp when the NSS has been created
instead of the time stamp of the system start.

Reinitialize the cputime accounting values in create_kernel_nss after
the SAVESYS CP command that created the NSS segment.
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent ccaf6553
...@@ -55,6 +55,7 @@ static void __init reset_tod_clock(void) ...@@ -55,6 +55,7 @@ static void __init reset_tod_clock(void)
disabled_wait(0); disabled_wait(0);
sched_clock_base_cc = TOD_UNIX_EPOCH; sched_clock_base_cc = TOD_UNIX_EPOCH;
S390_lowcore.last_update_clock = sched_clock_base_cc;
} }
#ifdef CONFIG_SHARED_KERNEL #ifdef CONFIG_SHARED_KERNEL
...@@ -167,6 +168,14 @@ static noinline __init void create_kernel_nss(void) ...@@ -167,6 +168,14 @@ static noinline __init void create_kernel_nss(void)
return; return;
} }
/* re-initialize cputime accounting. */
sched_clock_base_cc = get_clock();
S390_lowcore.last_update_clock = sched_clock_base_cc;
S390_lowcore.last_update_timer = 0x7fffffffffffffffULL;
S390_lowcore.user_timer = 0;
S390_lowcore.system_timer = 0;
asm volatile("SPT 0(%0)" : : "a" (&S390_lowcore.last_update_timer));
/* re-setup boot command line with new ipl vm parms */ /* re-setup boot command line with new ipl vm parms */
ipl_update_parameters(); ipl_update_parameters();
setup_boot_command_line(); setup_boot_command_line();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment