All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2 1/8] dovetail/pipeline: implement out-of-band irq management and handling
@ 2021-01-15  1:16 hongzha1
  2021-01-15  1:16 ` [PATCH 2/8] dovetail/tick: implement proxy tick device installing and uninstalling hongzha1
                   ` (8 more replies)
  0 siblings, 9 replies; 19+ messages in thread
From: hongzha1 @ 2021-01-15  1:16 UTC (permalink / raw)
  To: xenomai

implement oob irq request and free and post for both
TIMER_OOB_IPI and RESCHEDULE_OOB_IPI

Signed-off-by: hongzha1 <hongzhan.chen@intel.com>

diff --git a/include/cobalt/kernel/dovetail/pipeline/pipeline.h b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
index 23c4a2c18..13fbd7942 100644
--- a/include/cobalt/kernel/dovetail/pipeline/pipeline.h
+++ b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
@@ -8,9 +8,12 @@
 #include <linux/irq_pipeline.h>
 #include <cobalt/kernel/assert.h>
 #include <asm/xenomai/features.h>
+#include <pipeline/machine.h>
 
 typedef unsigned long spl_t;
 
+void xnintr_core_clock_handler(void);
+
 /*
  * We only keep the LSB when testing in SMP mode in order to strip off
  * the recursion marker (0x2) the nklock may store there.
@@ -30,18 +33,28 @@ typedef unsigned long spl_t;
 
 #ifdef CONFIG_SMP
 
+static irqreturn_t reschedule_interrupt_handler(int irq, void *dev_id)
+{
+
+	/* Will reschedule from irq_exit_pipeline. */
+
+	return IRQ_HANDLED;
+}
+
 static inline int pipeline_request_resched_ipi(void (*handler)(void))
 {
 	/* Trap the out-of-band rescheduling interrupt. */
-	TODO();
-
-	return 0;
+	return __request_percpu_irq(RESCHEDULE_OOB_IPI,
+			reschedule_interrupt_handler,
+			IRQF_OOB,
+			"Xenomai reschedule",
+			&cobalt_machine_cpudata);
 }
 
 static inline void pipeline_free_resched_ipi(void)
 {
 	/* Release the out-of-band rescheduling interrupt. */
-	TODO();
+	free_percpu_irq(RESCHEDULE_OOB_IPI, &cobalt_machine_cpudata);
 }
 
 static inline void pipeline_send_resched_ipi(const struct cpumask *dest)
@@ -50,21 +63,29 @@ static inline void pipeline_send_resched_ipi(const struct cpumask *dest)
 	 * Trigger the out-of-band rescheduling interrupt on remote
 	 * CPU(s).
 	 */
-	TODO();
+	irq_send_oob_ipi(RESCHEDULE_OOB_IPI, dest);
+}
+
+static irqreturn_t timer_ipi_interrupt_handler(int irq, void *dev_id)
+{
+	xnintr_core_clock_handler();
+
+	return IRQ_HANDLED;
 }
 
 static inline int pipeline_request_timer_ipi(void (*handler)(void))
 {
 	/* Trap the out-of-band timer interrupt. */
-	TODO();
-
-	return 0;
+	return __request_percpu_irq(TIMER_OOB_IPI,
+			timer_ipi_interrupt_handler,
+			IRQF_OOB, "Xenomai timer IPI",
+			&cobalt_machine_cpudata);
 }
 
 static inline void pipeline_free_timer_ipi(void)
 {
 	/* Release the out-of-band timer interrupt. */
-	TODO();
+	free_percpu_irq(TIMER_OOB_IPI, &cobalt_machine_cpudata);
 }
 
 static inline void pipeline_send_timer_ipi(const struct cpumask *dest)
@@ -72,7 +93,7 @@ static inline void pipeline_send_timer_ipi(const struct cpumask *dest)
 	/*
 	 * Trigger the out-of-band timer interrupt on remote CPU(s).
 	 */
-	TODO();
+	irq_send_oob_ipi(TIMER_OOB_IPI, dest);
 }
 
 #endif
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2021-01-21 15:36 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-15  1:16 [PATCH V2 1/8] dovetail/pipeline: implement out-of-band irq management and handling hongzha1
2021-01-15  1:16 ` [PATCH 2/8] dovetail/tick: implement proxy tick device installing and uninstalling hongzha1
2021-01-16 11:42   ` Philippe Gerum
2021-01-15  1:16 ` [PATCH 3/8] dovetail/clock: implement pipeline_set_timer_shot to trigger tick shot hongzha1
2021-01-16 11:56   ` Philippe Gerum
2021-01-19  0:57     ` Chen, Hongzhan
2021-01-21 15:36       ` Philippe Gerum
2021-01-15  1:16 ` [PATCH V2 4/8] dovetail/clock: implement pipeline_timer_name hongzha1
2021-01-16 12:22   ` Philippe Gerum
2021-01-15  1:16 ` [PATCH 5/8] dovetail/kevents: dovetail: implement handle_ptrace_cont hongzha1
2021-01-16 12:31   ` Philippe Gerum
2021-01-15  1:16 ` [PATCH 6/8] cobalt/timer: pipeline: abstract signal test of XNTSTOP hongzha1
2021-01-16 15:11   ` Philippe Gerum
2021-01-15  1:16 ` hongzha1
2021-01-15  1:16 ` [PATCH 7/8] dovetail/tick: pipeline: impmement pipeline_must_force_program_tick hongzha1
2021-01-16 15:14   ` Philippe Gerum
2021-01-15  1:16 ` [PATCH 8/8] dovetail/kevents: enable back tracing hongzha1
2021-01-16 15:17   ` Philippe Gerum
2021-01-16 11:38 ` [PATCH V2 1/8] dovetail/pipeline: implement out-of-band irq management and handling Philippe Gerum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.