1. 24 Oct, 2019 2 commits
    • Thomas Gleixner's avatar
      x86/ioapic: Rename misnamed functions · 2579a4ee
      Thomas Gleixner authored
      ioapic_irqd_[un]mask() are misnomers as both functions do way more than
      masking and unmasking the interrupt line. Both deal with the moving the
      affinity of the interrupt within interrupt context. The mask/unmask is just
      a tiny part of the functionality.
      
      Rename them to ioapic_prepare/finish_move(), fixup the call sites and
      rename the related variables in the code to reflect what this is about.
      
      No functional change.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Sebastian Siewior <bigeasy@linutronix.de>
      Link: https://lkml.kernel.org/r/20191017101938.412489856@linutronix.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      2579a4ee
    • Thomas Gleixner's avatar
      x86/ioapic: Prevent inconsistent state when moving an interrupt · df439342
      Thomas Gleixner authored
      There is an issue with threaded interrupts which are marked ONESHOT
      and using the fasteoi handler:
      
        if (IS_ONESHOT())
          mask_irq();
        ....
        cond_unmask_eoi_irq()
          chip->irq_eoi();
            if (setaffinity_pending) {
               mask_ioapic();
               ...
      	 move_affinity();
      	 unmask_ioapic();
            }
      
      So if setaffinity is pending the interrupt will be moved and then
      unconditionally unmasked at the ioapic level, which is wrong in two
      aspects:
      
       1) It should be kept masked up to the point where the threaded handler
          finished.
      
       2) The physical chip state and the software masked state are inconsistent
      
      Guard both the mask and the unmask with a check for the software masked
      state. If the line is marked masked then the ioapic line is also masked, so
      both mask_ioapic() and unmask_ioapic() can be skipped safely.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Sebastian Siewior <bigeasy@linutronix.de>
      Fixes: 3aa551c9 ("genirq: add threaded interrupt handler support")
      Link: https://lkml.kernel.org/r/20191017101938.321393687@linutronix.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      df439342
  2. 22 Oct, 2019 1 commit
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v5.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 3b7c59a1
      Linus Torvalds authored
      Pull pin control fixes from Linus Walleij:
       "Here is a bunch of pin control fixes. I was lagging behind on this
        one, some fixes should have come in earlier, sorry about that.
      
        Anyways here it is, pretty straight-forward fixes, the Strago fix
        stand out as something serious affecting a lot of machines.
      
        Summary:
         - Handle multiple instances of Intel chips without complaining.
         - Restore the Intel Strago DMI workaround
         - Make the Armada 37xx handle pins over 32
         - Fix the polarity of the LED group on Armada 37xx
         - Fix an off-by-one bug in the NS2 driver
         - Fix error path for iproc's platform_get_irq()
         - Fix error path on the STMFX driver
         - Fix a typo in the Berlin AS370 driver
         - Fix up misc errors in the Aspeed 2600 BMC support
         - Fix a stray SPDX tag"
      
      * tag 'pinctrl-v5.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: aspeed-g6: Rename SD3 to EMMC and rework pin groups
        pinctrl: aspeed-g6: Fix UART13 group pinmux
        pinctrl: aspeed-g6: Make SIG_DESC_CLEAR() behave intuitively
        pinctrl: aspeed-g6: Fix I3C3/I3C4 pinmux configuration
        pinctrl: aspeed-g6: Fix I2C14 SDA description
        pinctrl: aspeed-g6: Sort pins for sanity
        dt-bindings: pinctrl: aspeed-g6: Rework SD3 function and groups
        pinctrl: berlin: as370: fix a typo s/spififib/spdifib
        pinctrl: armada-37xx: swap polarity on LED group
        pinctrl: stmfx: fix null pointer on remove
        pinctrl: iproc: allow for error from platform_get_irq()
        pinctrl: ns2: Fix off by one bugs in ns2_pinmux_enable()
        pinctrl: bcm-iproc: Use SPDX header
        pinctrl: armada-37xx: fix control of pins 32 and up
        pinctrl: cherryview: restore Strago DMI workaround for all versions
        pinctrl: intel: Allocate IRQ chip dynamic
      3b7c59a1
  3. 20 Oct, 2019 6 commits
  4. 19 Oct, 2019 31 commits