diff options
Diffstat (limited to 'arch/powerpc/kernel/time.c')
| -rw-r--r-- | arch/powerpc/kernel/time.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index e1f3a5140429..c9564031a2a9 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
| @@ -256,8 +256,10 @@ void account_system_vtime(struct task_struct *tsk) | |||
| 256 | delta += sys_time; | 256 | delta += sys_time; |
| 257 | get_paca()->system_time = 0; | 257 | get_paca()->system_time = 0; |
| 258 | } | 258 | } |
| 259 | account_system_time(tsk, 0, delta); | 259 | if (in_irq() || idle_task(smp_processor_id()) != tsk) |
| 260 | account_system_time_scaled(tsk, deltascaled); | 260 | account_system_time(tsk, 0, delta, deltascaled); |
| 261 | else | ||
| 262 | account_idle_time(delta); | ||
| 261 | per_cpu(cputime_last_delta, smp_processor_id()) = delta; | 263 | per_cpu(cputime_last_delta, smp_processor_id()) = delta; |
| 262 | per_cpu(cputime_scaled_last_delta, smp_processor_id()) = deltascaled; | 264 | per_cpu(cputime_scaled_last_delta, smp_processor_id()) = deltascaled; |
| 263 | local_irq_restore(flags); | 265 | local_irq_restore(flags); |
| @@ -275,10 +277,8 @@ void account_process_tick(struct task_struct *tsk, int user_tick) | |||
| 275 | 277 | ||
| 276 | utime = get_paca()->user_time; | 278 | utime = get_paca()->user_time; |
| 277 | get_paca()->user_time = 0; | 279 | get_paca()->user_time = 0; |
| 278 | account_user_time(tsk, utime); | ||
| 279 | |||
| 280 | utimescaled = cputime_to_scaled(utime); | 280 | utimescaled = cputime_to_scaled(utime); |
| 281 | account_user_time_scaled(tsk, utimescaled); | 281 | account_user_time(tsk, utime, utimescaled); |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | /* | 284 | /* |
| @@ -338,8 +338,12 @@ void calculate_steal_time(void) | |||
| 338 | tb = mftb(); | 338 | tb = mftb(); |
| 339 | purr = mfspr(SPRN_PURR); | 339 | purr = mfspr(SPRN_PURR); |
| 340 | stolen = (tb - pme->tb) - (purr - pme->purr); | 340 | stolen = (tb - pme->tb) - (purr - pme->purr); |
| 341 | if (stolen > 0) | 341 | if (stolen > 0) { |
| 342 | account_steal_time(current, stolen); | 342 | if (idle_task(smp_processor_id()) != current) |
| 343 | account_steal_time(stolen); | ||
| 344 | else | ||
| 345 | account_idle_time(stolen); | ||
| 346 | } | ||
| 343 | pme->tb = tb; | 347 | pme->tb = tb; |
| 344 | pme->purr = purr; | 348 | pme->purr = purr; |
| 345 | } | 349 | } |
| @@ -844,7 +848,7 @@ static void register_decrementer_clockevent(int cpu) | |||
| 844 | struct clock_event_device *dec = &per_cpu(decrementers, cpu).event; | 848 | struct clock_event_device *dec = &per_cpu(decrementers, cpu).event; |
| 845 | 849 | ||
| 846 | *dec = decrementer_clockevent; | 850 | *dec = decrementer_clockevent; |
| 847 | dec->cpumask = cpumask_of_cpu(cpu); | 851 | dec->cpumask = cpumask_of(cpu); |
| 848 | 852 | ||
| 849 | printk(KERN_DEBUG "clockevent: %s mult[%lx] shift[%d] cpu[%d]\n", | 853 | printk(KERN_DEBUG "clockevent: %s mult[%lx] shift[%d] cpu[%d]\n", |
| 850 | dec->name, dec->mult, dec->shift, cpu); | 854 | dec->name, dec->mult, dec->shift, cpu); |
