hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/arch/arm/kernel/smp_twd.c
....@@ -31,7 +31,7 @@
3131
3232 static struct clock_event_device __percpu *twd_evt;
3333 static unsigned int twd_features =
34
- CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
34
+ CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PIPELINE;
3535 static int twd_ppi;
3636
3737 static int twd_shutdown(struct clock_event_device *clk)
....@@ -182,7 +182,7 @@
182182 struct clock_event_device *evt = dev_id;
183183
184184 if (twd_timer_ack()) {
185
- evt->event_handler(evt);
185
+ clockevents_handle_event(evt);
186186 return IRQ_HANDLED;
187187 }
188188
....@@ -279,7 +279,8 @@
279279 goto out_free;
280280 }
281281
282
- err = request_percpu_irq(twd_ppi, twd_handler, "twd", twd_evt);
282
+ err = __request_percpu_irq(twd_ppi, twd_handler,
283
+ IRQF_TIMER, "twd", twd_evt);
283284 if (err) {
284285 pr_err("twd: can't register interrupt %d (%d)\n", twd_ppi, err);
285286 goto out_free;