On Wed, Mar 22, 2017 at 01:30:12PM -0500, Grygorii Strashko wrote: > > On 03/22/2017 01:01 PM, Steven Rostedt wrote: > > On Wed, 22 Mar 2017 12:37:59 -0500 > > Julia Cartwright <julia@xxxxxx> wrote: > > > > > Which kernel were you testing on, here? From what I can tell, this > > > should have been fixed with Thomas's commit: > > > > > > 2a1d3ab8986d ("genirq: Handle force threading of irqs with primary > > > and thread handler") > > > > Thanks Julia for looking into this. I just looked at the code, and saw > > that it does very little with the lock held, and was fine with the > > conversion. But if that interrupt handler should be in a thread, we > > should see if that's the issue first. > > > It will not be threaded because there are IRQF_ONESHOT used. > > ret = devm_request_threaded_irq(&pdev->dev, irq, > sti_mbox_irq_handler, > sti_mbox_thread_handler, > IRQF_ONESHOT, mdev->name, mdev); Indeed. I had skipped over this important detail when I was skimming through the code. Thanks for clarifying! Is IRQF_ONESHOT really necessary for this device? The primary handler invokes sti_mbox_disable_channel() on the interrupting channel, which I would hope would acquiesce the pending interrupt at the device-level? Also, as written there are num_inst reads of STI_IRQ_VAL_OFFSET in the primary handler, which seems inefficient...(unless of course reading incurs side effects, here). Julia
Attachment:
signature.asc
Description: PGP signature