From: Christian Borntraeger <borntraeger@de.ibm.com>
Subject: s390/cputime: fix guest/irq/softirq times after CPU hotplug
Patch-mainline: v4.14-rc6
Git-commit: b7662eef14caf4f582d453d45395825b5a8f594c
References: bnc#1066983, LTC#161328
Description: cputime: Fix guest/irq/softirq time after cpu hotplug
Symptom: /proc/stat has very high values for guest, irq and
softirq after a cpu hotplug.
Problem: The counters are not properly initialized on CPU hotplug.
Solution: Properly initialize the counters.
Reproduction: Do a CPU hotplug and check /proc/stat.
Upstream-Description:
s390/cputime: fix guest/irq/softirq times after CPU hotplug
On CPU hotplug some cpu stats contain bogus values:
$ cat /proc/stat
cpu 0 0 49 1280 0 0 0 3 0 0
cpu0 0 0 49 618 0 0 0 3 0 0
cpu1 0 0 0 662 0 0 0 0 0 0
[...]
$ echo 0 > /sys/devices/system/cpu/cpu1/online
$ echo 1 > /sys/devices/system/cpu/cpu1/online
$ cat /proc/stat
cpu 0 0 49 3200 0 450359962737 450359962737 3 0 0
cpu0 0 0 49 1956 0 0 0 3 0 0
cpu1 0 0 0 1244 0 450359962737 450359962737 0 0 0
[...]
pcpu_attach_task() needs the same assignments as vtime_task_switch.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Fixes: b7394a5f4ce9 ("sched/cputime, s390: Implement delayed accounting of system time")
Cc: stable@vger.kernel.org # 4.11+
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Hannes Reinecke <hare@suse.com>
---
arch/s390/kernel/smp.c | 3 +++
1 file changed, 3 insertions(+)
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -290,7 +290,10 @@ static void pcpu_attach_task(struct pcpu
lc->lpp = LPP_MAGIC;
lc->current_pid = tsk->pid;
lc->user_timer = tsk->thread.user_timer;
+ lc->guest_timer = tsk->thread.guest_timer;
lc->system_timer = tsk->thread.system_timer;
+ lc->hardirq_timer = tsk->thread.hardirq_timer;
+ lc->softirq_timer = tsk->thread.softirq_timer;
lc->steal_timer = 0;
}