All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/10] dovetail/sirq: implement sirq request and free and post
@ 2021-01-11  6:43 hongzha1
  2021-01-11  6:43 ` [PATCH 02/10] dovetail/clock: implement pipeline_read_cycle_counter hongzha1
                   ` (10 more replies)
  0 siblings, 11 replies; 25+ messages in thread
From: hongzha1 @ 2021-01-11  6:43 UTC (permalink / raw)
  To: Xenomai

inband sirq request through synthetic_irq_domain and free and post
srq.

Signed-off-by: hongzha1 <hongzhan.chen@intel.com>
---
 .../cobalt/kernel/dovetail/pipeline/sirq.h    | 28 +++++++++++++++----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/include/cobalt/kernel/dovetail/pipeline/sirq.h b/include/cobalt/kernel/dovetail/pipeline/sirq.h
index be9dc587f..1da9d13b2 100644
--- a/include/cobalt/kernel/dovetail/pipeline/sirq.h
+++ b/include/cobalt/kernel/dovetail/pipeline/sirq.h
@@ -23,9 +23,24 @@ int pipeline_create_inband_sirq(irqreturn_t (*handler)(int irq, void *dev_id))
 	 * Allocate an IRQ from the synthetic interrupt domain then
 	 * trap it to @handler, to be fired from the in-band stage.
 	 */
-	TODO();
+	int sirq, ret;
 
-	return 0;
+	sirq = irq_create_direct_mapping(synthetic_irq_domain);
+	if (sirq == 0)
+		return -EAGAIN;
+
+	ret = __request_percpu_irq(sirq,
+			handler,
+			IRQF_NO_THREAD,
+			"Inband sirq",
+			&cobalt_machine_cpudata);
+
+	if (ret) {
+		irq_dispose_mapping(sirq);
+		return ret;
+	}
+
+	return sirq;
 }
 
 static inline
@@ -35,13 +50,16 @@ void pipeline_delete_inband_sirq(int sirq)
 	 * Free the synthetic IRQ then deallocate it to its
 	 * originating domain.
 	 */
-	TODO();
+	free_percpu_irq(sirq,
+		&cobalt_machine_cpudata);
+
+	irq_dispose_mapping(sirq);
 }
 
 static inline void pipeline_post_sirq(int sirq)
 {
 	/* Trigger the synthetic IRQ */
-	TODO();
+	irq_post_inband(sirq);
 }
 
-#endif /* !_COBALT_KERNEL_IPIPE_SIRQ_H */
+#endif /* !_COBALT_KERNEL_DOVETAIL_SIRQ_H */
-- 
2.17.1



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

end of thread, other threads:[~2021-01-12 16:52 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-11  6:43 [PATCH 01/10] dovetail/sirq: implement sirq request and free and post hongzha1
2021-01-11  6:43 ` [PATCH 02/10] dovetail/clock: implement pipeline_read_cycle_counter hongzha1
2021-01-11 17:26   ` Philippe Gerum
2021-01-11  6:43 ` [PATCH 03/10] dovetail/clock: implement pipeline_get_host_time hongzha1
2021-01-11 17:26   ` Philippe Gerum
2021-01-11  6:43 ` [PATCH 04/10] dovetail/sched: implement pipeline_init_shadow_tcb and pipeline_init_root_tcb hongzha1
2021-01-11 17:30   ` Philippe Gerum
2021-01-11  6:43 ` [PATCH 05/10] dovetail/init: implement Xenomai stage enabling and disabling hongzha1
2021-01-11 17:31   ` Philippe Gerum
2021-01-11  6:43 ` [PATCH 06/10] dovetail/pipeline: implement oob irq request and free and post for both TIMER_OOB_IPI and RESCHEDULE_OOB_IPI hongzha1
2021-01-12 16:39   ` Philippe Gerum
2021-01-12 16:47     ` Philippe Gerum
2021-01-11  6:43 ` [PATCH 07/10] dovetail/tick: implement proxy tick device installing and uninstalling hongzha1
2021-01-11  6:43 ` [PATCH 08/10] dovetail/clock: implement pipeline_set_timer_shot to trigger tick shot hongzha1
2021-01-11  6:43 ` [PATCH 09/10] dovetail/clock: implement pipeline_timer_name to get name of real device hongzha1
2021-01-12  1:20   ` chensong
2021-01-12  1:35     ` Chen, Hongzhan
2021-01-12  1:41       ` chensong
2021-01-12 16:52   ` Philippe Gerum
2021-01-11  6:43 ` [PATCH 10/10] dovetail/kevents: dovetail: implement handle_ptrace_cont hongzha1
2021-01-11 12:17 ` [PATCH 01/10] dovetail/sirq: implement sirq request and free and post Jan Kiszka
2021-01-11 13:05   ` Philippe Gerum
2021-01-11 13:16     ` Jan Kiszka
2021-01-11 13:29       ` Philippe Gerum
2021-01-11 17:23 ` 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.