hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/arch/x86/kernel/hpet.c
....@@ -406,7 +406,7 @@
406406 evt->set_next_event = hpet_clkevt_set_next_event;
407407 evt->set_state_shutdown = hpet_clkevt_set_state_shutdown;
408408
409
- evt->features = CLOCK_EVT_FEAT_ONESHOT;
409
+ evt->features = CLOCK_EVT_FEAT_ONESHOT|CLOCK_EVT_FEAT_PIPELINE;
410410 if (hc->boot_cfg & HPET_TN_PERIODIC) {
411411 evt->features |= CLOCK_EVT_FEAT_PERIODIC;
412412 evt->set_state_periodic = hpet_clkevt_set_state_periodic;
....@@ -519,7 +519,7 @@
519519 return IRQ_HANDLED;
520520 }
521521
522
- evt->event_handler(evt);
522
+ clockevents_handle_event(evt);
523523 return IRQ_HANDLED;
524524 }
525525
....@@ -702,7 +702,7 @@
702702 if (arch_spin_is_locked(&old.lock))
703703 goto contended;
704704
705
- local_irq_save(flags);
705
+ flags = hard_local_irq_save();
706706 if (arch_spin_trylock(&hpet.lock)) {
707707 new.value = hpet_readl(HPET_COUNTER);
708708 /*
....@@ -710,10 +710,10 @@
710710 */
711711 WRITE_ONCE(hpet.value, new.value);
712712 arch_spin_unlock(&hpet.lock);
713
- local_irq_restore(flags);
713
+ hard_local_irq_restore(flags);
714714 return (u64)new.value;
715715 }
716
- local_irq_restore(flags);
716
+ hard_local_irq_restore(flags);
717717
718718 contended:
719719 /*