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
...
This commit is contained in:
@@ -79,6 +79,31 @@ static u64 get_iowait_time(int cpu)
|
||||
|
||||
#endif
|
||||
|
||||
static void show_irq_gap(struct seq_file *p, unsigned int gap)
|
||||
{
|
||||
static const char zeros[] = " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
|
||||
|
||||
while (gap > 0) {
|
||||
unsigned int inc;
|
||||
|
||||
inc = min_t(unsigned int, gap, ARRAY_SIZE(zeros) / 2);
|
||||
seq_write(p, zeros, 2 * inc);
|
||||
gap -= inc;
|
||||
}
|
||||
}
|
||||
|
||||
static void show_all_irqs(struct seq_file *p)
|
||||
{
|
||||
unsigned int i, next = 0;
|
||||
|
||||
for_each_active_irq(i) {
|
||||
show_irq_gap(p, i - next);
|
||||
seq_put_decimal_ull(p, " ", kstat_irqs_usr(i));
|
||||
next = i + 1;
|
||||
}
|
||||
show_irq_gap(p, nr_irqs - next);
|
||||
}
|
||||
|
||||
static int show_stat(struct seq_file *p, void *v)
|
||||
{
|
||||
int i, j;
|
||||
@@ -156,9 +181,7 @@ static int show_stat(struct seq_file *p, void *v)
|
||||
}
|
||||
seq_put_decimal_ull(p, "intr ", (unsigned long long)sum);
|
||||
|
||||
/* sum again ? it could be updated? */
|
||||
for_each_irq_nr(j)
|
||||
seq_put_decimal_ull(p, " ", kstat_irqs_usr(j));
|
||||
show_all_irqs(p);
|
||||
|
||||
seq_printf(p,
|
||||
"\nctxt %llu\n"
|
||||
|
||||
Reference in New Issue
Block a user