<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/irqchip, branch for-next</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=for-next</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=for-next'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2025-01-15T09:38:43Z</updated>
<entry>
<title>irqchip: Plug a OF node reference leak in platform_irqchip_probe()</title>
<updated>2025-01-15T09:38:43Z</updated>
<author>
<name>Joe Hattori</name>
<email>joe@pf.is.s.u-tokyo.ac.jp</email>
</author>
<published>2024-12-15T03:39:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=9322d1915f9d976ee48c09d800fbd5169bc2ddcc'/>
<id>urn:sha1:9322d1915f9d976ee48c09d800fbd5169bc2ddcc</id>
<content type='text'>
platform_irqchip_probe() leaks a OF node when irq_init_cb() fails. Fix it
by declaring par_np with the __free(device_node) cleanup construct.

This bug was found by an experimental static analysis tool that I am
developing.

Fixes: f8410e626569 ("irqchip: Add IRQCHIP_PLATFORM_DRIVER_BEGIN/END and IRQCHIP_MATCH helper macros")
Signed-off-by: Joe Hattori &lt;joe@pf.is.s.u-tokyo.ac.jp&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20241215033945.3414223-1-joe@pf.is.s.u-tokyo.ac.jp
</content>
</entry>
<entry>
<title>irqchip/sunxi-nmi: Add missing SKIP_WAKE flag</title>
<updated>2025-01-15T08:42:45Z</updated>
<author>
<name>Philippe Simons</name>
<email>simons.philippe@gmail.com</email>
</author>
<published>2025-01-12T12:34:02Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=3a748d483d80f066ca4b26abe45cdc0c367d13e9'/>
<id>urn:sha1:3a748d483d80f066ca4b26abe45cdc0c367d13e9</id>
<content type='text'>
Some boards with Allwinner SoCs connect the PMIC's IRQ pin to the SoC's NMI
pin instead of a normal GPIO. Since the power key is connected to the PMIC,
and people expect to wake up a suspended system via this key, the NMI IRQ
controller must stay alive when the system goes into suspend.

Add the SKIP_WAKE flag to prevent the sunxi NMI controller from going to
sleep, so that the power key can wake up those systems.

[ tglx: Fixed up coding style ]

Signed-off-by: Philippe Simons &lt;simons.philippe@gmail.com&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Link: https://lore.kernel.org/all/20250112123402.388520-1-simons.philippe@gmail.com

</content>
</entry>
<entry>
<title>irqchip/gic-v3-its: Don't enable interrupts in its_irq_set_vcpu_affinity()</title>
<updated>2025-01-15T08:42:45Z</updated>
<author>
<name>Tomas Krcka</name>
<email>krckatom@amazon.de</email>
</author>
<published>2024-12-30T15:08:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=35cb2c6ce7da545f3b5cb1e6473ad7c3a6f08310'/>
<id>urn:sha1:35cb2c6ce7da545f3b5cb1e6473ad7c3a6f08310</id>
<content type='text'>
The following call-chain leads to enabling interrupts in a nested interrupt
disabled section:

irq_set_vcpu_affinity()
  irq_get_desc_lock()
     raw_spin_lock_irqsave()   &lt;--- Disable interrupts
  its_irq_set_vcpu_affinity()
     guard(raw_spinlock_irq)   &lt;--- Enables interrupts when leaving the guard()
  irq_put_desc_unlock()        &lt;--- Warns because interrupts are enabled

This was broken in commit b97e8a2f7130, which replaced the original
raw_spin_[un]lock() pair with guard(raw_spinlock_irq).

Fix the issue by using guard(raw_spinlock).

[ tglx: Massaged change log ]

Fixes: b97e8a2f7130 ("irqchip/gic-v3-its: Fix potential race condition in its_vlpi_prop_update()")
Signed-off-by: Tomas Krcka &lt;krckatom@amazon.de&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Reviewed-by: Marc Zyngier &lt;maz@kernel.org&gt;
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20241230150825.62894-1-krckatom@amazon.de

