<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/kernel/irq, branch v4.1.10</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>genirq: Introduce irq_chip_set_type_parent() helper</title>
<updated>2015-09-13T16:07:51+00:00</updated>
<author>
<name>Grygorii Strashko</name>
<email>grygorii.strashko@ti.com</email>
</author>
<published>2015-08-14T12:20:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0c7e8b8a0a4c216d5f9d1b6115858f70ede814ed'/>
<id>0c7e8b8a0a4c216d5f9d1b6115858f70ede814ed</id>
<content type='text'>
commit b7560de198222994374c1340a389f12d5efb244a upstream.

This helper is required for irq chips which do not implement a
irq_set_type callback and need to call down the irq domain hierarchy
for the actual trigger type change.

This helper is required to fix further wreckage caused by the
conversion of TI OMAP to hierarchical irq domains and therefor tagged
for stable.

[ tglx: Massaged changelog ]

Signed-off-by: Grygorii Strashko &lt;grygorii.strashko@ti.com&gt;
Cc: Sudeep Holla &lt;sudeep.holla@arm.com&gt;
Cc: &lt;linux@arm.linux.org.uk&gt;
Cc: &lt;nsekhar@ti.com&gt;
Cc: &lt;jason@lakedaemon.net&gt;
Cc: &lt;balbi@ti.com&gt;
Cc: &lt;linux-arm-kernel@lists.infradead.org&gt;
Cc: &lt;tony@atomide.com&gt;
Cc: &lt;marc.zyngier@arm.com&gt;
Cc: stable@vger.kernel.org # 4.1
Link: http://lkml.kernel.org/r/1439554830-19502-3-git-send-email-grygorii.strashko@ti.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b7560de198222994374c1340a389f12d5efb244a upstream.

This helper is required for irq chips which do not implement a
irq_set_type callback and need to call down the irq domain hierarchy
for the actual trigger type change.

This helper is required to fix further wreckage caused by the
conversion of TI OMAP to hierarchical irq domains and therefor tagged
for stable.

[ tglx: Massaged changelog ]

Signed-off-by: Grygorii Strashko &lt;grygorii.strashko@ti.com&gt;
Cc: Sudeep Holla &lt;sudeep.holla@arm.com&gt;
Cc: &lt;linux@arm.linux.org.uk&gt;
Cc: &lt;nsekhar@ti.com&gt;
Cc: &lt;jason@lakedaemon.net&gt;
Cc: &lt;balbi@ti.com&gt;
Cc: &lt;linux-arm-kernel@lists.infradead.org&gt;
Cc: &lt;tony@atomide.com&gt;
Cc: &lt;marc.zyngier@arm.com&gt;
Cc: stable@vger.kernel.org # 4.1
Link: http://lkml.kernel.org/r/1439554830-19502-3-git-send-email-grygorii.strashko@ti.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>genirq: Don't return ENOSYS in irq_chip_retrigger_hierarchy</title>
<updated>2015-09-13T16:07:51+00:00</updated>
<author>
<name>Grygorii Strashko</name>
<email>grygorii.strashko@ti.com</email>
</author>
<published>2015-08-14T12:20:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=533eb4c087ba86e232ac9b49db9e553e1bdb4c59'/>
<id>533eb4c087ba86e232ac9b49db9e553e1bdb4c59</id>
<content type='text'>
commit 6d4affea7d5aa5ca5ff4c3e5fbf3ee16801cc527 upstream.

irq_chip_retrigger_hierarchy() returns -ENOSYS if it was not able to
find at least one .irq_retrigger() callback implemented in the IRQ
domain hierarchy.

That's wrong, because check_irq_resend() expects a 0 return value from
the callback in case that the hardware assisted resend was not
possible. If the return value is non zero the core code assumes
hardware resend success and the software resend is not invoked.

This results in lost interrupts on platforms where none of the parent
irq chips in the hierarchy implements the retrigger callback.

This is observable on TI OMAP, where the hierarchy is:

 ARM GIC &lt;- OMAP wakeupgen &lt;- TI Crossbar

Return 0 instead so the software resend mechanism gets invoked.

[ tglx: Massaged changelog ]

