Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Dec 2019 17:29:50 +0000 (09:29 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Dec 2019 17:29:50 +0000 (09:29 -0800)
Pull irq updates from Ingo Molnar:
 "Most of the IRQ subsystem changes in this cycle were irq-chip driver
  updates:

   - Qualcomm PDC wakeup interrupt support

   - Layerscape external IRQ support

   - Broadcom bcm7038 PM and wakeup support

   - Ingenic driver cleanup and modernization

   - GICv3 ITS preparation for GICv4.1 updates

   - GICv4 fixes

  There's also the series from Frederic Weisbecker that fixes memory
  ordering bugs for the irq-work logic, whose primary fix is to turn
  work->irq_work.flags into an atomic variable and then convert the
  complex (and buggy) atomic_cmpxchg() loop in irq_work_claim() into a
  much simpler atomic_fetch_or() call.

  There are also various smaller cleanups"

* 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (44 commits)
  pinctrl/sdm845: Add PDC wakeup interrupt map for GPIOs
  pinctrl/msm: Setup GPIO chip in hierarchy
  irqchip/qcom-pdc: Add irqchip set/get state calls
  irqchip/qcom-pdc: Add irqdomain for wakeup capable GPIOs
  irqchip/qcom-pdc: Do not toggle IRQ_ENABLE during mask/unmask
  irqchip/qcom-pdc: Update max PDC interrupts
  of/irq: Document properties for wakeup interrupt parent
  genirq: Introduce irq_chip_get/set_parent_state calls
  irqdomain: Add bus token DOMAIN_BUS_WAKEUP
  genirq: Fix function documentation of __irq_alloc_descs()
  irq_work: Fix IRQ_WORK_BUSY bit clearing
  irqchip/ti-sci-inta: Use ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(...))
  irq_work: Slightly simplify IRQ_WORK_PENDING clearing
  irq_work: Fix irq_work_claim() memory ordering
  irq_work: Convert flags to atomic_t
  irqchip: Ingenic: Add process for more than one irq at the same time.
  irqchip: ingenic: Alloc generic chips from IRQ domain
  irqchip: ingenic: Get virq number from IRQ domain
  irqchip: ingenic: Error out if IRQ domain creation failed
  irqchip: ingenic: Drop redundant irq_suspend / irq_resume functions
  ...

1  2 
drivers/irqchip/irq-gic-v3.c
drivers/pinctrl/qcom/pinctrl-msm.c
include/linux/irqchip/arm-gic-v3.h
kernel/bpf/stackmap.c
kernel/printk/printk.c
kernel/trace/bpf_trace.c

Simple merge
Simple merge
Simple merge
@@@ -287,9 -287,9 +287,9 @@@ static void stack_map_get_build_id_offs
        bool irq_work_busy = false;
        struct stack_map_irq_work *work = NULL;
  
 -      if (in_nmi()) {
 +      if (irqs_disabled()) {
                work = this_cpu_ptr(&up_read_work);
-               if (work->irq_work.flags & IRQ_WORK_BUSY)
+               if (atomic_read(&work->irq_work.flags) & IRQ_WORK_BUSY)
                        /* cannot queue more up_read, fallback */
                        irq_work_busy = true;
        }
Simple merge
Simple merge