</content>
</entry>
<entry>
<title>irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly</title>
<updated>2025-01-15T08:42:44Z</updated>
<author>
<name>Yogesh Lal</name>
<email>quic_ylal@quicinc.com</email>
</author>
<published>2024-12-20T09:39:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=0d62a49ab55c99e8deb4593b8d9f923de1ab5c18'/>
<id>urn:sha1:0d62a49ab55c99e8deb4593b8d9f923de1ab5c18</id>
<content type='text'>
When a CPU attempts to enter low power mode, it disables the redistributor
and Group 1 interrupts and reinitializes the system registers upon wakeup.

If the transition into low power mode fails, then the CPU_PM framework
invokes the PM notifier callback with CPU_PM_ENTER_FAILED to allow the
drivers to undo the state changes.

The GIC V3 driver ignores CPU_PM_ENTER_FAILED, which leaves the GIC in
disabled state.

Handle CPU_PM_ENTER_FAILED in the same way as CPU_PM_EXIT to restore normal
operation.

[ tglx: Massage change log, add Fixes tag ]

Fixes: 3708d52fc6bb ("irqchip: gic-v3: Implement CPU PM notifier")
Signed-off-by: Yogesh Lal &lt;quic_ylal@quicinc.com&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: Marc Zyngier &lt;maz@kernel.org&gt;
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20241220093907.2747601-1-quic_ylal@quicinc.com
</content>
</entry>
<entry>
<title>irqchip/gic-v3: Work around insecure GIC integrations</title>
<updated>2024-12-13T17:15:29Z</updated>
<author>
<name>Marc Zyngier</name>
<email>maz@kernel.org</email>
</author>
<published>2024-12-13T14:10:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=773c05f417fa14e1ac94776619e9c978ec001f0b'/>
<id>urn:sha1:773c05f417fa14e1ac94776619e9c978ec001f0b</id>
<content type='text'>
It appears that the relatively popular RK3399 SoC has been put together
using a large amount of illicit substances, as experiments reveal that its
integration of GIC500 exposes the *secure* programming interface to
non-secure.

