On Fri, 3 Aug 2018, Heiner Kallweit wrote:

> In case of a domain hierarchy we may miss the IRQCHIP_ONESHOT_SAFE
> flag because we look at top of the stack only. See also discussion
> here: https://marc.info/?l=linux-kernel&m=153301773524685&w=2

I think you misunderstood:

> I think the top most chip is the key, the rest of the hierarchy is
> irrelevant because the top most chip is the one which is responsible for
> not creating an interrupt storm after the interrupt got acknowledged.

The top most chip in the hierarchy, e.g. the PCI MSI one, is the key. If
that one is badly implemented and starts to resend after ack/eoi then the
interrupt storm happens. The lower layers in the hierarchy down to the
vector domain are just transporting what the top level chip does. So it is
actively wrong to flag the lower layers.

         if (desc->irq_data.chip->flags & IRQCHIP_ONESHOT_SAFE)

is the correct check as it looks at the topmost irq chip which is the one
which initiates the interrupt.

Thanks,

        tglx

Reply via email to