.. | .. |
---|
406 | 406 | evt->set_next_event = hpet_clkevt_set_next_event; |
---|
407 | 407 | evt->set_state_shutdown = hpet_clkevt_set_state_shutdown; |
---|
408 | 408 | |
---|
409 | | - evt->features = CLOCK_EVT_FEAT_ONESHOT; |
---|
| 409 | + evt->features = CLOCK_EVT_FEAT_ONESHOT|CLOCK_EVT_FEAT_PIPELINE; |
---|
410 | 410 | if (hc->boot_cfg & HPET_TN_PERIODIC) { |
---|
411 | 411 | evt->features |= CLOCK_EVT_FEAT_PERIODIC; |
---|
412 | 412 | evt->set_state_periodic = hpet_clkevt_set_state_periodic; |
---|
.. | .. |
---|
519 | 519 | return IRQ_HANDLED; |
---|
520 | 520 | } |
---|
521 | 521 | |
---|
522 | | - evt->event_handler(evt); |
---|
| 522 | + clockevents_handle_event(evt); |
---|
523 | 523 | return IRQ_HANDLED; |
---|
524 | 524 | } |
---|
525 | 525 | |
---|
.. | .. |
---|
702 | 702 | if (arch_spin_is_locked(&old.lock)) |
---|
703 | 703 | goto contended; |
---|
704 | 704 | |
---|
705 | | - local_irq_save(flags); |
---|
| 705 | + flags = hard_local_irq_save(); |
---|
706 | 706 | if (arch_spin_trylock(&hpet.lock)) { |
---|
707 | 707 | new.value = hpet_readl(HPET_COUNTER); |
---|
708 | 708 | /* |
---|
.. | .. |
---|
710 | 710 | */ |
---|
711 | 711 | WRITE_ONCE(hpet.value, new.value); |
---|
712 | 712 | arch_spin_unlock(&hpet.lock); |
---|
713 | | - local_irq_restore(flags); |
---|
| 713 | + hard_local_irq_restore(flags); |
---|
714 | 714 | return (u64)new.value; |
---|
715 | 715 | } |
---|
716 | | - local_irq_restore(flags); |
---|
| 716 | + hard_local_irq_restore(flags); |
---|
717 | 717 | |
---|
718 | 718 | contended: |
---|
719 | 719 | /* |
---|