aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2012-10-24 12:05:51 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2012-10-29 16:31:31 -0400
commit11113334d1c5dd5355c86e531c29f1202a855c86 (patch)
tree259c7c3344733444ca39263b1a79f40b243b155f /arch
parentdcbf832e5823156e8f155359b47bd108cac8ad68 (diff)
vtime: Make vtime_account_system() irqsafe
vtime_account_system() currently has only one caller with vtime_account() which is irq safe. Now we are going to call it from other places like kvm where irqs are not always disabled by the time we account the cputime. So let's make it irqsafe. The arch implementation part is now prefixed with "__". vtime_account_idle() arch implementation is prefixed accordingly to stay consistent. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ingo Molnar <mingo@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/ia64/kernel/time.c8
-rw-r--r--arch/powerpc/kernel/time.c4
-rw-r--r--arch/s390/kernel/vtime.c4
3 files changed, 10 insertions, 6 deletions
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index f6388216080d..5e4850305d3f 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -106,9 +106,9 @@ void vtime_task_switch(struct task_struct *prev)
106 struct thread_info *ni = task_thread_info(current); 106 struct thread_info *ni = task_thread_info(current);
107 107
108 if (idle_task(smp_processor_id()) != prev) 108 if (idle_task(smp_processor_id()) != prev)
109 vtime_account_system(prev); 109 __vtime_account_system(prev);
110 else 110 else
111 vtime_account_idle(prev); 111 __vtime_account_idle(prev);
112 112
113 vtime_account_user(prev); 113 vtime_account_user(prev);
114 114
@@ -135,14 +135,14 @@ static cputime_t vtime_delta(struct task_struct *tsk)
135 return delta_stime; 135 return delta_stime;
136} 136}
137 137
138void vtime_account_system(struct task_struct *tsk) 138void __vtime_account_system(struct task_struct *tsk)
139{ 139{
140 cputime_t delta = vtime_delta(tsk); 140 cputime_t delta = vtime_delta(tsk);
141 141
142 account_system_time(tsk, 0, delta, delta); 142 account_system_time(tsk, 0, delta, delta);
143} 143}
144 144
145void vtime_account_idle(struct task_struct *tsk) 145void __vtime_account_idle(struct task_struct *tsk)
146{ 146{
147 account_idle_time(vtime_delta(tsk)); 147 account_idle_time(vtime_delta(tsk));
148} 148}
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index ce4cb772dc78..0db456f30d45 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -336,7 +336,7 @@ static u64 vtime_delta(struct task_struct *tsk,
336 return delta; 336 return delta;
337} 337}
338 338
339void vtime_account_system(struct task_struct *tsk) 339void __vtime_account_system(struct task_struct *tsk)
340{ 340{
341 u64 delta, sys_scaled, stolen; 341 u64 delta, sys_scaled, stolen;
342 342
@@ -346,7 +346,7 @@ void vtime_account_system(struct task_struct *tsk)
346 account_steal_time(stolen); 346 account_steal_time(stolen);
347} 347}
348 348
349void vtime_account_idle(struct task_struct *tsk) 349void __vtime_account_idle(struct task_struct *tsk)
350{ 350{
351 u64 delta, sys_scaled, stolen; 351 u64 delta, sys_scaled, stolen;
352 352
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index 790334427895..783e988c4e1e 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -140,6 +140,10 @@ void vtime_account(struct task_struct *tsk)
140} 140}
141EXPORT_SYMBOL_GPL(vtime_account); 141EXPORT_SYMBOL_GPL(vtime_account);
142 142
143void __vtime_account_system(struct task_struct *tsk)
144__attribute__((alias("vtime_account")));
145EXPORT_SYMBOL_GPL(__vtime_account_system);
146
143void __kprobes vtime_stop_cpu(void) 147void __kprobes vtime_stop_cpu(void)
144{ 148{
145 struct s390_idle_data *idle = &__get_cpu_var(s390_idle); 149 struct s390_idle_data *idle = &__get_cpu_var(s390_idle);