diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-05 15:21:47 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-05 15:21:47 -0500 |
| commit | 78f860135433a8bba406352fbdcea8e8980583bf (patch) | |
| tree | 0b7a9ba320e38b5d6eb0fb982bc2d9449aaf57f3 /kernel/irq/internals.h | |
| parent | 18483190e7a2a6761b67c6824a31adf5b2b7be51 (diff) | |
| parent | a324ca9cad4736252c33c1e28cffe1d87f262d03 (diff) | |
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq updates from Thomas Gleixner:
"The interrupt departement delivers this time:
- New infrastructure to manage NMIs on platforms which have a sane
NMI delivery, i.e. identifiable NMI vectors instead of a single
lump.
- Simplification of the interrupt affinity management so drivers
don't have to implement ugly loops around the PCI/MSI enablement.
- Speedup for interrupt statistics in /proc/stat
- Provide a function to retrieve the default irq domain
- A new interrupt controller for the Loongson LS1X platform
- Affinity support for the SiFive PLIC
- Better support for the iMX irqsteer driver
- NUMA aware memory allocations for GICv3
- The usual small fixes, improvements and cleanups all over the
place"
* 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
irqchip/imx-irqsteer: Add multi output interrupts support
irqchip/imx-irqsteer: Change to use reg_num instead of irq_group
dt-bindings: irq: imx-irqsteer: Add multi output interrupts support
dt-binding: irq: imx-irqsteer: Use irq number instead of group number
irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code
irqchip/gicv3-its: Use NUMA aware memory allocation for ITS tables
irqdomain: Allow the default irq domain to be retrieved
irqchip/sifive-plic: Implement irq_set_affinity() for SMP host
irqchip/sifive-plic: Differentiate between PLIC handler and context
irqchip/sifive-plic: Add warning in plic_init() if handler already present
irqchip/sifive-plic: Pre-compute context hart base and enable base
PCI/MSI: Remove obsolete sanity checks for multiple interrupt sets
genirq/affinity: Remove the leftovers of the original set support
nvme-pci: Simplify interrupt allocation
genirq/affinity: Add new callback for (re)calculating interrupt sets
genirq/affinity: Store interrupt sets size in struct irq_affinity
genirq/affinity: Code consolidation
irqchip/irq-sifive-plic: Check and continue in case of an invalid cpuid.
irqchip/i8259: Fix shutdown order by moving syscore_ops registration
dt-bindings: interrupt-controller: loongson ls1x intc
...
Diffstat (limited to 'kernel/irq/internals.h')
| -rw-r--r-- | kernel/irq/internals.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h index ca6afa267070..70c3053bc1f6 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h | |||
| @@ -49,6 +49,7 @@ enum { | |||
| 49 | * IRQS_WAITING - irq is waiting | 49 | * IRQS_WAITING - irq is waiting |
| 50 | * IRQS_PENDING - irq is pending and replayed later | 50 | * IRQS_PENDING - irq is pending and replayed later |
| 51 | * IRQS_SUSPENDED - irq is suspended | 51 | * IRQS_SUSPENDED - irq is suspended |
| 52 | * IRQS_NMI - irq line is used to deliver NMIs | ||
| 52 | */ | 53 | */ |
| 53 | enum { | 54 | enum { |
| 54 | IRQS_AUTODETECT = 0x00000001, | 55 | IRQS_AUTODETECT = 0x00000001, |
| @@ -60,6 +61,7 @@ enum { | |||
| 60 | IRQS_PENDING = 0x00000200, | 61 | IRQS_PENDING = 0x00000200, |
| 61 | IRQS_SUSPENDED = 0x00000800, | 62 | IRQS_SUSPENDED = 0x00000800, |
| 62 | IRQS_TIMINGS = 0x00001000, | 63 | IRQS_TIMINGS = 0x00001000, |
| 64 | IRQS_NMI = 0x00002000, | ||
| 63 | }; | 65 | }; |
| 64 | 66 | ||
| 65 | #include "debug.h" | 67 | #include "debug.h" |
| @@ -242,12 +244,18 @@ static inline void irq_state_set_masked(struct irq_desc *desc) | |||
| 242 | 244 | ||
| 243 | #undef __irqd_to_state | 245 | #undef __irqd_to_state |
| 244 | 246 | ||
| 245 | static inline void kstat_incr_irqs_this_cpu(struct irq_desc *desc) | 247 | static inline void __kstat_incr_irqs_this_cpu(struct irq_desc *desc) |
| 246 | { | 248 | { |
| 247 | __this_cpu_inc(*desc->kstat_irqs); | 249 | __this_cpu_inc(*desc->kstat_irqs); |
| 248 | __this_cpu_inc(kstat.irqs_sum); | 250 | __this_cpu_inc(kstat.irqs_sum); |
| 249 | } | 251 | } |
| 250 | 252 | ||
| 253 | static inline void kstat_incr_irqs_this_cpu(struct irq_desc *desc) | ||
| 254 | { | ||
| 255 | __kstat_incr_irqs_this_cpu(desc); | ||
| 256 | desc->tot_count++; | ||
| 257 | } | ||
| 258 | |||
| 251 | static inline int irq_desc_get_node(struct irq_desc *desc) | 259 | static inline int irq_desc_get_node(struct irq_desc *desc) |
| 252 | { | 260 | { |
| 253 | return irq_common_data_get_node(&desc->irq_common_data); | 261 | return irq_common_data_get_node(&desc->irq_common_data); |