Fixes: 85f08c17de26 ('genirq: Introduce helper functions...')
Signed-off-by: Grygorii Strashko &lt;grygorii.strashko@ti.com&gt;
Reviewed-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Reviewed-by: Jiang Liu &lt;jiang.liu@linux.intel.com&gt;
Cc: Sudeep Holla &lt;sudeep.holla@arm.com&gt;
Cc: &lt;linux@arm.linux.org.uk&gt;
Cc: &lt;nsekhar@ti.com&gt;
Cc: &lt;jason@lakedaemon.net&gt;
Cc: &lt;balbi@ti.com&gt;
Cc: &lt;linux-arm-kernel@lists.infradead.org&gt;
Cc: &lt;tony@atomide.com&gt;
Link: http://lkml.kernel.org/r/1439554830-19502-2-git-send-email-grygorii.strashko@ti.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 6d4affea7d5aa5ca5ff4c3e5fbf3ee16801cc527 upstream.

irq_chip_retrigger_hierarchy() returns -ENOSYS if it was not able to
find at least one .irq_retrigger() callback implemented in the IRQ
domain hierarchy.

That's wrong, because check_irq_resend() expects a 0 return value from
the callback in case that the hardware assisted resend was not
possible. If the return value is non zero the core code assumes
hardware resend success and the software resend is not invoked.

This results in lost interrupts on platforms where none of the parent
irq chips in the hierarchy implements the retrigger callback.

This is observable on TI OMAP, where the hierarchy is:

 ARM GIC &lt;- OMAP wakeupgen &lt;- TI Crossbar

Return 0 instead so the software resend mechanism gets invoked.

[ tglx: Massaged changelog ]

Fixes: 85f08c17de26 ('genirq: Introduce helper functions...')
Signed-off-by: Grygorii Strashko &lt;grygorii.strashko@ti.com&gt;
Reviewed-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Reviewed-by: Jiang Liu &lt;jiang.liu@linux.intel.com&gt;
Cc: Sudeep Holla &lt;sudeep.holla@arm.com&gt;
Cc: &lt;linux@arm.linux.org.uk&gt;
Cc: &lt;nsekhar@ti.com&gt;
Cc: &lt;jason@lakedaemon.net&gt;
Cc: &lt;balbi@ti.com&gt;
Cc: &lt;linux-arm-kernel@lists.infradead.org&gt;
Cc: &lt;tony@atomide.com&gt;
Link: http://lkml.kernel.org/r/1439554830-19502-2-git-send-email-grygorii.strashko@ti.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD</title>
<updated>2015-08-10T19:21:53+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2015-07-16T12:10:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8ee1239a023a9a8bdbb1eaeba4e956204beedacd'/>
<id>8ee1239a023a9a8bdbb1eaeba4e956204beedacd</id>
<content type='text'>
commit 75a06189fc508a2acf470b0b12710362ffb2c4b1 upstream.

The resend mechanism happily calls the interrupt handler of interrupts
which are marked IRQ_NESTED_THREAD from softirq context. This can
result in crashes because the interrupt handler is not the proper way
to invoke the device handlers. They must be invoked via
handle_nested_irq.

Prevent the resend even if the interrupt has no valid parent irq
set. Its better to have a lost interrupt than a crashing machine.

Reported-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 75a06189fc508a2acf470b0b12710362ffb2c4b1 upstream.

The resend mechanism happily calls the interrupt handler of interrupts
which are marked IRQ_NESTED_THREAD from softirq context. This can
result in crashes because the interrupt handler is not the proper way
to invoke the device handlers. They must be invoked via
handle_nested_irq.

Prevent the resend even if the interrupt has no valid parent irq
set. Its better to have a lost interrupt than a crashing machine.

Reported-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>genirq: devres: Fix testing return value of request_any_context_irq()</title>
<updated>2015-07-21T17:10:05+00:00</updated>
<author>
<name>Axel Lin</name>
<email>axel.lin@ingics.com</email>
</author>
<published>2015-05-11T09:02:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=25d8f169eee423940158a0ab33ed5dd1dd995cf9'/>
<id>25d8f169eee423940158a0ab33ed5dd1dd995cf9</id>
<content type='text'>
commit 63781394c540dd9e666a6b21d70b64dd52bce76e upstream.

request_any_context_irq() returns a negative value on failure.
It returns either IRQC_IS_HARDIRQ or IRQC_IS_NESTED on success.
So fix testing return value of request_any_context_irq().

Also fixup the return value of devm_request_any_context_irq() to make it
consistent with request_any_context_irq().

