Messages in this thread | | | Date | Thu, 13 Feb 2020 13:02:44 -0300 | From | Paul Cercueil <> | Subject | Re: [PATCH 17/18] irqchip: Replace setup_irq() by request_irq() |
| |
Hi,
Le mer., févr. 12, 2020 at 13:35, afzal mohammed <afzal.mohd.ma@gmail.com> a écrit : > request_irq() is preferred over setup_irq(). Existing callers of > setup_irq() reached mostly via 'init_IRQ()' & 'time_init()', while > memory allocators are ready by 'mm_init()'. > > Per tglx[1], setup_irq() existed in olden days when allocators were > not > ready by the time early interrupts were initialized. > > Hence replace setup_irq() by request_irq(). > > Seldom remove_irq() usage has been observed coupled with setup_irq(), > wherever that has been found, it too has been replaced by free_irq(). > > [1] https://lkml.kernel.org/r/alpine.DEB.2.20.1710191609480.1971@nanos > > Signed-off-by: afzal mohammed <afzal.mohd.ma@gmail.com>
Reviewed-by: Paul Cercueil <paul@crapouillou.net>
> --- > > Since cc'ing cover letter to all maintainers/reviewers would be too > many, refer for cover letter, > > https://lkml.kernel.org/r/cover.1581478323.git.afzal.mohd.ma@gmail.com > > drivers/irqchip/irq-i8259.c | 9 +++------ > drivers/irqchip/irq-ingenic.c | 11 +++++------ > 2 files changed, 8 insertions(+), 12 deletions(-) > > diff --git a/drivers/irqchip/irq-i8259.c b/drivers/irqchip/irq-i8259.c > index d000870d9b6b..e9798d02b256 100644 > --- a/drivers/irqchip/irq-i8259.c > +++ b/drivers/irqchip/irq-i8259.c > @@ -271,11 +271,6 @@ static void init_8259A(int auto_eoi) > /* > * IRQ2 is cascade interrupt to second interrupt controller > */ > -static struct irqaction irq2 = { > - .handler = no_action, > - .name = "cascade", > - .flags = IRQF_NO_THREAD, > -}; > > static struct resource pic1_io_resource = { > .name = "pic1", > @@ -323,7 +318,9 @@ struct irq_domain * __init > __init_i8259_irqs(struct device_node *node) > if (!domain) > panic("Failed to add i8259 IRQ domain"); > > - setup_irq(I8259A_IRQ_BASE + PIC_CASCADE_IR, &irq2); > + if (request_irq(I8259A_IRQ_BASE + PIC_CASCADE_IR, no_action, > + IRQF_NO_THREAD, "cascade", NULL)) > + pr_err("request_irq() on %s failed\n", "cascade"); > register_syscore_ops(&i8259_syscore_ops); > return domain; > } > diff --git a/drivers/irqchip/irq-ingenic.c > b/drivers/irqchip/irq-ingenic.c > index c5589ee0dfb3..5b20a0f0ece8 100644 > --- a/drivers/irqchip/irq-ingenic.c > +++ b/drivers/irqchip/irq-ingenic.c > @@ -58,11 +58,6 @@ static irqreturn_t intc_cascade(int irq, void > *data) > return IRQ_HANDLED; > } > > -static struct irqaction intc_cascade_action = { > - .handler = intc_cascade, > - .name = "SoC intc cascade interrupt", > -}; > - > static int __init ingenic_intc_of_init(struct device_node *node, > unsigned num_chips) > { > @@ -130,7 +125,11 @@ static int __init ingenic_intc_of_init(struct > device_node *node, > irq_reg_writel(gc, IRQ_MSK(32), JZ_REG_INTC_SET_MASK); > } > > - setup_irq(parent_irq, &intc_cascade_action); > + if (request_irq(parent_irq, intc_cascade, 0, > + "SoC intc cascade interrupt", NULL)) { > + pr_err("request_irq() on %s failed\n", > + "SoC intc cascade interrupt"); > + } > return 0; > > out_domain_remove: > -- > 2.24.1 >
| |