Re: [PATCH] genirq: provide means to retrigger parent

2012-10-23 Thread Kevin Hilman
Russell King - ARM Linux li...@arm.linux.org.uk writes:

 On Tue, Oct 16, 2012 at 03:07:49PM -0700, Kevin Hilman wrote:
 From: Thomas Gleixner t...@linutronix.de
 
 Attempts to retrigger nested threaded IRQs currently fail because they
 have no primary handler.  In order to support retrigger of nested
 IRQs, the parent IRQ needs to be retriggered.
 
 To fix, when an IRQ needs to be resent, if the interrupt has a parent
 IRQ and runs in the context of the parent IRQ, then resend the parent.
 
 Also, handle_nested_irq() needs to clear the replay flag like the
 other handlers, otherwise check_irq_resend() will set it and it will
 never be cleared.  Without clearing, it results in the first resend
 working fine, but check_irq_resend() returning early on subsequent
 resends because the replay flag is still set.
 
 Problem discovered on ARM/OMAP platforms where a nested IRQ that's
 also a wakeup IRQ happens late in suspend and needed to be retriggered
 during the resume process.
 
 Reported-by: Kevin Hilman khil...@ti.com
 Tested-by: Kevin Hilman khil...@ti.com
 [khil...@ti.com: changelog edits, clear IRQS_REPLAY in handle_nested_irq()]
 Signed-off-by: Thomas Gleixner t...@linutronix.de

 Umm, we also have the converse situation.  We have platforms where the
 resend has to be done from the child IRQ, and the parent must not be
 touched.  I hope that doesn't break those.

I'm assuming the child IRQs you're concerned with are not threaded,
right?  This patch only addresses nested, threaded IRQs, and these don't
have a primary handler to run at all, so cannot do any triggering.

Kevin

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] genirq: provide means to retrigger parent

2012-10-23 Thread Thomas Gleixner
On Tue, 23 Oct 2012, Kevin Hilman wrote:

 Russell King - ARM Linux li...@arm.linux.org.uk writes:
 
  On Tue, Oct 16, 2012 at 03:07:49PM -0700, Kevin Hilman wrote:
  From: Thomas Gleixner t...@linutronix.de
  
  Attempts to retrigger nested threaded IRQs currently fail because they
  have no primary handler.  In order to support retrigger of nested
  IRQs, the parent IRQ needs to be retriggered.
  
  To fix, when an IRQ needs to be resent, if the interrupt has a parent
  IRQ and runs in the context of the parent IRQ, then resend the parent.
  
  Also, handle_nested_irq() needs to clear the replay flag like the
  other handlers, otherwise check_irq_resend() will set it and it will
  never be cleared.  Without clearing, it results in the first resend
  working fine, but check_irq_resend() returning early on subsequent
  resends because the replay flag is still set.
  
  Problem discovered on ARM/OMAP platforms where a nested IRQ that's
  also a wakeup IRQ happens late in suspend and needed to be retriggered
  during the resume process.
  
  Reported-by: Kevin Hilman khil...@ti.com
  Tested-by: Kevin Hilman khil...@ti.com
  [khil...@ti.com: changelog edits, clear IRQS_REPLAY in handle_nested_irq()]
  Signed-off-by: Thomas Gleixner t...@linutronix.de
 
  Umm, we also have the converse situation.  We have platforms where the
  resend has to be done from the child IRQ, and the parent must not be
  touched.  I hope that doesn't break those.
 
 I'm assuming the child IRQs you're concerned with are not threaded,
 right?  This patch only addresses nested, threaded IRQs, and these don't
 have a primary handler to run at all, so cannot do any triggering.

And it involves that you activly set the parent irq via the new
interface: irq_set_parent()

You don't have that yet or you don't use that in your future changes,
then you're good. :)

Thanks,

tglx


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] genirq: provide means to retrigger parent

2012-10-16 Thread Russell King - ARM Linux
On Tue, Oct 16, 2012 at 03:07:49PM -0700, Kevin Hilman wrote:
 From: Thomas Gleixner t...@linutronix.de
 
 Attempts to retrigger nested threaded IRQs currently fail because they
 have no primary handler.  In order to support retrigger of nested
 IRQs, the parent IRQ needs to be retriggered.
 
 To fix, when an IRQ needs to be resent, if the interrupt has a parent
 IRQ and runs in the context of the parent IRQ, then resend the parent.
 
 Also, handle_nested_irq() needs to clear the replay flag like the
 other handlers, otherwise check_irq_resend() will set it and it will
 never be cleared.  Without clearing, it results in the first resend
 working fine, but check_irq_resend() returning early on subsequent
 resends because the replay flag is still set.
 
 Problem discovered on ARM/OMAP platforms where a nested IRQ that's
 also a wakeup IRQ happens late in suspend and needed to be retriggered
 during the resume process.
 
 Reported-by: Kevin Hilman khil...@ti.com
 Tested-by: Kevin Hilman khil...@ti.com
 [khil...@ti.com: changelog edits, clear IRQS_REPLAY in handle_nested_irq()]
 Signed-off-by: Thomas Gleixner t...@linutronix.de

Umm, we also have the converse situation.  We have platforms where the
resend has to be done from the child IRQ, and the parent must not be
touched.  I hope that doesn't break those.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html