Fixes: 0668d3065128 ("genirq: Add devm_request_any_context_irq()")
Signed-off-by: Axel Lin &lt;axel.lin@ingics.com&gt;
Reviewed-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Link: http://lkml.kernel.org/r/1431334978.17783.4.camel@ingics.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 63781394c540dd9e666a6b21d70b64dd52bce76e upstream.

request_any_context_irq() returns a negative value on failure.
It returns either IRQC_IS_HARDIRQ or IRQC_IS_NESTED on success.
So fix testing return value of request_any_context_irq().

Also fixup the return value of devm_request_any_context_irq() to make it
consistent with request_any_context_irq().

Fixes: 0668d3065128 ("genirq: Add devm_request_any_context_irq()")
Signed-off-by: Axel Lin &lt;axel.lin@ingics.com&gt;
Reviewed-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Link: http://lkml.kernel.org/r/1431334978.17783.4.camel@ingics.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>genirq: Set IRQCHIP_SKIP_SET_WAKE flag for dummy_irq_chip</title>
<updated>2015-04-24T18:57:06+00:00</updated>
<author>
<name>Roger Quadros</name>
<email>rogerq@ti.com</email>
</author>
<published>2015-04-15T08:14:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=10a50f1ab5f06c9a3ee5ece3ec52e607ed53c79f'/>
<id>10a50f1ab5f06c9a3ee5ece3ec52e607ed53c79f</id>
<content type='text'>
Without this system suspend is broken on systems that have
drivers calling enable/disable_irq_wake() for interrupts based off
the dummy irq hook. (e.g. drivers/gpio/gpio-pcf857x.c)

Signed-off-by: Roger Quadros &lt;rogerq@ti.com&gt;
Cc: &lt;cw00.choi@samsung.com&gt;
Cc: &lt;balbi@ti.com&gt;
Cc: &lt;tony@atomide.com&gt;
Cc: Gregory Clement &lt;gregory.clement@free-electrons.com&gt;
Link: http://lkml.kernel.org/r/552E1DD3.4040106@ti.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Without this system suspend is broken on systems that have
drivers calling enable/disable_irq_wake() for interrupts based off
the dummy irq hook. (e.g. drivers/gpio/gpio-pcf857x.c)

Signed-off-by: Roger Quadros &lt;rogerq@ti.com&gt;
Cc: &lt;cw00.choi@samsung.com&gt;
Cc: &lt;balbi@ti.com&gt;
Cc: &lt;tony@atomide.com&gt;
Cc: Gregory Clement &lt;gregory.clement@free-electrons.com&gt;
Link: http://lkml.kernel.org/r/552E1DD3.4040106@ti.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'irqchip-core-4.1-3' of git://git.infradead.org/users/jcooper/linux into irq/core</title>
<updated>2015-04-11T09:17:28+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2015-04-11T09:17:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b7dccbea6b079be01e07921264709f249009b8e8'/>
<id>b7dccbea6b079be01e07921264709f249009b8e8</id>
<content type='text'>
irqchip core change for v4.1 (round 3) from Jason Cooper

 Purge the gic_arch_extn hacks and abuse by using the new stacked domains

   NOTE: Due to the nature of these changes, patches crossing subsystems have
         been kept together in their own branches.

    - tegra
       - Handle the LIC properly

    - omap
       - Convert crossbar to stacked domains
       - kill arm,routable-irqs in GIC binding

    - exynos
       - Convert PMU wakeup to stacked domains

    - shmobile, ux500, zynq (irq_set_wake branch)
       - Switch from abusing gic_arch_extn to using gic_set_irqchip_flags
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
irqchip core change for v4.1 (round 3) from Jason Cooper

 Purge the gic_arch_extn hacks and abuse by using the new stacked domains

   NOTE: Due to the nature of these changes, patches crossing subsystems have
         been kept together in their own branches.

    - tegra
       - Handle the LIC properly

    - omap
       - Convert crossbar to stacked domains
       - kill arm,routable-irqs in GIC binding

    - exynos
       - Convert PMU wakeup to stacked domains

    - shmobile, ux500, zynq (irq_set_wake branch)
       - Switch from abusing gic_arch_extn to using gic_set_irqchip_flags
