2013-10-12 03:14:30

by Yi Zhang

[permalink] [raw]
Subject: [Question]should we not ignore the masked interrupt in regmap?

Hi, Mark:

Sorry to trouble you, I have a question about the interrupt handling
of regmap framework;
in the regmap_irq_thread(), from the following code, we only handle
the unmasked interrupt;


256 data->status_buf[i] &= ~data->mask_buf[i];


but in the following sequence, irq storm will happen;
do you think we should do a change here to handle all the interrupt here?
thanks very much;

1) interrupt is triggered;
2) a thread disables it(then the mask bit is set);
3) _Then_ the interrupt thread is executed, it _ignore _ and doesn’t
handle this interrupt;
because the interrupt is not ACKed, the interrupt status is not cleared;
4) in Marvell's PMIC, the interrupt line to SOC is always asserted,
then irq storm happens;

------------------------
Yi Zhang


2013-10-12 12:32:47

by Mark Brown

[permalink] [raw]
Subject: Re: [Question]should we not ignore the masked interrupt in regmap?

On Sat, Oct 12, 2013 at 11:14:27AM +0800, yi zhang wrote:

> 1) interrupt is triggered;
> 2) a thread disables it(then the mask bit is set);
> 3) _Then_ the interrupt thread is executed, it _ignore _ and doesn’t
> handle this interrupt;
> because the interrupt is not ACKed, the interrupt status is not cleared;
> 4) in Marvell's PMIC, the interrupt line to SOC is always asserted,
> then irq storm happens;

This sounds like you need the workaround activated by init_ack_masked.
It's basically the hardware failing to implement masking sensibly - the
general expectation for a mask bit is that it will have no effect on the
actual state of the interrupt, only on if it's reported.


Attachments:
(No filename) (687.00 B)
signature.asc (836.00 B)
Digital signature
Download all attachments

2013-10-12 12:50:59

by Yi Zhang

[permalink] [raw]
Subject: Re: [Question]should we not ignore the masked interrupt in regmap?

2013/10/12 Mark Brown <[email protected]>:
> On Sat, Oct 12, 2013 at 11:14:27AM +0800, yi zhang wrote:
>
>> 1) interrupt is triggered;
>> 2) a thread disables it(then the mask bit is set);
>> 3) _Then_ the interrupt thread is executed, it _ignore _ and doesn’t
>> handle this interrupt;
>> because the interrupt is not ACKed, the interrupt status is not cleared;
>> 4) in Marvell's PMIC, the interrupt line to SOC is always asserted,
>> then irq storm happens;
>
> This sounds like you need the workaround activated by init_ack_masked.
> It's basically the hardware failing to implement masking sensibly - the
> general expectation for a mask bit is that it will have no effect on the
> actual state of the interrupt, only on if it's reported.
Thanks Mark;

As I understand it, this "init_ack_masked" is used in initialization
(please correct me if I'm wrong);
but if the sequence above happens not in the initialization, then what
should we do to handle this?
could you please give us advice?

thanks very much;

2013-10-12 15:40:34

by Mark Brown

[permalink] [raw]
Subject: Re: [Question]should we not ignore the masked interrupt in regmap?

On Sat, Oct 12, 2013 at 08:50:57PM +0800, yi zhang wrote:

> As I understand it, this "init_ack_masked" is used in initialization
> (please correct me if I'm wrong);
> but if the sequence above happens not in the initialization, then what
> should we do to handle this?
> could you please give us advice?

Just do the same thing during masking.


Attachments:
(No filename) (345.00 B)
signature.asc (836.00 B)
Digital signature
Download all attachments