On Thu, Feb 17, 2022 at 10:12 AM Jan Kiszka <jan.kis...@siemens.com> wrote:
> On 17.02.22 15:11, Greg Gallagher wrote: > > > > > > On Thu, Feb 17, 2022 at 4:15 AM Jan Kiszka <jan.kis...@siemens.com > > <mailto:jan.kis...@siemens.com>> wrote: > > > > On 17.02.22 09:48, Gunter Grau via Xenomai wrote: > > > The following commit in the vanilla kernel introduced > > > a check for the cached interrupt mask flag in mask_irq(): > > > > > > bf22ff45bed6 ("genirq: Avoid unnecessary low level irq function > > calls") > > > > > > This means if the flag is not serviced correctly > > > the real bit in the hardware interrupt controller may not be > > > cleared or set. > > > The __ipipe_end_level_irq() function does not follow this rule. > > > It unmasks the bit in the hardware without setting the cached flags > > > accordingly. So after the first level interrupt is finished the > > > mask cache has a wrong state. If now the next interrupt fires, > > > the mask_irq() function will not really mask the interrupt in > > > the hardware which causes a interrupt storm after reenabeling > > > the hard irqs. > > > The fix now also updates the shadow flag correctly. > > > --- > > > kernel/irq/chip.c | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c > > > index 7c03e2931189..ff9a8b3f33db 100644 > > > --- a/kernel/irq/chip.c > > > +++ b/kernel/irq/chip.c > > > @@ -988,6 +988,7 @@ void __ipipe_ack_level_irq(struct irq_desc > *desc) > > > void __ipipe_end_level_irq(struct irq_desc *desc) > > > { > > > desc->irq_data.chip->irq_unmask(&desc->irq_data); > > > + irq_state_clr_masked(desc); > > > } > > > > > > void __ipipe_ack_fasteoi_irq(struct irq_desc *desc) > > > -- > > > 2.25.1 > > > > > > > Thanks, applied to ipipe-noarch. I had to do that manually as you > email > > client managed the patch (tabs->spaces, trailing spaces removed). Use > > git-send-email or a client that avoids this mangling. > > > > Greg, I will apply this to ipipe-x86 (4.19-cip and 5.4), could you do > > the same for arm and arm64? > > > > Thanks, > > Jan > > > > -- > > Siemens AG, Technology > > > > > > Competence Center Embedded Linux > > > > > > Yep, I’ve applied the patch locally, I’ll update arm and arm64 shortly. > > > > Just force-updated ipipe/noarch to have Gunter's address and signed-off > fixed up. Please use that version. > > Thanks, > Jan > > -- > Siemens AG, Technology > Competence Center Embedded Linux Ack > >