</pre>
</div>
</content>
</entry>
<entry>
<title>genirq: Allow the irqchip state of an IRQ to be save/restored</title>
<updated>2015-04-08T21:28:28+00:00</updated>
<author>
<name>Marc Zyngier</name>
<email>marc.zyngier@arm.com</email>
</author>
<published>2015-03-18T11:01:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1b7047edfcfb257f69e306c9afbab150cb987717'/>
<id>1b7047edfcfb257f69e306c9afbab150cb987717</id>
<content type='text'>
There is a number of cases where a kernel subsystem may want to
introspect the state of an interrupt at the irqchip level:

- When a peripheral is shared between virtual machines,
  its interrupt state becomes part of the guest's state,
  and must be switched accordingly. KVM on arm/arm64 requires
  this for its guest-visible timer
- Some GPIO controllers seem to require peeking into the
  interrupt controller they are connected to to report
  their internal state

This seem to be a pattern that is common enough for the core code
to try and support this without too many horrible hacks. Introduce
a pair of accessors (irq_get_irqchip_state/irq_set_irqchip_state)
to retrieve the bits that can be of interest to another subsystem:
pending, active, and masked.

- irq_get_irqchip_state returns the state of the interrupt according
  to a parameter set to IRQCHIP_STATE_PENDING, IRQCHIP_STATE_ACTIVE,
  IRQCHIP_STATE_MASKED or IRQCHIP_STATE_LINE_LEVEL.
- irq_set_irqchip_state similarly sets the state of the interrupt.

Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Reviewed-by: Bjorn Andersson &lt;bjorn.andersson@sonymobile.com&gt;
Tested-by: Bjorn Andersson &lt;bjorn.andersson@sonymobile.com&gt;
Cc: linux-arm-kernel@lists.infradead.org
Cc: Abhijeet Dharmapurikar &lt;adharmap@codeaurora.org&gt;
Cc: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Cc: Phong Vo &lt;pvo@apm.com&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Tin Huynh &lt;tnhuynh@apm.com&gt;
Cc: Y Vo &lt;yvo@apm.com&gt;
Cc: Toan Le &lt;toanle@apm.com&gt;
Cc: Bjorn Andersson &lt;bjorn@kryo.se&gt;
Cc: Jason Cooper &lt;jason@lakedaemon.net&gt;
Cc: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: http://lkml.kernel.org/r/1426676484-21812-2-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is a number of cases where a kernel subsystem may want to
introspect the state of an interrupt at the irqchip level:

- When a peripheral is shared between virtual machines,
  its interrupt state becomes part of the guest's state,
  and must be switched accordingly. KVM on arm/arm64 requires
  this for its guest-visible timer
- Some GPIO controllers seem to require peeking into the
  interrupt controller they are connected to to report
  their internal state

This seem to be a pattern that is common enough for the core code
to try and support this without too many horrible hacks. Introduce
a pair of accessors (irq_get_irqchip_state/irq_set_irqchip_state)
to retrieve the bits that can be of interest to another subsystem:
pending, active, and masked.

- irq_get_irqchip_state returns the state of the interrupt according
  to a parameter set to IRQCHIP_STATE_PENDING, IRQCHIP_STATE_ACTIVE,
  IRQCHIP_STATE_MASKED or IRQCHIP_STATE_LINE_LEVEL.
- irq_set_irqchip_state similarly sets the state of the interrupt.

Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Reviewed-by: Bjorn Andersson &lt;bjorn.andersson@sonymobile.com&gt;
Tested-by: Bjorn Andersson &lt;bjorn.andersson@sonymobile.com&gt;
Cc: linux-arm-kernel@lists.infradead.org
Cc: Abhijeet Dharmapurikar &lt;adharmap@codeaurora.org&gt;
Cc: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Cc: Phong Vo &lt;pvo@apm.com&gt;
Cc: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: Tin Huynh &lt;tnhuynh@apm.com&gt;
Cc: Y Vo &lt;yvo@apm.com&gt;
Cc: Toan Le &lt;toanle@apm.com&gt;
Cc: Bjorn Andersson &lt;bjorn@kryo.se&gt;
Cc: Jason Cooper &lt;jason@lakedaemon.net&gt;
Cc: Arnd Bergmann &lt;arnd@arndb.de&gt;
Link: http://lkml.kernel.org/r/1426676484-21812-2-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>genirq: MSI: Fix freeing of unallocated MSI</title>
<updated>2015-04-08T21:28:28+00:00</updated>
<author>
<name>Marc Zyngier</name>
<email>marc.zyngier@arm.com</email>
</author>
<published>2015-01-26T19:10:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fe0c52fc003bc046380e52fe6799c96d770770cc'/>
<id>fe0c52fc003bc046380e52fe6799c96d770770cc</id>
<content type='text'>
While debugging an unrelated issue with the GICv3 ITS driver, the
following trace triggered:

