- Fix an OF node leak in irqchip init's error handling path
- Fix sunxi systems to wake up from suspend with an NMI by pressing the power button - Do not spuriously enable interrupts in gic-v3 in a nested interrupts-off section - Make sure gic-v3 handles properly a failure to enter a low power state -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmeM3eIACgkQEsHwGGHe VUqbEw/7BfNk7aiL9OrHg9J5IPE51hSzctr+MrlqRPkBBdpQF5Q4HC4R7ZlSBy44 k8zR96jO6qCgo+rObj1BmtYk6Yndxf1WDauVovaK774IMJVyhtJ4hGvPCYt1jOYt BZ/rF3mkPxC8ui/e2HsZVwMXjmuPaf6tZ8Bvsof0qrxy6ayh+L4b8KPBYXtXdoYr GxwuIoK7VHDj+0HTcBtzCAB3CLhYAeknwVGeGMP9xnE4DkqoYurfsmY60OnIXz0n j2oTTeQaLHFcAXcw5B7jABYeCAh3UfrKg9Og108z8aQ3hvTcGvM6ou/bBdVUVDSY E2bCW8DC2hmHUqEUQ2zW5CueVFCBkyi/JYbkuXG56gGH/qZ2moIcSm01ELNxiX4X jh6StDOKhqczSJb0rbzNK8BT8ZfiJK4OQSJOvIWyKEb3gEJxW3pEuFHiKcUECGZe EAXo81UF7R5eMFmJubAa1LYw60LSD83/1SKbeXHT5GnMWA51YIL16xYUsthpQnpV xZ/XVtPU1oM2cl+03q70VSVPZw0Eisd5i+5TSX9D0hdXfAD4g070oaOEZEc+ZFEj 7VO68AmGgAb1ZoKFNxDt/+tM/r4GJxiKTqMgjYX/dLN5jhtTbHi8Nui9h4m8WGqK 58WjqDuba7ajrYpt8ah8uWd8lU2zFvtFNXTQl6YS8oVPbJM2CxY= =Hjnc -----END PGP SIGNATURE----- Merge tag 'irq_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull irq fixes from Borislav Petkov: - Fix an OF node leak in irqchip init's error handling path - Fix sunxi systems to wake up from suspend with an NMI by pressing the power button - Do not spuriously enable interrupts in gic-v3 in a nested interrupts-off section - Make sure gic-v3 handles properly a failure to enter a low power state * tag 'irq_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: irqchip: Plug a OF node reference leak in platform_irqchip_probe() irqchip/sunxi-nmi: Add missing SKIP_WAKE flag irqchip/gic-v3-its: Don't enable interrupts in its_irq_set_vcpu_affinity() irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly
This commit is contained in:
commit
b031457ab1
4 changed files with 5 additions and 6 deletions
|
@ -2045,7 +2045,7 @@ static int its_irq_set_vcpu_affinity(struct irq_data *d, void *vcpu_info)
|
|||
if (!is_v4(its_dev->its))
|
||||
return -EINVAL;
|
||||
|
||||
guard(raw_spinlock_irq)(&its_dev->event_map.vlpi_lock);
|
||||
guard(raw_spinlock)(&its_dev->event_map.vlpi_lock);
|
||||
|
||||
/* Unmap request? */
|
||||
if (!info)
|
||||
|
|
|
@ -1522,7 +1522,7 @@ static int gic_retrigger(struct irq_data *data)
|
|||
static int gic_cpu_pm_notifier(struct notifier_block *self,
|
||||
unsigned long cmd, void *v)
|
||||
{
|
||||
if (cmd == CPU_PM_EXIT) {
|
||||
if (cmd == CPU_PM_EXIT || cmd == CPU_PM_ENTER_FAILED) {
|
||||
if (gic_dist_security_disabled())
|
||||
gic_enable_redist(true);
|
||||
gic_cpu_sys_reg_enable();
|
||||
|
|
|
@ -186,7 +186,8 @@ static int __init sunxi_sc_nmi_irq_init(struct device_node *node,
|
|||
gc->chip_types[0].chip.irq_unmask = irq_gc_mask_set_bit;
|
||||
gc->chip_types[0].chip.irq_eoi = irq_gc_ack_set_bit;
|
||||
gc->chip_types[0].chip.irq_set_type = sunxi_sc_nmi_set_type;
|
||||
gc->chip_types[0].chip.flags = IRQCHIP_EOI_THREADED | IRQCHIP_EOI_IF_HANDLED;
|
||||
gc->chip_types[0].chip.flags = IRQCHIP_EOI_THREADED | IRQCHIP_EOI_IF_HANDLED |
|
||||
IRQCHIP_SKIP_SET_WAKE;
|
||||
gc->chip_types[0].regs.ack = reg_offs->pend;
|
||||
gc->chip_types[0].regs.mask = reg_offs->enable;
|
||||
gc->chip_types[0].regs.type = reg_offs->ctrl;
|
||||
|
|
|
@ -35,11 +35,10 @@ void __init irqchip_init(void)
|
|||
int platform_irqchip_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
struct device_node *par_np = of_irq_find_parent(np);
|
||||
struct device_node *par_np __free(device_node) = of_irq_find_parent(np);
|
||||
of_irq_init_cb_t irq_init_cb = of_device_get_match_data(&pdev->dev);
|
||||
|
||||
if (!irq_init_cb) {
|
||||
of_node_put(par_np);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -55,7 +54,6 @@ int platform_irqchip_probe(struct platform_device *pdev)
|
|||
* interrupt controller can check for specific domains as necessary.
|
||||
*/
|
||||
if (par_np && !irq_find_matching_host(par_np, DOMAIN_BUS_ANY)) {
|
||||
of_node_put(par_np);
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue