diff options
-rw-r--r-- | arch/powerpc/kernel/time.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index d204b726a18..2eaaa242c2e 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
@@ -572,7 +572,6 @@ void timer_interrupt(struct pt_regs * regs) | |||
572 | struct pt_regs *old_regs; | 572 | struct pt_regs *old_regs; |
573 | struct decrementer_clock *decrementer = &__get_cpu_var(decrementers); | 573 | struct decrementer_clock *decrementer = &__get_cpu_var(decrementers); |
574 | struct clock_event_device *evt = &decrementer->event; | 574 | struct clock_event_device *evt = &decrementer->event; |
575 | u64 now; | ||
576 | 575 | ||
577 | /* Ensure a positive value is written to the decrementer, or else | 576 | /* Ensure a positive value is written to the decrementer, or else |
578 | * some CPUs will continue to take decrementer exceptions. | 577 | * some CPUs will continue to take decrementer exceptions. |
@@ -607,16 +606,9 @@ void timer_interrupt(struct pt_regs * regs) | |||
607 | get_lppaca()->int_dword.fields.decr_int = 0; | 606 | get_lppaca()->int_dword.fields.decr_int = 0; |
608 | #endif | 607 | #endif |
609 | 608 | ||
610 | now = get_tb_or_rtc(); | 609 | decrementer->next_tb = ~(u64)0; |
611 | if (now >= decrementer->next_tb) { | 610 | if (evt->event_handler) |
612 | decrementer->next_tb = ~(u64)0; | 611 | evt->event_handler(evt); |
613 | if (evt->event_handler) | ||
614 | evt->event_handler(evt); | ||
615 | } else { | ||
616 | now = decrementer->next_tb - now; | ||
617 | if (now <= DECREMENTER_MAX) | ||
618 | set_dec((int)now); | ||
619 | } | ||
620 | 612 | ||
621 | #ifdef CONFIG_PPC_ISERIES | 613 | #ifdef CONFIG_PPC_ISERIES |
622 | if (firmware_has_feature(FW_FEATURE_ISERIES) && hvlpevent_is_pending()) | 614 | if (firmware_has_feature(FW_FEATURE_ISERIES) && hvlpevent_is_pending()) |