Re: [PATCH v3] ARM: OMAP: i2c: fix interrupt flood during resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Thu, Oct 18, 2012 at 09:51:13AM +0300, Kalle Jokiniemi wrote:
> ke, 2012-10-17 kello 19:02 +0300, Felipe Balbi kirjoitti:
> > Hi,
> > 
> > On Thu, Oct 11, 2012 at 02:08:25PM -0700, Kevin Hilman wrote:
> > > Hi Kalle,
> > > 
> > > Kalle Jokiniemi <kalle.jokiniemi@xxxxxxxxxxxxxxx> writes:
> > > 
> > > > The resume_noirq enables interrupts one-by-one starting from
> > > > first one. Now if the wake up event for suspend came from i2c
> > > > device, the i2c bus irq gets enabled before the threaded
> > > > i2c device irq, causing a flood of i2c bus interrupts as the
> > > > threaded irq that should clear the event is not enabled yet.
> > > >
> > > > Fixed the issue by adding suspend_noirq and resume_early
> > > > functions that keep i2c bus interrupts disabled until
> > > > resume_noirq has run completely.
> > > >
> > > > Issue was detected doing a wake up from autosleep with
> > > > twl4030 power key on N9. Patch tested on N9.
> > > >
> > > > Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@xxxxxxxxxxxxxxx>
> > > 
> > > This version looks good, thanks for the extra comments.
> > > 
> > > Reviewed-by: Kevin Hilman <khilman@xxxxxx>
> > > Tested-by: Kevin Hilman <khilman@xxxxxx>
> > > 
> > > Wolfram, This should also probably be Cc'd to stable since it affects
> > > earlier kernels as well.  Thanks,
> > 
> > just to make sure we're not fixing the wrong problem... does [1] help in
> > any way ?
> 
> Yes, I was fixing the wrong problem, this patch is obsolete. But the
> problem was in the TWL interrupt handling (PIH was run before SIH), not
> in i2c. See my other patch "twl4030: Fix chained irq handling on resume
> from suspend"
> 
> > 
> > [1] http://marc.info/?l=linux-omap&m=135048839915719&w=2
> > 
> 
> Could be related, though if I understood correctly, that runtime pm
> stuff gets run at noirq phase, so it probably does not help.

well, it will be called multiple times actually :-) Since i2c is
forcefully suspend in noirq time, it suspends before e.g. rtc,
twl*-gpio, etc, which means that (at least for) rtc will still do i2c
transfers on its suspend callback which will runtime resume the i2c
controller and later suspend it again :-)

You might be right, however, that it won't help in your case.

cheers

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux