Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 4 Feb 2018 19:41:31 +0000 (11:41 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 4 Feb 2018 19:41:31 +0000 (11:41 -0800)
Pull irq fixes from Thomas Gleixner:
 "Two small changes:

   - a fix for a interrupt regression caused by the vector management
     changes in 4.15 affecting museum pieces which rely on interrupt
     probing for legacy (e.g. parallel port) devices.

     One of the startup calls in the autoprobe code was not changed to
     the new activate_and_startup() function resulting in a warning and
     as a consequence failing to discover the device interrupt.

   - a trivial update to the copyright/license header of the STM32 irq
     chip driver"

* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  genirq: Make legacy autoprobing work again
  irqchip/stm32: Fix copyright

drivers/irqchip/irq-stm32-exti.c
kernel/irq/autoprobe.c
kernel/irq/chip.c
kernel/irq/internals.h

index 31ab0dee2ce72c0685f47f679abf4ee52851ccf2..36f0fbe36c35a37b18da09f7a616eefba76ad603 100644 (file)
@@ -1,7 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (C) Maxime Coquelin 2015
+ * Copyright (C) STMicroelectronics 2017
  * Author:  Maxime Coquelin <mcoquelin.stm32@gmail.com>
- * License terms:  GNU General Public License (GPL), version 2
  */
 
 #include <linux/bitops.h>
index 4e8089b319aedef183bef8e0131e0c5dafcb6d1b..8c82ea26e837d278dc133cc5fe24de06d565a7ed 100644 (file)
@@ -71,7 +71,7 @@ unsigned long probe_irq_on(void)
                raw_spin_lock_irq(&desc->lock);
                if (!desc->action && irq_settings_can_probe(desc)) {
                        desc->istate |= IRQS_AUTODETECT | IRQS_WAITING;
-                       if (irq_startup(desc, IRQ_NORESEND, IRQ_START_FORCE))
+                       if (irq_activate_and_startup(desc, IRQ_NORESEND))
                                desc->istate |= IRQS_PENDING;
                }
                raw_spin_unlock_irq(&desc->lock);
index 043bfc35b3534e45b9e4ec90c230000ea04519d1..c69357a43849e1650f347f916b499ba4da47c04b 100644 (file)
@@ -294,11 +294,11 @@ int irq_activate(struct irq_desc *desc)
        return 0;
 }
 
-void irq_activate_and_startup(struct irq_desc *desc, bool resend)
+int irq_activate_and_startup(struct irq_desc *desc, bool resend)
 {
        if (WARN_ON(irq_activate(desc)))
-               return;
-       irq_startup(desc, resend, IRQ_START_FORCE);
+               return 0;
+       return irq_startup(desc, resend, IRQ_START_FORCE);
 }
 
 static void __irq_disable(struct irq_desc *desc, bool mask);
index ab19371eab9b8e1e9a7789b882ed4a308883b555..ca6afa26707006faa59fff84b082f4dc96ec8294 100644 (file)
@@ -76,7 +76,7 @@ extern void __enable_irq(struct irq_desc *desc);
 #define IRQ_START_COND false
 
 extern int irq_activate(struct irq_desc *desc);
-extern void irq_activate_and_startup(struct irq_desc *desc, bool resend);
+extern int irq_activate_and_startup(struct irq_desc *desc, bool resend);
 extern int irq_startup(struct irq_desc *desc, bool resend, bool force);
 
 extern void irq_shutdown(struct irq_desc *desc);