Re: [PATCH v2 1/3] cobalt: Prepare for new signature of __request_percpu_irq() in 6.19
Jan Kiszka <[email protected]>
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <[email protected]> |
On 20.02.26 12:27, Florian Bezdeka wrote: > 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/irq.h | 6 ++++++ > include/cobalt/kernel/dovetail/pipeline/pipeline.h | 9 ++++----- > include/cobalt/kernel/dovetail/pipeline/sirq.h | 9 ++++----- > kernel/cobalt/dovetail/tick.c | 8 ++++---- > 4 files changed, 18 insertions(+), 14 deletions(-) > > diff --git a/include/cobalt/kernel/dovetail/pipeline/irq.h b/include/cobalt/kernel/dovetail/pipeline/irq.h > index 55d9b8ff17cd08e5e8c09aec393a1e23736c1b76..df0b8ceb05c25d655a331d238e7ef8ac8a6afeea 100644 > --- a/include/cobalt/kernel/dovetail/pipeline/irq.h > +++ b/include/cobalt/kernel/dovetail/pipeline/irq.h > @@ -5,6 +5,12 @@ > #ifndef _COBALT_KERNEL_DOVETAIL_IRQ_H > #define _COBALT_KERNEL_DOVETAIL_IRQ_H > > +#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 19, 0) > +#define request_percpu_irq_affinity_flags(irq, handler, flags, devname, \ > + affinity, dev_id) \ > + __request_percpu_irq(irq, handler, flags, devname, dev_id) > +#endif Why not placing this in wrappers.h? Jan > + > static inline void xnintr_init_proc(void) > { > /* N/A */ > diff --git a/include/cobalt/kernel/dovetail/pipeline/pipeline.h b/include/cobalt/kernel/dovetail/pipeline/pipeline.h > index 2e6e66a2d6d4dbf407d4ce42fff8b84acc2931d0..f5ee443ada3788b8b0261f77ae7da5d5f69ef9f2 100644 > --- a/include/cobalt/kernel/dovetail/pipeline/pipeline.h > +++ b/include/cobalt/kernel/dovetail/pipeline/pipeline.h > @@ -11,6 +11,7 @@ > #include <asm/xenomai/features.h> > #include <asm/xenomai/syscall.h> > #include <asm/syscall.h> > +#include <pipeline/irq.h> > #include <pipeline/machine.h> > > typedef unsigned long spl_t; > @@ -42,11 +43,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..00c08af784588d5239cf399d69800c914221b210 100644 > --- a/include/cobalt/kernel/dovetail/pipeline/sirq.h > +++ b/include/cobalt/kernel/dovetail/pipeline/sirq.h > @@ -9,6 +9,7 @@ > > #include <linux/irq_pipeline.h> > #include <cobalt/kernel/assert.h> > +#include <pipeline/irq.h> > > /* > * Wrappers to create "synthetic IRQs" the Dovetail way. Those > @@ -29,11 +30,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..fa7ef09eaf39cdc1fca5c68f22f57da0c1320789 100644 > --- a/kernel/cobalt/dovetail/tick.c > +++ b/kernel/cobalt/dovetail/tick.c > @@ -8,6 +8,7 @@ > #include <linux/tick.h> > #include <linux/clockchips.h> > #include <cobalt/kernel/intr.h> > +#include <pipeline/irq.h> > #include <pipeline/tick.h> > #include <cobalt/kernel/sched.h> > #include <cobalt/kernel/timer.h> > @@ -153,10 +154,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; > } > -- Siemens AG, Foundational Technologies Linux Expert Center