Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62d146ff authored by Holger Dengler's avatar Holger Dengler Committed by Martin Schwidefsky
Browse files

[S390] ap bus: add support for irq statistics



Add support for AP Bus I/O interrupt statistics in /proc/interrupts.

Signed-off-by: default avatarHolger Dengler <hd@linux.vnet.ibm.com>
Signed-off-by: default avatarFelix Beck <felix.beck@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 85b81cdd
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ enum interruption_class {
	IOINT_LCS,
	IOINT_LCS,
	IOINT_CLW,
	IOINT_CLW,
	IOINT_CTC,
	IOINT_CTC,
	IOINT_APB,
	NMI_NMI,
	NMI_NMI,
	NR_IRQS,
	NR_IRQS,
};
};
+1 −0
Original line number Original line Diff line number Diff line
@@ -42,6 +42,7 @@ static const struct irq_class intrclass_names[] = {
	{.name = "LCS", .desc = "[I/O] LCS" },
	{.name = "LCS", .desc = "[I/O] LCS" },
	{.name = "CLW", .desc = "[I/O] CLAW" },
	{.name = "CLW", .desc = "[I/O] CLAW" },
	{.name = "CTC", .desc = "[I/O] CTC" },
	{.name = "CTC", .desc = "[I/O] CTC" },
	{.name = "APB", .desc = "[I/O] AP Bus" },
	{.name = "NMI", .desc = "[NMI] Machine Check" },
	{.name = "NMI", .desc = "[NMI] Machine Check" },
};
};


+2 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,7 @@
#define KMSG_COMPONENT "ap"
#define KMSG_COMPONENT "ap"
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt


#include <linux/kernel_stat.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/delay.h>
@@ -1042,6 +1043,7 @@ static int ap_probe_device_type(struct ap_device *ap_dev)


static void ap_interrupt_handler(void *unused1, void *unused2)
static void ap_interrupt_handler(void *unused1, void *unused2)
{
{
	kstat_cpu(smp_processor_id()).irqs[IOINT_APB]++;
	tasklet_schedule(&ap_tasklet);
	tasklet_schedule(&ap_tasklet);
}
}