Re: linux-next: manual merge of the rcu tree with the irqchip tree

From: Paul E. McKenney
Date: Fri Aug 13 2021 - 09:52:57 EST


On Fri, Aug 13, 2021 at 02:04:37PM +1000, Stephen Rothwell wrote:
> Hi all,
>
> Today's linux-next merge of the rcu tree got a conflict in:
>
> kernel/irq/chip.c
>
> between commit:
>
> 56707bb845f5 ("genirq, irq-gic-v3: Make NMI flow handlers use ->irq_ack() if available")
>
> from the irqchip tree and commit:
>
> ef62bf7e92d8 ("irq: abstract irqaction handler invocation")
>
> from the rcu tree.
>
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging. You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.

I had pulled these two in just for testing only because I was chasing
a problem that looked like long-running irq handlers, but which proved
to be something rather different.

ef62bf7e92d8 ("irq: abstract irqaction handler invocation")
2eeaae3c02b9 ("irq: detect long-running IRQ handlers")

I will be dropping these this morning, Pacific Time.

Thanx, Paul

> --
> Cheers,
> Stephen Rothwell
>
> diff --cc kernel/irq/chip.c
> index 1b1171113437,804c2791315d..000000000000
> --- a/kernel/irq/chip.c
> +++ b/kernel/irq/chip.c
> @@@ -768,11 -744,6 +768,9 @@@ void handle_nmi(struct irq_desc *desc
>
> __kstat_incr_irqs_this_cpu(desc);
>
> + if (chip->irq_ack)
> + chip->irq_ack(&desc->irq_data);
> +
> - trace_irq_handler_entry(irq, action);
> /*
> * NMIs cannot be shared, there is only one action.
> */
> @@@ -1050,13 -954,7 +1044,10 @@@ void handle_percpu_devid_nmi(struct irq
>
> __kstat_incr_irqs_this_cpu(desc);
>
> + if (chip->irq_ack)
> + chip->irq_ack(&desc->irq_data);
> +
> - trace_irq_handler_entry(irq, action);
> - res = action->handler(irq, raw_cpu_ptr(action->percpu_dev_id));
> - trace_irq_handler_exit(irq, action, res);
> + handle_irqaction_percpu_devid(irq, action);
>
> if (chip->irq_eoi)
> chip->irq_eoi(&desc->irq_data);