WARNING: CPU: 1 PID: 1 at kernel/irq/irqdomain.c:1121 irq_domain_free_irqs+0x160/0x17c()
NULL pointer, cannot free irq
Modules linked in:
CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W      3.19.0-rc6+ #3690
Hardware name: FVP Base (DT)
Call trace:
[&lt;ffffffc000089398&gt;] dump_backtrace+0x0/0x13c
[&lt;ffffffc0000894e4&gt;] show_stack+0x10/0x1c
[&lt;ffffffc00066d134&gt;] dump_stack+0x74/0x94
[&lt;ffffffc0000a92f8&gt;] warn_slowpath_common+0x9c/0xd4
[&lt;ffffffc0000a938c&gt;] warn_slowpath_fmt+0x5c/0x80
[&lt;ffffffc0000ee04c&gt;] irq_domain_free_irqs+0x15c/0x17c
[&lt;ffffffc0000ef918&gt;] msi_domain_free_irqs+0x58/0x74
[&lt;ffffffc000386f58&gt;] free_msi_irqs+0xb4/0x1c0

    // The msi_prepare callback fails here

[&lt;ffffffc0003872c0&gt;] pci_enable_msix+0x25c/0x3d4
[&lt;ffffffc00038746c&gt;] pci_enable_msix_range+0x34/0x80
[&lt;ffffffc0003924ac&gt;] vp_try_to_find_vqs+0xec/0x528
[&lt;ffffffc000392954&gt;] vp_find_vqs+0x6c/0xa8
[&lt;ffffffc0003ee2a8&gt;] init_vq+0x120/0x248
[&lt;ffffffc0003eefb0&gt;] virtblk_probe+0xb0/0x6bc
[&lt;ffffffc00038fc34&gt;] virtio_dev_probe+0x17c/0x214
[&lt;ffffffc0003d4a04&gt;] driver_probe_device+0x7c/0x23c
[&lt;ffffffc0003d4cb0&gt;] __driver_attach+0x98/0xa0
[&lt;ffffffc0003d2c60&gt;] bus_for_each_dev+0x60/0xb4
[&lt;ffffffc0003d455c&gt;] driver_attach+0x1c/0x28
[&lt;ffffffc0003d41b0&gt;] bus_add_driver+0x150/0x208
[&lt;ffffffc0003d54c0&gt;] driver_register+0x64/0x130
[&lt;ffffffc00038f9e8&gt;] register_virtio_driver+0x24/0x68
[&lt;ffffffc00091320c&gt;] init+0x70/0xac
[&lt;ffffffc0000828f0&gt;] do_one_initcall+0x94/0x1d0
[&lt;ffffffc0008e9b00&gt;] kernel_init_freeable+0x144/0x1e4
[&lt;ffffffc00066a434&gt;] kernel_init+0xc/0xd8
---[ end trace f9ee562a77cc7bae ]---

The ITS msi_prepare callback having failed, we end-up trying to
free MSIs that have never been allocated. Oddly enough, the kernel
is pretty upset about it.

It turns out that this behaviour was expected before the MSI domain
was introduced (and dealt with in arch_teardown_msi_irqs).

The obvious fix is to detect this early enough and bail out.

Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Reviewed-by: Jiang Liu &lt;jiang.liu@linux.intel.com&gt;
Link: http://lkml.kernel.org/r/1422299419-6051-1-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While debugging an unrelated issue with the GICv3 ITS driver, the
following trace triggered:

WARNING: CPU: 1 PID: 1 at kernel/irq/irqdomain.c:1121 irq_domain_free_irqs+0x160/0x17c()
NULL pointer, cannot free irq
Modules linked in:
CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W      3.19.0-rc6+ #3690
Hardware name: FVP Base (DT)
Call trace:
[&lt;ffffffc000089398&gt;] dump_backtrace+0x0/0x13c
[&lt;ffffffc0000894e4&gt;] show_stack+0x10/0x1c
[&lt;ffffffc00066d134&gt;] dump_stack+0x74/0x94
[&lt;ffffffc0000a92f8&gt;] warn_slowpath_common+0x9c/0xd4
[&lt;ffffffc0000a938c&gt;] warn_slowpath_fmt+0x5c/0x80
[&lt;ffffffc0000ee04c&gt;] irq_domain_free_irqs+0x15c/0x17c
[&lt;ffffffc0000ef918&gt;] msi_domain_free_irqs+0x58/0x74
[&lt;ffffffc000386f58&gt;] free_msi_irqs+0xb4/0x1c0

    // The msi_prepare callback fails here

