[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