[PATCH v3 1/5] cobalt: Prepare for new signature of __request_percpu_irq() in 6.19

Florian Bezdeka <[email protected]>
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
The signature of __request_percpu_irq() got one additional affinity
parameter in 6.19 and 7.0 will remove the function entirely.

Dovetail 6.19 will introduce a new dovetail specific service called
request_percpu_irq_affinity_flags() that allows us to set flags and
affinity at the same time.

It might happen that older Dovetail versions get the new API via
backports, so the re-#definement for older kernels might get
obsolete earlier than dropping support for Dovetail < 6.19.

Signed-off-by: Florian Bezdeka <[email protected]>
---
 include/cobalt/kernel/dovetail/pipeline/pipeline.h   | 8 +++-----
 include/cobalt/kernel/dovetail/pipeline/sirq.h       | 8 +++-----
 kernel/cobalt/dovetail/tick.c                        | 7 +++----
 kernel/cobalt/include/asm-generic/xenomai/wrappers.h | 9 +++++++++
 4 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/include/cobalt/kernel/dovetail/pipeline/pipeline.h b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
index 2e6e66a2d6d4dbf407d4ce42fff8b84acc2931d0..19d616a421d2ebc83d21d816bf00eead298b8def 100644
--- a/include/cobalt/kernel/dovetail/pipeline/pipeline.h
+++ b/include/cobalt/kernel/dovetail/pipeline/pipeline.h
@@ -42,11 +42,9 @@ static inline int pipeline_request_resched_ipi(void)
 		return 0;
 
 	/* Trap the out-of-band rescheduling interrupt. */
-	return __request_percpu_irq(RESCHEDULE_OOB_IPI,
-			pipeline_reschedule_ipi_handler,
-			IRQF_OOB,
-			"Xenomai reschedule",
-			&cobalt_machine_cpudata);
+	return request_percpu_irq_affinity_flags(
+		RESCHEDULE_OOB_IPI, pipeline_reschedule_ipi_handler, IRQF_OOB,
+		"Xenomai reschedule", NULL, &cobalt_machine_cpudata);
 }
 
 static inline void pipeline_free_resched_ipi(void)
diff --git a/include/cobalt/kernel/dovetail/pipeline/sirq.h b/include/cobalt/kernel/dovetail/pipeline/sirq.h
index 1da9d13b217081ba52ef0444b60d236ddb9c8a9e..13eb020ac7c17ec06c52b43406cc68aa7f3e52a1 100644
--- a/include/cobalt/kernel/dovetail/pipeline/sirq.h
+++ b/include/cobalt/kernel/dovetail/pipeline/sirq.h
@@ -29,11 +29,9 @@ int pipeline_create_inband_sirq(irqreturn_t (*handler)(int irq, void *dev_id))
 	if (sirq == 0)
 		return -EAGAIN;
 
-	ret = __request_percpu_irq(sirq,
-			handler,
-			IRQF_NO_THREAD,
-			"Inband sirq",
-			&cobalt_machine_cpudata);
+	ret = request_percpu_irq_affinity_flags(sirq, handler, IRQF_NO_THREAD,
+						"Inband sirq", NULL,
+						&cobalt_machine_cpudata);
 
 	if (ret) {
 		irq_dispose_mapping(sirq);
diff --git a/kernel/cobalt/dovetail/tick.c b/kernel/cobalt/dovetail/tick.c
index 873b62471eac758fba5b86fa36b8265b6284dc87..7ebce1991fd35d9e0cb45e05c55f3b8e5ef6baf2 100644
--- a/kernel/cobalt/dovetail/tick.c
+++ b/kernel/cobalt/dovetail/tick.c
@@ -153,10 +153,9 @@ int pipeline_install_tick_proxy(void)
 	 * CPUs.
 	 */
 	if (num_possible_cpus() > 1) {
-		ret = __request_percpu_irq(TIMER_OOB_IPI,
-					tick_ipi_handler,
-					IRQF_OOB, "Xenomai timer IPI",
-					&cobalt_machine_cpudata);
+		ret = request_percpu_irq_affinity_flags(
+			TIMER_OOB_IPI, tick_ipi_handler, IRQF_OOB,
+			"Xenomai timer IPI", NULL, &cobalt_machine_cpudata);
 		if (ret)
 			return ret;
 	}
diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
index a68c3b1951d1a4a90c032a9a132c920b841cda49..838085d338b51a4fdd89218aa512de8d60a853a0 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
@@ -71,4 +71,13 @@
 #define timer_container_of	from_timer
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 19, 0)
+#define request_percpu_irq_affinity_flags(irq, handler, flags, devname,        \
+					  affinity, dev_id)                    \
+	({                                                                     \
+		WARN_ON_ONCE(affinity);                                        \
+		__request_percpu_irq(irq, handler, flags, devname, dev_id);    \
+	})
+#endif
+
 #endif /* _COBALT_ASM_GENERIC_WRAPPERS_H */

-- 
2.53.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.