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/debugfs.c | |
| 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/debugfs.c')
| -rw-r--r-- | kernel/irq/debugfs.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c index 6f636136cccc..516c00a5e867 100644 --- a/kernel/irq/debugfs.c +++ b/kernel/irq/debugfs.c | |||
| @@ -56,6 +56,7 @@ static const struct irq_bit_descr irqchip_flags[] = { | |||
| 56 | BIT_MASK_DESCR(IRQCHIP_ONESHOT_SAFE), | 56 | BIT_MASK_DESCR(IRQCHIP_ONESHOT_SAFE), |
| 57 | BIT_MASK_DESCR(IRQCHIP_EOI_THREADED), | 57 | BIT_MASK_DESCR(IRQCHIP_EOI_THREADED), |
| 58 | BIT_MASK_DESCR(IRQCHIP_SUPPORTS_LEVEL_MSI), | 58 | BIT_MASK_DESCR(IRQCHIP_SUPPORTS_LEVEL_MSI), |
| 59 | BIT_MASK_DESCR(IRQCHIP_SUPPORTS_NMI), | ||
| 59 | }; | 60 | }; |
| 60 | 61 | ||
| 61 | static void | 62 | static void |
| @@ -140,6 +141,7 @@ static const struct irq_bit_descr irqdesc_istates[] = { | |||
| 140 | BIT_MASK_DESCR(IRQS_WAITING), | 141 | BIT_MASK_DESCR(IRQS_WAITING), |
| 141 | BIT_MASK_DESCR(IRQS_PENDING), | 142 | BIT_MASK_DESCR(IRQS_PENDING), |
| 142 | BIT_MASK_DESCR(IRQS_SUSPENDED), | 143 | BIT_MASK_DESCR(IRQS_SUSPENDED), |
| 144 | BIT_MASK_DESCR(IRQS_NMI), | ||
| 143 | }; | 145 | }; |
| 144 | 146 | ||
| 145 | 147 | ||
| @@ -203,8 +205,8 @@ static ssize_t irq_debug_write(struct file *file, const char __user *user_buf, | |||
| 203 | chip_bus_lock(desc); | 205 | chip_bus_lock(desc); |
| 204 | raw_spin_lock_irqsave(&desc->lock, flags); | 206 | raw_spin_lock_irqsave(&desc->lock, flags); |
| 205 | 207 | ||
| 206 | if (irq_settings_is_level(desc)) { | 208 | if (irq_settings_is_level(desc) || desc->istate & IRQS_NMI) { |
| 207 | /* Can't do level, sorry */ | 209 | /* Can't do level nor NMIs, sorry */ |
| 208 | err = -EINVAL; | 210 | err = -EINVAL; |
| 209 | } else { | 211 | } else { |
| 210 | desc->istate |= IRQS_PENDING; | 212 | desc->istate |= IRQS_PENDING; |
| @@ -256,8 +258,6 @@ static int __init irq_debugfs_init(void) | |||
| 256 | int irq; | 258 | int irq; |
| 257 | 259 | ||
| 258 | root_dir = debugfs_create_dir("irq", NULL); | 260 | root_dir = debugfs_create_dir("irq", NULL); |
| 259 | if (!root_dir) | ||
| 260 | return -ENOMEM; | ||
| 261 | 261 | ||
| 262 | irq_domain_debugfs_init(root_dir); | 262 | irq_domain_debugfs_init(root_dir); |
| 263 | 263 | ||