This has some pretty bad effects on the way priorities are handled, and
results in a dead machine if booting with pseudo-NMI enabled
(irqchip.gicv3_pseudo_nmi=1) if the kernel contains 18fdb6348c480 ("arm64:
irqchip/gic-v3: Select priorities at boot time"), which relies on the
priorities being programmed using the NS view.

Let's restore some sanity by going one step further and disable security
altogether in this case. This is not any worse, and puts us in a mode where
priorities actually make some sense.

Huge thanks to Mark Kettenis who initially identified this issue on
OpenBSD, and to Chen-Yu Tsai who reported the problem in Linux.

Fixes: 18fdb6348c480 ("arm64: irqchip/gic-v3: Select priorities at boot time")
Reported-by: Mark Kettenis &lt;mark.kettenis@xs4all.nl&gt;
Reported-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Tested-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20241213141037.3995049-1-maz@kernel.org

</content>
</entry>
<entry>
<title>irqchip/gic: Correct declaration of *percpu_base pointer in union gic_base</title>
<updated>2024-12-13T17:11:52Z</updated>
<author>
<name>Uros Bizjak</name>
<email>ubizjak@gmail.com</email>
</author>
<published>2024-12-13T14:57:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=a1855f1b7c33642c9f7a01991fb763342a312e9b'/>
<id>urn:sha1:a1855f1b7c33642c9f7a01991fb763342a312e9b</id>
<content type='text'>
percpu_base is used in various percpu functions that expect variable in
__percpu address space. Correct the declaration of percpu_base to

void __iomem * __percpu *percpu_base;

to declare the variable as __percpu pointer.

The patch fixes several sparse warnings:

irq-gic.c:1172:44: warning: incorrect type in assignment (different address spaces)
irq-gic.c:1172:44:    expected void [noderef] __percpu *[noderef] __iomem *percpu_base
irq-gic.c:1172:44:    got void [noderef] __iomem *[noderef] __percpu *
...
irq-gic.c:1231:43: warning: incorrect type in argument 1 (different address spaces)
irq-gic.c:1231:43:    expected void [noderef] __percpu *__pdata
irq-gic.c:1231:43:    got void [noderef] __percpu *[noderef] __iomem *percpu_base

There were no changes in the resulting object files.

Signed-off-by: Uros Bizjak &lt;ubizjak@gmail.com&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: Marc Zyngier &lt;maz@kernel.org&gt;
Link: https://lore.kernel.org/all/20241213145809.2918-2-ubizjak@gmail.com

</content>
</entry>
<entry>
<title>Merge tag 'irq_urgent_for_v6.13_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip</title>
<updated>2024-12-08T19:54:04Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2024-12-08T19:54:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=eadaac4dd2e07292181d35858047bdb177d5194f'/>
<id>urn:sha1:eadaac4dd2e07292181d35858047bdb177d5194f</id>
<content type='text'>
Pull irq fixes from Borislav Petkov:

 - Fix a /proc/interrupts formatting regression

 - Have the BCM2836 interrupt controller enter power management states
   properly

 - Other fixlets

* tag 'irq_urgent_for_v6.13_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  irqchip/stm32mp-exti: CONFIG_STM32MP_EXTI should not default to y when compile-testing
  genirq/proc: Add missing space separator back
  irqchip/bcm2836: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND
  irqchip/gic-v3: Fix irq_complete_ack() comment
</content>
</entry>
<entry>
<title>irqchip/stm32mp-exti: CONFIG_STM32MP_EXTI should not default to y when compile-testing</title>
<updated>2024-12-03T16:40:30Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert+renesas@glider.be</email>
</author>
<published>2024-12-03T16:27:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=9151299ee5101e03eeed544c1280b0e14b89a8a4'/>
<id>urn:sha1:9151299ee5101e03eeed544c1280b0e14b89a8a4</id>
<content type='text'>
Merely enabling compile-testing should not enable additional functionality.

Fixes: 0be58e0553812fcb ("irqchip/stm32mp-exti: Allow building as module")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Link: https://lore.kernel.org/all/ef5ec063b23522058f92087e072419ea233acfe9.1733243115.git.geert+renesas@glider.be

</content>
</entry>
<entry>
<title>irqchip/bcm2836: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND</title>
<updated>2024-12-03T11:15:42Z</updated>
<author>
<name>Stefan Wahren</name>
<email>wahrenst@gmx.net</email>
</author>
<published>2024-12-02T11:54:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ee3878b84cc27ee62cdf78d2842830f4dcdab117'/>
<id>urn:sha1:ee3878b84cc27ee62cdf78d2842830f4dcdab117</id>
<content type='text'>
The BCM2836 interrupt controller doesn't provide any facility to configure
the wakeup sources. That's the reason why the driver lacks the
irq_set_wake() callback for the interrupt chip.

Enable the flags IRQCHIP_SKIP_SET_WAKE and IRQCHIP_MASK_ON_SUSPEND so the
interrupt suspend logic can handle the chip correctly equivalently to the
corresponding bcm2835 change (9a58480e5e53 ("irqchip/bcm2835: Enable
SKIP_SET_WAKE and MASK_ON_SUSPEND").

Signed-off-by: Stefan Wahren &lt;wahrenst@gmx.net&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: Florian Fainelli &lt;florian.fainelli@broadcom.com&gt;
Link: https://lore.kernel.org/all/20241202115437.33552-1-wahrenst@gmx.net
</content>
</entry>
<entry>
<title>irqchip/gic-v3: Fix irq_complete_ack() comment</title>
<updated>2024-12-03T11:15:42Z</updated>
<author>
<name>Lorenzo Pieralisi</name>
<email>lpieralisi@kernel.org</email>
</author>
<published>2024-12-02T11:25:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=f58326c70df0dc413bb58848b188523b3662cf0f'/>
<id>urn:sha1:f58326c70df0dc413bb58848b188523b3662cf0f</id>
<content type='text'>
When the GIC is in EOImode == 1 in irq_complete_ack() it executes a
priority drop not a deactivation.

Fix the function comment to clarify the behaviour.

Signed-off-by: Lorenzo Pieralisi &lt;lpieralisi@kernel.org&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Link: https://lore.kernel.org/all/20241202112518.51178-1-lpieralisi@kernel.org
</content>
</entry>
</feed>