[&lt;ffffffc0003872c0&gt;] pci_enable_msix+0x25c/0x3d4
[&lt;ffffffc00038746c&gt;] pci_enable_msix_range+0x34/0x80
[&lt;ffffffc0003924ac&gt;] vp_try_to_find_vqs+0xec/0x528
[&lt;ffffffc000392954&gt;] vp_find_vqs+0x6c/0xa8
[&lt;ffffffc0003ee2a8&gt;] init_vq+0x120/0x248
[&lt;ffffffc0003eefb0&gt;] virtblk_probe+0xb0/0x6bc
[&lt;ffffffc00038fc34&gt;] virtio_dev_probe+0x17c/0x214
[&lt;ffffffc0003d4a04&gt;] driver_probe_device+0x7c/0x23c
[&lt;ffffffc0003d4cb0&gt;] __driver_attach+0x98/0xa0
[&lt;ffffffc0003d2c60&gt;] bus_for_each_dev+0x60/0xb4
[&lt;ffffffc0003d455c&gt;] driver_attach+0x1c/0x28
[&lt;ffffffc0003d41b0&gt;] bus_add_driver+0x150/0x208
[&lt;ffffffc0003d54c0&gt;] driver_register+0x64/0x130
[&lt;ffffffc00038f9e8&gt;] register_virtio_driver+0x24/0x68
[&lt;ffffffc00091320c&gt;] init+0x70/0xac
[&lt;ffffffc0000828f0&gt;] do_one_initcall+0x94/0x1d0
[&lt;ffffffc0008e9b00&gt;] kernel_init_freeable+0x144/0x1e4
[&lt;ffffffc00066a434&gt;] kernel_init+0xc/0xd8
---[ end trace f9ee562a77cc7bae ]---

The ITS msi_prepare callback having failed, we end-up trying to
free MSIs that have never been allocated. Oddly enough, the kernel
is pretty upset about it.

It turns out that this behaviour was expected before the MSI domain
was introduced (and dealt with in arch_teardown_msi_irqs).

The obvious fix is to detect this early enough and bail out.

Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Reviewed-by: Jiang Liu &lt;jiang.liu@linux.intel.com&gt;
Link: http://lkml.kernel.org/r/1422299419-6051-1-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'linus' into irq/core to get the GIC updates which</title>
<updated>2015-04-08T21:26:21+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2015-04-08T21:26:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=462b69b1e43ceccab68a47d65b1e46520cd0fdc0'/>
<id>462b69b1e43ceccab68a47d65b1e46520cd0fdc0</id>
<content type='text'>
conflict with pending GIC changes.

Conflicts:
	drivers/usb/isp1760/isp1760-core.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
conflict with pending GIC changes.

Conflicts:
	drivers/usb/isp1760/isp1760-core.c
</pre>
</div>
</content>
</entry>
<entry>
<title>genirq: Add irqchip_set_wake_parent</title>
<updated>2015-03-15T00:55:01+00:00</updated>
<author>
<name>Marc Zyngier</name>
<email>marc.zyngier@arm.com</email>
</author>
<published>2015-03-11T15:43:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=08b55e2a9208e4841a17c9d9c2c454986392977d'/>
<id>08b55e2a9208e4841a17c9d9c2c454986392977d</id>
<content type='text'>
This proves to be useful with stacked domains, when the current
domain doesn't implement wake-up, but expect the parent to do so.

Acked-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Link: https://lkml.kernel.org/r/1426088629-15377-2-git-send-email-marc.zyngier@arm.com
Signed-off-by: Jason Cooper &lt;jason@lakedaemon.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This proves to be useful with stacked domains, when the current
domain doesn't implement wake-up, but expect the parent to do so.

Acked-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Link: https://lkml.kernel.org/r/1426088629-15377-2-git-send-email-marc.zyngier@arm.com
Signed-off-by: Jason Cooper &lt;jason@lakedaemon.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
